blob: 64427beaa7c121bff866b7888bbd250853dcca6f [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 Yang0b81df22018-11-05 21:40:30 -080034// Stuff we are not going to use but if included,
35// will cause compile errors. These are Android Vulkan
36// required extensions, but the approach will be to
37// implement them completely on the guest side.
38#undef VK_KHR_android_surface
Lingfeng Yang0b81df22018-11-05 21:40:30 -080039
40
41namespace goldfish_vk {
42
43#ifdef VK_VERSION_1_0
44static VkResult entry_vkCreateInstance(
45 const VkInstanceCreateInfo* pCreateInfo,
46 const VkAllocationCallbacks* pAllocator,
47 VkInstance* pInstance)
48{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080049 AEMU_SCOPED_TRACE("vkCreateInstance");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080050 auto vkEnc = HostConnection::get()->vkEncoder();
51 VkResult vkCreateInstance_VkResult_return = (VkResult)0;
52 vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance);
53 return vkCreateInstance_VkResult_return;
54}
55static void entry_vkDestroyInstance(
56 VkInstance instance,
57 const VkAllocationCallbacks* pAllocator)
58{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080059 AEMU_SCOPED_TRACE("vkDestroyInstance");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080060 auto vkEnc = HostConnection::get()->vkEncoder();
61 vkEnc->vkDestroyInstance(instance, pAllocator);
62}
63static VkResult entry_vkEnumeratePhysicalDevices(
64 VkInstance instance,
65 uint32_t* pPhysicalDeviceCount,
66 VkPhysicalDevice* pPhysicalDevices)
67{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080068 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080069 auto vkEnc = HostConnection::get()->vkEncoder();
70 VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
Lingfeng Yangb64ca452019-02-14 22:04:28 -080071 auto resources = ResourceTracker::get();
72 vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices);
Lingfeng Yang0b81df22018-11-05 21:40:30 -080073 return vkEnumeratePhysicalDevices_VkResult_return;
74}
75static void entry_vkGetPhysicalDeviceFeatures(
76 VkPhysicalDevice physicalDevice,
77 VkPhysicalDeviceFeatures* pFeatures)
78{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080079 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080080 auto vkEnc = HostConnection::get()->vkEncoder();
81 vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures);
82}
83static void entry_vkGetPhysicalDeviceFormatProperties(
84 VkPhysicalDevice physicalDevice,
85 VkFormat format,
86 VkFormatProperties* pFormatProperties)
87{
Lingfeng Yang42ac1792019-02-22 20:13:44 -080088 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -080089 auto vkEnc = HostConnection::get()->vkEncoder();
90 vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
91}
92static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
93 VkPhysicalDevice physicalDevice,
94 VkFormat format,
95 VkImageType type,
96 VkImageTiling tiling,
97 VkImageUsageFlags usage,
98 VkImageCreateFlags flags,
99 VkImageFormatProperties* pImageFormatProperties)
100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800101 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800102 auto vkEnc = HostConnection::get()->vkEncoder();
103 VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
104 vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
105 return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
106}
107static void entry_vkGetPhysicalDeviceProperties(
108 VkPhysicalDevice physicalDevice,
109 VkPhysicalDeviceProperties* pProperties)
110{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800111 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800112 auto vkEnc = HostConnection::get()->vkEncoder();
113 vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties);
114}
115static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
116 VkPhysicalDevice physicalDevice,
117 uint32_t* pQueueFamilyPropertyCount,
118 VkQueueFamilyProperties* pQueueFamilyProperties)
119{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800120 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800121 auto vkEnc = HostConnection::get()->vkEncoder();
122 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
123}
124static void entry_vkGetPhysicalDeviceMemoryProperties(
125 VkPhysicalDevice physicalDevice,
126 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
127{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800128 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800129 auto vkEnc = HostConnection::get()->vkEncoder();
130 vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
131}
132static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
133 VkInstance instance,
134 const char* pName)
135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800136 AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800137 auto vkEnc = HostConnection::get()->vkEncoder();
138 PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
139 vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName);
140 return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
141}
142static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
143 VkDevice device,
144 const char* pName)
145{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800146 AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800147 auto vkEnc = HostConnection::get()->vkEncoder();
148 PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
149 vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName);
150 return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
151}
152static VkResult entry_vkCreateDevice(
153 VkPhysicalDevice physicalDevice,
154 const VkDeviceCreateInfo* pCreateInfo,
155 const VkAllocationCallbacks* pAllocator,
156 VkDevice* pDevice)
157{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800158 AEMU_SCOPED_TRACE("vkCreateDevice");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800159 auto vkEnc = HostConnection::get()->vkEncoder();
160 VkResult vkCreateDevice_VkResult_return = (VkResult)0;
161 vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
162 return vkCreateDevice_VkResult_return;
163}
164static void entry_vkDestroyDevice(
165 VkDevice device,
166 const VkAllocationCallbacks* pAllocator)
167{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800168 AEMU_SCOPED_TRACE("vkDestroyDevice");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800169 auto vkEnc = HostConnection::get()->vkEncoder();
170 vkEnc->vkDestroyDevice(device, pAllocator);
171}
172static VkResult entry_vkEnumerateInstanceExtensionProperties(
173 const char* pLayerName,
174 uint32_t* pPropertyCount,
175 VkExtensionProperties* pProperties)
176{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800177 AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800178 auto vkEnc = HostConnection::get()->vkEncoder();
179 VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800180 auto resources = ResourceTracker::get();
181 vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800182 return vkEnumerateInstanceExtensionProperties_VkResult_return;
183}
184static VkResult entry_vkEnumerateDeviceExtensionProperties(
185 VkPhysicalDevice physicalDevice,
186 const char* pLayerName,
187 uint32_t* pPropertyCount,
188 VkExtensionProperties* pProperties)
189{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800190 AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800191 auto vkEnc = HostConnection::get()->vkEncoder();
192 VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
Lingfeng Yang154a33c2019-01-29 19:06:23 -0800193 auto resources = ResourceTracker::get();
194 vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800195 return vkEnumerateDeviceExtensionProperties_VkResult_return;
196}
197static VkResult entry_vkEnumerateInstanceLayerProperties(
198 uint32_t* pPropertyCount,
199 VkLayerProperties* pProperties)
200{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800201 AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800202 auto vkEnc = HostConnection::get()->vkEncoder();
203 VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
204 vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties);
205 return vkEnumerateInstanceLayerProperties_VkResult_return;
206}
207static VkResult entry_vkEnumerateDeviceLayerProperties(
208 VkPhysicalDevice physicalDevice,
209 uint32_t* pPropertyCount,
210 VkLayerProperties* pProperties)
211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800212 AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800213 auto vkEnc = HostConnection::get()->vkEncoder();
214 VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
215 vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties);
216 return vkEnumerateDeviceLayerProperties_VkResult_return;
217}
218static void entry_vkGetDeviceQueue(
219 VkDevice device,
220 uint32_t queueFamilyIndex,
221 uint32_t queueIndex,
222 VkQueue* pQueue)
223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800224 AEMU_SCOPED_TRACE("vkGetDeviceQueue");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800225 auto vkEnc = HostConnection::get()->vkEncoder();
226 vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
227}
228static VkResult entry_vkQueueSubmit(
229 VkQueue queue,
230 uint32_t submitCount,
231 const VkSubmitInfo* pSubmits,
232 VkFence fence)
233{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800234 AEMU_SCOPED_TRACE("vkQueueSubmit");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800235 auto vkEnc = HostConnection::get()->vkEncoder();
236 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500237 auto resources = ResourceTracker::get();
238 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800239 return vkQueueSubmit_VkResult_return;
240}
241static VkResult entry_vkQueueWaitIdle(
242 VkQueue queue)
243{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800244 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800245 auto vkEnc = HostConnection::get()->vkEncoder();
246 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
247 vkQueueWaitIdle_VkResult_return = vkEnc->vkQueueWaitIdle(queue);
248 return vkQueueWaitIdle_VkResult_return;
249}
250static VkResult entry_vkDeviceWaitIdle(
251 VkDevice device)
252{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800253 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800254 auto vkEnc = HostConnection::get()->vkEncoder();
255 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
256 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device);
257 return vkDeviceWaitIdle_VkResult_return;
258}
259static VkResult entry_vkAllocateMemory(
260 VkDevice device,
261 const VkMemoryAllocateInfo* pAllocateInfo,
262 const VkAllocationCallbacks* pAllocator,
263 VkDeviceMemory* pMemory)
264{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800265 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800266 auto vkEnc = HostConnection::get()->vkEncoder();
267 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800268 auto resources = ResourceTracker::get();
269 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800270 return vkAllocateMemory_VkResult_return;
271}
272static void entry_vkFreeMemory(
273 VkDevice device,
274 VkDeviceMemory memory,
275 const VkAllocationCallbacks* pAllocator)
276{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800277 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800278 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800279 auto resources = ResourceTracker::get();
280 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800281}
282static VkResult entry_vkMapMemory(
283 VkDevice device,
284 VkDeviceMemory memory,
285 VkDeviceSize offset,
286 VkDeviceSize size,
287 VkMemoryMapFlags flags,
288 void** ppData)
289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800290 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800291 auto vkEnc = HostConnection::get()->vkEncoder();
292 VkResult vkMapMemory_VkResult_return = (VkResult)0;
293 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData);
294 return vkMapMemory_VkResult_return;
295}
296static void entry_vkUnmapMemory(
297 VkDevice device,
298 VkDeviceMemory memory)
299{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800300 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800301 auto vkEnc = HostConnection::get()->vkEncoder();
302 vkEnc->vkUnmapMemory(device, memory);
303}
304static VkResult entry_vkFlushMappedMemoryRanges(
305 VkDevice device,
306 uint32_t memoryRangeCount,
307 const VkMappedMemoryRange* pMemoryRanges)
308{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800309 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800310 auto vkEnc = HostConnection::get()->vkEncoder();
311 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
312 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
313 return vkFlushMappedMemoryRanges_VkResult_return;
314}
315static VkResult entry_vkInvalidateMappedMemoryRanges(
316 VkDevice device,
317 uint32_t memoryRangeCount,
318 const VkMappedMemoryRange* pMemoryRanges)
319{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800320 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800321 auto vkEnc = HostConnection::get()->vkEncoder();
322 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
323 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
324 return vkInvalidateMappedMemoryRanges_VkResult_return;
325}
326static void entry_vkGetDeviceMemoryCommitment(
327 VkDevice device,
328 VkDeviceMemory memory,
329 VkDeviceSize* pCommittedMemoryInBytes)
330{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800331 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800332 auto vkEnc = HostConnection::get()->vkEncoder();
333 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
334}
335static VkResult entry_vkBindBufferMemory(
336 VkDevice device,
337 VkBuffer buffer,
338 VkDeviceMemory memory,
339 VkDeviceSize memoryOffset)
340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800341 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800342 auto vkEnc = HostConnection::get()->vkEncoder();
343 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800344 auto resources = ResourceTracker::get();
345 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800346 return vkBindBufferMemory_VkResult_return;
347}
348static VkResult entry_vkBindImageMemory(
349 VkDevice device,
350 VkImage image,
351 VkDeviceMemory memory,
352 VkDeviceSize memoryOffset)
353{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800354 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800355 auto vkEnc = HostConnection::get()->vkEncoder();
356 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800357 auto resources = ResourceTracker::get();
358 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800359 return vkBindImageMemory_VkResult_return;
360}
361static void entry_vkGetBufferMemoryRequirements(
362 VkDevice device,
363 VkBuffer buffer,
364 VkMemoryRequirements* pMemoryRequirements)
365{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800366 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800367 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800368 auto resources = ResourceTracker::get();
369 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800370}
371static void entry_vkGetImageMemoryRequirements(
372 VkDevice device,
373 VkImage image,
374 VkMemoryRequirements* pMemoryRequirements)
375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800376 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800377 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800378 auto resources = ResourceTracker::get();
379 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800380}
381static void entry_vkGetImageSparseMemoryRequirements(
382 VkDevice device,
383 VkImage image,
384 uint32_t* pSparseMemoryRequirementCount,
385 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800387 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800388 auto vkEnc = HostConnection::get()->vkEncoder();
389 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
390}
391static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
392 VkPhysicalDevice physicalDevice,
393 VkFormat format,
394 VkImageType type,
395 VkSampleCountFlagBits samples,
396 VkImageUsageFlags usage,
397 VkImageTiling tiling,
398 uint32_t* pPropertyCount,
399 VkSparseImageFormatProperties* pProperties)
400{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800401 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800402 auto vkEnc = HostConnection::get()->vkEncoder();
403 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
404}
405static VkResult entry_vkQueueBindSparse(
406 VkQueue queue,
407 uint32_t bindInfoCount,
408 const VkBindSparseInfo* pBindInfo,
409 VkFence fence)
410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800411 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800412 auto vkEnc = HostConnection::get()->vkEncoder();
413 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
414 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
415 return vkQueueBindSparse_VkResult_return;
416}
417static VkResult entry_vkCreateFence(
418 VkDevice device,
419 const VkFenceCreateInfo* pCreateInfo,
420 const VkAllocationCallbacks* pAllocator,
421 VkFence* pFence)
422{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800423 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800424 auto vkEnc = HostConnection::get()->vkEncoder();
425 VkResult vkCreateFence_VkResult_return = (VkResult)0;
426 vkCreateFence_VkResult_return = vkEnc->vkCreateFence(device, pCreateInfo, pAllocator, pFence);
427 return vkCreateFence_VkResult_return;
428}
429static void entry_vkDestroyFence(
430 VkDevice device,
431 VkFence fence,
432 const VkAllocationCallbacks* pAllocator)
433{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800434 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800435 auto vkEnc = HostConnection::get()->vkEncoder();
436 vkEnc->vkDestroyFence(device, fence, pAllocator);
437}
438static VkResult entry_vkResetFences(
439 VkDevice device,
440 uint32_t fenceCount,
441 const VkFence* pFences)
442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800443 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800444 auto vkEnc = HostConnection::get()->vkEncoder();
445 VkResult vkResetFences_VkResult_return = (VkResult)0;
446 vkResetFences_VkResult_return = vkEnc->vkResetFences(device, fenceCount, pFences);
447 return vkResetFences_VkResult_return;
448}
449static VkResult entry_vkGetFenceStatus(
450 VkDevice device,
451 VkFence fence)
452{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800453 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800454 auto vkEnc = HostConnection::get()->vkEncoder();
455 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
456 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence);
457 return vkGetFenceStatus_VkResult_return;
458}
459static VkResult entry_vkWaitForFences(
460 VkDevice device,
461 uint32_t fenceCount,
462 const VkFence* pFences,
463 VkBool32 waitAll,
464 uint64_t timeout)
465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800466 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 auto vkEnc = HostConnection::get()->vkEncoder();
468 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
469 vkWaitForFences_VkResult_return = vkEnc->vkWaitForFences(device, fenceCount, pFences, waitAll, timeout);
470 return vkWaitForFences_VkResult_return;
471}
472static VkResult entry_vkCreateSemaphore(
473 VkDevice device,
474 const VkSemaphoreCreateInfo* pCreateInfo,
475 const VkAllocationCallbacks* pAllocator,
476 VkSemaphore* pSemaphore)
477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800478 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800479 auto vkEnc = HostConnection::get()->vkEncoder();
480 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500481 auto resources = ResourceTracker::get();
482 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800483 return vkCreateSemaphore_VkResult_return;
484}
485static void entry_vkDestroySemaphore(
486 VkDevice device,
487 VkSemaphore semaphore,
488 const VkAllocationCallbacks* pAllocator)
489{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800490 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800491 auto vkEnc = HostConnection::get()->vkEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500492 auto resources = ResourceTracker::get();
493 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800494}
495static VkResult entry_vkCreateEvent(
496 VkDevice device,
497 const VkEventCreateInfo* pCreateInfo,
498 const VkAllocationCallbacks* pAllocator,
499 VkEvent* pEvent)
500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800501 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800502 auto vkEnc = HostConnection::get()->vkEncoder();
503 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
504 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent);
505 return vkCreateEvent_VkResult_return;
506}
507static void entry_vkDestroyEvent(
508 VkDevice device,
509 VkEvent event,
510 const VkAllocationCallbacks* pAllocator)
511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800512 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800513 auto vkEnc = HostConnection::get()->vkEncoder();
514 vkEnc->vkDestroyEvent(device, event, pAllocator);
515}
516static VkResult entry_vkGetEventStatus(
517 VkDevice device,
518 VkEvent event)
519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800520 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800521 auto vkEnc = HostConnection::get()->vkEncoder();
522 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
523 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event);
524 return vkGetEventStatus_VkResult_return;
525}
526static VkResult entry_vkSetEvent(
527 VkDevice device,
528 VkEvent event)
529{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800530 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800531 auto vkEnc = HostConnection::get()->vkEncoder();
532 VkResult vkSetEvent_VkResult_return = (VkResult)0;
533 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event);
534 return vkSetEvent_VkResult_return;
535}
536static VkResult entry_vkResetEvent(
537 VkDevice device,
538 VkEvent event)
539{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800540 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800541 auto vkEnc = HostConnection::get()->vkEncoder();
542 VkResult vkResetEvent_VkResult_return = (VkResult)0;
543 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event);
544 return vkResetEvent_VkResult_return;
545}
546static VkResult entry_vkCreateQueryPool(
547 VkDevice device,
548 const VkQueryPoolCreateInfo* pCreateInfo,
549 const VkAllocationCallbacks* pAllocator,
550 VkQueryPool* pQueryPool)
551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800552 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800553 auto vkEnc = HostConnection::get()->vkEncoder();
554 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
555 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
556 return vkCreateQueryPool_VkResult_return;
557}
558static void entry_vkDestroyQueryPool(
559 VkDevice device,
560 VkQueryPool queryPool,
561 const VkAllocationCallbacks* pAllocator)
562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800563 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800564 auto vkEnc = HostConnection::get()->vkEncoder();
565 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator);
566}
567static VkResult entry_vkGetQueryPoolResults(
568 VkDevice device,
569 VkQueryPool queryPool,
570 uint32_t firstQuery,
571 uint32_t queryCount,
572 size_t dataSize,
573 void* pData,
574 VkDeviceSize stride,
575 VkQueryResultFlags flags)
576{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800577 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800578 auto vkEnc = HostConnection::get()->vkEncoder();
579 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
580 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
581 return vkGetQueryPoolResults_VkResult_return;
582}
583static VkResult entry_vkCreateBuffer(
584 VkDevice device,
585 const VkBufferCreateInfo* pCreateInfo,
586 const VkAllocationCallbacks* pAllocator,
587 VkBuffer* pBuffer)
588{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800589 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800590 auto vkEnc = HostConnection::get()->vkEncoder();
591 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800592 auto resources = ResourceTracker::get();
593 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800594 return vkCreateBuffer_VkResult_return;
595}
596static void entry_vkDestroyBuffer(
597 VkDevice device,
598 VkBuffer buffer,
599 const VkAllocationCallbacks* pAllocator)
600{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800601 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800602 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800603 auto resources = ResourceTracker::get();
604 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800605}
606static VkResult entry_vkCreateBufferView(
607 VkDevice device,
608 const VkBufferViewCreateInfo* pCreateInfo,
609 const VkAllocationCallbacks* pAllocator,
610 VkBufferView* pView)
611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800612 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800613 auto vkEnc = HostConnection::get()->vkEncoder();
614 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
615 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView);
616 return vkCreateBufferView_VkResult_return;
617}
618static void entry_vkDestroyBufferView(
619 VkDevice device,
620 VkBufferView bufferView,
621 const VkAllocationCallbacks* pAllocator)
622{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800623 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800624 auto vkEnc = HostConnection::get()->vkEncoder();
625 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator);
626}
627static VkResult entry_vkCreateImage(
628 VkDevice device,
629 const VkImageCreateInfo* pCreateInfo,
630 const VkAllocationCallbacks* pAllocator,
631 VkImage* pImage)
632{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800633 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800634 auto vkEnc = HostConnection::get()->vkEncoder();
635 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800636 auto resources = ResourceTracker::get();
637 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800638 return vkCreateImage_VkResult_return;
639}
640static void entry_vkDestroyImage(
641 VkDevice device,
642 VkImage image,
643 const VkAllocationCallbacks* pAllocator)
644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800645 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800646 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800647 auto resources = ResourceTracker::get();
648 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800649}
650static void entry_vkGetImageSubresourceLayout(
651 VkDevice device,
652 VkImage image,
653 const VkImageSubresource* pSubresource,
654 VkSubresourceLayout* pLayout)
655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800656 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800657 auto vkEnc = HostConnection::get()->vkEncoder();
658 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout);
659}
660static VkResult entry_vkCreateImageView(
661 VkDevice device,
662 const VkImageViewCreateInfo* pCreateInfo,
663 const VkAllocationCallbacks* pAllocator,
664 VkImageView* pView)
665{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800666 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800667 auto vkEnc = HostConnection::get()->vkEncoder();
668 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700669 auto resources = ResourceTracker::get();
670 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800671 return vkCreateImageView_VkResult_return;
672}
673static void entry_vkDestroyImageView(
674 VkDevice device,
675 VkImageView imageView,
676 const VkAllocationCallbacks* pAllocator)
677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800678 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800679 auto vkEnc = HostConnection::get()->vkEncoder();
680 vkEnc->vkDestroyImageView(device, imageView, pAllocator);
681}
682static VkResult entry_vkCreateShaderModule(
683 VkDevice device,
684 const VkShaderModuleCreateInfo* pCreateInfo,
685 const VkAllocationCallbacks* pAllocator,
686 VkShaderModule* pShaderModule)
687{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800688 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800689 auto vkEnc = HostConnection::get()->vkEncoder();
690 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
691 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
692 return vkCreateShaderModule_VkResult_return;
693}
694static void entry_vkDestroyShaderModule(
695 VkDevice device,
696 VkShaderModule shaderModule,
697 const VkAllocationCallbacks* pAllocator)
698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800699 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800700 auto vkEnc = HostConnection::get()->vkEncoder();
701 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator);
702}
703static VkResult entry_vkCreatePipelineCache(
704 VkDevice device,
705 const VkPipelineCacheCreateInfo* pCreateInfo,
706 const VkAllocationCallbacks* pAllocator,
707 VkPipelineCache* pPipelineCache)
708{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800709 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800710 auto vkEnc = HostConnection::get()->vkEncoder();
711 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
712 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
713 return vkCreatePipelineCache_VkResult_return;
714}
715static void entry_vkDestroyPipelineCache(
716 VkDevice device,
717 VkPipelineCache pipelineCache,
718 const VkAllocationCallbacks* pAllocator)
719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800720 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800721 auto vkEnc = HostConnection::get()->vkEncoder();
722 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator);
723}
724static VkResult entry_vkGetPipelineCacheData(
725 VkDevice device,
726 VkPipelineCache pipelineCache,
727 size_t* pDataSize,
728 void* pData)
729{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800730 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800731 auto vkEnc = HostConnection::get()->vkEncoder();
732 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
733 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData);
734 return vkGetPipelineCacheData_VkResult_return;
735}
736static VkResult entry_vkMergePipelineCaches(
737 VkDevice device,
738 VkPipelineCache dstCache,
739 uint32_t srcCacheCount,
740 const VkPipelineCache* pSrcCaches)
741{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800742 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800743 auto vkEnc = HostConnection::get()->vkEncoder();
744 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
745 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
746 return vkMergePipelineCaches_VkResult_return;
747}
748static VkResult entry_vkCreateGraphicsPipelines(
749 VkDevice device,
750 VkPipelineCache pipelineCache,
751 uint32_t createInfoCount,
752 const VkGraphicsPipelineCreateInfo* pCreateInfos,
753 const VkAllocationCallbacks* pAllocator,
754 VkPipeline* pPipelines)
755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800756 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 auto vkEnc = HostConnection::get()->vkEncoder();
758 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
759 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
760 return vkCreateGraphicsPipelines_VkResult_return;
761}
762static VkResult entry_vkCreateComputePipelines(
763 VkDevice device,
764 VkPipelineCache pipelineCache,
765 uint32_t createInfoCount,
766 const VkComputePipelineCreateInfo* pCreateInfos,
767 const VkAllocationCallbacks* pAllocator,
768 VkPipeline* pPipelines)
769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800770 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 auto vkEnc = HostConnection::get()->vkEncoder();
772 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
773 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
774 return vkCreateComputePipelines_VkResult_return;
775}
776static void entry_vkDestroyPipeline(
777 VkDevice device,
778 VkPipeline pipeline,
779 const VkAllocationCallbacks* pAllocator)
780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800781 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800782 auto vkEnc = HostConnection::get()->vkEncoder();
783 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator);
784}
785static VkResult entry_vkCreatePipelineLayout(
786 VkDevice device,
787 const VkPipelineLayoutCreateInfo* pCreateInfo,
788 const VkAllocationCallbacks* pAllocator,
789 VkPipelineLayout* pPipelineLayout)
790{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800791 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800792 auto vkEnc = HostConnection::get()->vkEncoder();
793 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
794 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
795 return vkCreatePipelineLayout_VkResult_return;
796}
797static void entry_vkDestroyPipelineLayout(
798 VkDevice device,
799 VkPipelineLayout pipelineLayout,
800 const VkAllocationCallbacks* pAllocator)
801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800802 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800803 auto vkEnc = HostConnection::get()->vkEncoder();
804 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator);
805}
806static VkResult entry_vkCreateSampler(
807 VkDevice device,
808 const VkSamplerCreateInfo* pCreateInfo,
809 const VkAllocationCallbacks* pAllocator,
810 VkSampler* pSampler)
811{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800812 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800813 auto vkEnc = HostConnection::get()->vkEncoder();
814 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
815 vkCreateSampler_VkResult_return = vkEnc->vkCreateSampler(device, pCreateInfo, pAllocator, pSampler);
816 return vkCreateSampler_VkResult_return;
817}
818static void entry_vkDestroySampler(
819 VkDevice device,
820 VkSampler sampler,
821 const VkAllocationCallbacks* pAllocator)
822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800823 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800824 auto vkEnc = HostConnection::get()->vkEncoder();
825 vkEnc->vkDestroySampler(device, sampler, pAllocator);
826}
827static VkResult entry_vkCreateDescriptorSetLayout(
828 VkDevice device,
829 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
830 const VkAllocationCallbacks* pAllocator,
831 VkDescriptorSetLayout* pSetLayout)
832{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800833 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800834 auto vkEnc = HostConnection::get()->vkEncoder();
835 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
836 vkCreateDescriptorSetLayout_VkResult_return = vkEnc->vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
837 return vkCreateDescriptorSetLayout_VkResult_return;
838}
839static void entry_vkDestroyDescriptorSetLayout(
840 VkDevice device,
841 VkDescriptorSetLayout descriptorSetLayout,
842 const VkAllocationCallbacks* pAllocator)
843{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800844 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800845 auto vkEnc = HostConnection::get()->vkEncoder();
846 vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
847}
848static VkResult entry_vkCreateDescriptorPool(
849 VkDevice device,
850 const VkDescriptorPoolCreateInfo* pCreateInfo,
851 const VkAllocationCallbacks* pAllocator,
852 VkDescriptorPool* pDescriptorPool)
853{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800854 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800855 auto vkEnc = HostConnection::get()->vkEncoder();
856 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
857 vkCreateDescriptorPool_VkResult_return = vkEnc->vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
858 return vkCreateDescriptorPool_VkResult_return;
859}
860static void entry_vkDestroyDescriptorPool(
861 VkDevice device,
862 VkDescriptorPool descriptorPool,
863 const VkAllocationCallbacks* pAllocator)
864{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800865 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800866 auto vkEnc = HostConnection::get()->vkEncoder();
867 vkEnc->vkDestroyDescriptorPool(device, descriptorPool, pAllocator);
868}
869static VkResult entry_vkResetDescriptorPool(
870 VkDevice device,
871 VkDescriptorPool descriptorPool,
872 VkDescriptorPoolResetFlags flags)
873{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800874 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800875 auto vkEnc = HostConnection::get()->vkEncoder();
876 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
877 vkResetDescriptorPool_VkResult_return = vkEnc->vkResetDescriptorPool(device, descriptorPool, flags);
878 return vkResetDescriptorPool_VkResult_return;
879}
880static VkResult entry_vkAllocateDescriptorSets(
881 VkDevice device,
882 const VkDescriptorSetAllocateInfo* pAllocateInfo,
883 VkDescriptorSet* pDescriptorSets)
884{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800885 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800886 auto vkEnc = HostConnection::get()->vkEncoder();
887 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
888 vkAllocateDescriptorSets_VkResult_return = vkEnc->vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
889 return vkAllocateDescriptorSets_VkResult_return;
890}
891static VkResult entry_vkFreeDescriptorSets(
892 VkDevice device,
893 VkDescriptorPool descriptorPool,
894 uint32_t descriptorSetCount,
895 const VkDescriptorSet* pDescriptorSets)
896{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800897 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800898 auto vkEnc = HostConnection::get()->vkEncoder();
899 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
900 vkFreeDescriptorSets_VkResult_return = vkEnc->vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
901 return vkFreeDescriptorSets_VkResult_return;
902}
903static void entry_vkUpdateDescriptorSets(
904 VkDevice device,
905 uint32_t descriptorWriteCount,
906 const VkWriteDescriptorSet* pDescriptorWrites,
907 uint32_t descriptorCopyCount,
908 const VkCopyDescriptorSet* pDescriptorCopies)
909{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800910 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800911 auto vkEnc = HostConnection::get()->vkEncoder();
912 vkEnc->vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
913}
914static VkResult entry_vkCreateFramebuffer(
915 VkDevice device,
916 const VkFramebufferCreateInfo* pCreateInfo,
917 const VkAllocationCallbacks* pAllocator,
918 VkFramebuffer* pFramebuffer)
919{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800920 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800921 auto vkEnc = HostConnection::get()->vkEncoder();
922 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
923 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
924 return vkCreateFramebuffer_VkResult_return;
925}
926static void entry_vkDestroyFramebuffer(
927 VkDevice device,
928 VkFramebuffer framebuffer,
929 const VkAllocationCallbacks* pAllocator)
930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800931 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800932 auto vkEnc = HostConnection::get()->vkEncoder();
933 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator);
934}
935static VkResult entry_vkCreateRenderPass(
936 VkDevice device,
937 const VkRenderPassCreateInfo* pCreateInfo,
938 const VkAllocationCallbacks* pAllocator,
939 VkRenderPass* pRenderPass)
940{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800941 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800942 auto vkEnc = HostConnection::get()->vkEncoder();
943 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
944 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
945 return vkCreateRenderPass_VkResult_return;
946}
947static void entry_vkDestroyRenderPass(
948 VkDevice device,
949 VkRenderPass renderPass,
950 const VkAllocationCallbacks* pAllocator)
951{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800952 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800953 auto vkEnc = HostConnection::get()->vkEncoder();
954 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator);
955}
956static void entry_vkGetRenderAreaGranularity(
957 VkDevice device,
958 VkRenderPass renderPass,
959 VkExtent2D* pGranularity)
960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800961 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800962 auto vkEnc = HostConnection::get()->vkEncoder();
963 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity);
964}
965static VkResult entry_vkCreateCommandPool(
966 VkDevice device,
967 const VkCommandPoolCreateInfo* pCreateInfo,
968 const VkAllocationCallbacks* pAllocator,
969 VkCommandPool* pCommandPool)
970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800971 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800972 auto vkEnc = HostConnection::get()->vkEncoder();
973 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
974 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
975 return vkCreateCommandPool_VkResult_return;
976}
977static void entry_vkDestroyCommandPool(
978 VkDevice device,
979 VkCommandPool commandPool,
980 const VkAllocationCallbacks* pAllocator)
981{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800982 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800983 auto vkEnc = HostConnection::get()->vkEncoder();
984 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator);
985}
986static VkResult entry_vkResetCommandPool(
987 VkDevice device,
988 VkCommandPool commandPool,
989 VkCommandPoolResetFlags flags)
990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800991 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800992 auto vkEnc = HostConnection::get()->vkEncoder();
993 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
994 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags);
995 return vkResetCommandPool_VkResult_return;
996}
997static VkResult entry_vkAllocateCommandBuffers(
998 VkDevice device,
999 const VkCommandBufferAllocateInfo* pAllocateInfo,
1000 VkCommandBuffer* pCommandBuffers)
1001{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001002 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001003 auto vkEnc = HostConnection::get()->vkEncoder();
1004 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1005 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
1006 return vkAllocateCommandBuffers_VkResult_return;
1007}
1008static void entry_vkFreeCommandBuffers(
1009 VkDevice device,
1010 VkCommandPool commandPool,
1011 uint32_t commandBufferCount,
1012 const VkCommandBuffer* pCommandBuffers)
1013{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001014 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001015 auto vkEnc = HostConnection::get()->vkEncoder();
1016 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
1017}
1018static VkResult entry_vkBeginCommandBuffer(
1019 VkCommandBuffer commandBuffer,
1020 const VkCommandBufferBeginInfo* pBeginInfo)
1021{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001022 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001023 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001024 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001025 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001026 auto resources = ResourceTracker::get();
1027 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001028 return vkBeginCommandBuffer_VkResult_return;
1029}
1030static VkResult entry_vkEndCommandBuffer(
1031 VkCommandBuffer commandBuffer)
1032{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001033 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001034 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001035 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001036 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001037 auto resources = ResourceTracker::get();
1038 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001039 return vkEndCommandBuffer_VkResult_return;
1040}
1041static VkResult entry_vkResetCommandBuffer(
1042 VkCommandBuffer commandBuffer,
1043 VkCommandBufferResetFlags flags)
1044{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001045 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001046 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001047 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001048 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001049 auto resources = ResourceTracker::get();
1050 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001051 return vkResetCommandBuffer_VkResult_return;
1052}
1053static void entry_vkCmdBindPipeline(
1054 VkCommandBuffer commandBuffer,
1055 VkPipelineBindPoint pipelineBindPoint,
1056 VkPipeline pipeline)
1057{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001058 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001059 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001060 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001061 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
1062}
1063static void entry_vkCmdSetViewport(
1064 VkCommandBuffer commandBuffer,
1065 uint32_t firstViewport,
1066 uint32_t viewportCount,
1067 const VkViewport* pViewports)
1068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001069 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001070 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001071 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001072 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
1073}
1074static void entry_vkCmdSetScissor(
1075 VkCommandBuffer commandBuffer,
1076 uint32_t firstScissor,
1077 uint32_t scissorCount,
1078 const VkRect2D* pScissors)
1079{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001080 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001081 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001082 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001083 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
1084}
1085static void entry_vkCmdSetLineWidth(
1086 VkCommandBuffer commandBuffer,
1087 float lineWidth)
1088{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001089 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001090 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001091 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001092 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth);
1093}
1094static void entry_vkCmdSetDepthBias(
1095 VkCommandBuffer commandBuffer,
1096 float depthBiasConstantFactor,
1097 float depthBiasClamp,
1098 float depthBiasSlopeFactor)
1099{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001100 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001101 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001102 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001103 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1104}
1105static void entry_vkCmdSetBlendConstants(
1106 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001107 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001108{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001109 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001110 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001111 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001112 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants);
1113}
1114static void entry_vkCmdSetDepthBounds(
1115 VkCommandBuffer commandBuffer,
1116 float minDepthBounds,
1117 float maxDepthBounds)
1118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001119 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
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->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1123}
1124static void entry_vkCmdSetStencilCompareMask(
1125 VkCommandBuffer commandBuffer,
1126 VkStencilFaceFlags faceMask,
1127 uint32_t compareMask)
1128{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001129 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001130 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001131 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001132 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1133}
1134static void entry_vkCmdSetStencilWriteMask(
1135 VkCommandBuffer commandBuffer,
1136 VkStencilFaceFlags faceMask,
1137 uint32_t writeMask)
1138{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001139 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001140 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001141 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001142 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1143}
1144static void entry_vkCmdSetStencilReference(
1145 VkCommandBuffer commandBuffer,
1146 VkStencilFaceFlags faceMask,
1147 uint32_t reference)
1148{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001149 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001150 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001151 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001152 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference);
1153}
1154static void entry_vkCmdBindDescriptorSets(
1155 VkCommandBuffer commandBuffer,
1156 VkPipelineBindPoint pipelineBindPoint,
1157 VkPipelineLayout layout,
1158 uint32_t firstSet,
1159 uint32_t descriptorSetCount,
1160 const VkDescriptorSet* pDescriptorSets,
1161 uint32_t dynamicOffsetCount,
1162 const uint32_t* pDynamicOffsets)
1163{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001164 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001165 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001166 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001167 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1168}
1169static void entry_vkCmdBindIndexBuffer(
1170 VkCommandBuffer commandBuffer,
1171 VkBuffer buffer,
1172 VkDeviceSize offset,
1173 VkIndexType indexType)
1174{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001175 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001176 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001177 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001178 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1179}
1180static void entry_vkCmdBindVertexBuffers(
1181 VkCommandBuffer commandBuffer,
1182 uint32_t firstBinding,
1183 uint32_t bindingCount,
1184 const VkBuffer* pBuffers,
1185 const VkDeviceSize* pOffsets)
1186{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001187 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001188 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001189 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001190 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1191}
1192static void entry_vkCmdDraw(
1193 VkCommandBuffer commandBuffer,
1194 uint32_t vertexCount,
1195 uint32_t instanceCount,
1196 uint32_t firstVertex,
1197 uint32_t firstInstance)
1198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001199 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001200 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001201 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001202 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1203}
1204static void entry_vkCmdDrawIndexed(
1205 VkCommandBuffer commandBuffer,
1206 uint32_t indexCount,
1207 uint32_t instanceCount,
1208 uint32_t firstIndex,
1209 int32_t vertexOffset,
1210 uint32_t firstInstance)
1211{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001212 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001213 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001214 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001215 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1216}
1217static void entry_vkCmdDrawIndirect(
1218 VkCommandBuffer commandBuffer,
1219 VkBuffer buffer,
1220 VkDeviceSize offset,
1221 uint32_t drawCount,
1222 uint32_t stride)
1223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001224 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001225 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001226 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001227 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1228}
1229static void entry_vkCmdDrawIndexedIndirect(
1230 VkCommandBuffer commandBuffer,
1231 VkBuffer buffer,
1232 VkDeviceSize offset,
1233 uint32_t drawCount,
1234 uint32_t stride)
1235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001236 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001237 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001238 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001239 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1240}
1241static void entry_vkCmdDispatch(
1242 VkCommandBuffer commandBuffer,
1243 uint32_t groupCountX,
1244 uint32_t groupCountY,
1245 uint32_t groupCountZ)
1246{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001247 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001248 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001249 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001250 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
1251}
1252static void entry_vkCmdDispatchIndirect(
1253 VkCommandBuffer commandBuffer,
1254 VkBuffer buffer,
1255 VkDeviceSize offset)
1256{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001257 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001258 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001259 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001260 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset);
1261}
1262static void entry_vkCmdCopyBuffer(
1263 VkCommandBuffer commandBuffer,
1264 VkBuffer srcBuffer,
1265 VkBuffer dstBuffer,
1266 uint32_t regionCount,
1267 const VkBufferCopy* pRegions)
1268{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001269 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001270 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001271 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001272 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1273}
1274static void entry_vkCmdCopyImage(
1275 VkCommandBuffer commandBuffer,
1276 VkImage srcImage,
1277 VkImageLayout srcImageLayout,
1278 VkImage dstImage,
1279 VkImageLayout dstImageLayout,
1280 uint32_t regionCount,
1281 const VkImageCopy* pRegions)
1282{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001283 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001284 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001285 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001286 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1287}
1288static void entry_vkCmdBlitImage(
1289 VkCommandBuffer commandBuffer,
1290 VkImage srcImage,
1291 VkImageLayout srcImageLayout,
1292 VkImage dstImage,
1293 VkImageLayout dstImageLayout,
1294 uint32_t regionCount,
1295 const VkImageBlit* pRegions,
1296 VkFilter filter)
1297{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001298 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001299 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001300 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001301 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1302}
1303static void entry_vkCmdCopyBufferToImage(
1304 VkCommandBuffer commandBuffer,
1305 VkBuffer srcBuffer,
1306 VkImage dstImage,
1307 VkImageLayout dstImageLayout,
1308 uint32_t regionCount,
1309 const VkBufferImageCopy* pRegions)
1310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001311 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001312 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001313 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001314 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1315}
1316static void entry_vkCmdCopyImageToBuffer(
1317 VkCommandBuffer commandBuffer,
1318 VkImage srcImage,
1319 VkImageLayout srcImageLayout,
1320 VkBuffer dstBuffer,
1321 uint32_t regionCount,
1322 const VkBufferImageCopy* pRegions)
1323{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001324 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001325 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001326 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001327 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1328}
1329static void entry_vkCmdUpdateBuffer(
1330 VkCommandBuffer commandBuffer,
1331 VkBuffer dstBuffer,
1332 VkDeviceSize dstOffset,
1333 VkDeviceSize dataSize,
1334 const void* pData)
1335{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001336 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001337 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001338 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001339 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1340}
1341static void entry_vkCmdFillBuffer(
1342 VkCommandBuffer commandBuffer,
1343 VkBuffer dstBuffer,
1344 VkDeviceSize dstOffset,
1345 VkDeviceSize size,
1346 uint32_t data)
1347{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001348 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001349 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001350 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001351 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1352}
1353static void entry_vkCmdClearColorImage(
1354 VkCommandBuffer commandBuffer,
1355 VkImage image,
1356 VkImageLayout imageLayout,
1357 const VkClearColorValue* pColor,
1358 uint32_t rangeCount,
1359 const VkImageSubresourceRange* pRanges)
1360{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001361 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001362 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001363 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001364 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1365}
1366static void entry_vkCmdClearDepthStencilImage(
1367 VkCommandBuffer commandBuffer,
1368 VkImage image,
1369 VkImageLayout imageLayout,
1370 const VkClearDepthStencilValue* pDepthStencil,
1371 uint32_t rangeCount,
1372 const VkImageSubresourceRange* pRanges)
1373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001374 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001375 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001376 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001377 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1378}
1379static void entry_vkCmdClearAttachments(
1380 VkCommandBuffer commandBuffer,
1381 uint32_t attachmentCount,
1382 const VkClearAttachment* pAttachments,
1383 uint32_t rectCount,
1384 const VkClearRect* pRects)
1385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001386 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001387 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001388 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001389 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1390}
1391static void entry_vkCmdResolveImage(
1392 VkCommandBuffer commandBuffer,
1393 VkImage srcImage,
1394 VkImageLayout srcImageLayout,
1395 VkImage dstImage,
1396 VkImageLayout dstImageLayout,
1397 uint32_t regionCount,
1398 const VkImageResolve* pRegions)
1399{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001400 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001401 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001402 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001403 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1404}
1405static void entry_vkCmdSetEvent(
1406 VkCommandBuffer commandBuffer,
1407 VkEvent event,
1408 VkPipelineStageFlags stageMask)
1409{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001410 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001411 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001412 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001413 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask);
1414}
1415static void entry_vkCmdResetEvent(
1416 VkCommandBuffer commandBuffer,
1417 VkEvent event,
1418 VkPipelineStageFlags stageMask)
1419{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001420 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001421 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001422 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001423 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask);
1424}
1425static void entry_vkCmdWaitEvents(
1426 VkCommandBuffer commandBuffer,
1427 uint32_t eventCount,
1428 const VkEvent* pEvents,
1429 VkPipelineStageFlags srcStageMask,
1430 VkPipelineStageFlags dstStageMask,
1431 uint32_t memoryBarrierCount,
1432 const VkMemoryBarrier* pMemoryBarriers,
1433 uint32_t bufferMemoryBarrierCount,
1434 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1435 uint32_t imageMemoryBarrierCount,
1436 const VkImageMemoryBarrier* pImageMemoryBarriers)
1437{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001438 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001439 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001440 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001441 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1442}
1443static void entry_vkCmdPipelineBarrier(
1444 VkCommandBuffer commandBuffer,
1445 VkPipelineStageFlags srcStageMask,
1446 VkPipelineStageFlags dstStageMask,
1447 VkDependencyFlags dependencyFlags,
1448 uint32_t memoryBarrierCount,
1449 const VkMemoryBarrier* pMemoryBarriers,
1450 uint32_t bufferMemoryBarrierCount,
1451 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1452 uint32_t imageMemoryBarrierCount,
1453 const VkImageMemoryBarrier* pImageMemoryBarriers)
1454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001455 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001456 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001457 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001458 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1459}
1460static void entry_vkCmdBeginQuery(
1461 VkCommandBuffer commandBuffer,
1462 VkQueryPool queryPool,
1463 uint32_t query,
1464 VkQueryControlFlags flags)
1465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001466 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001467 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001468 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001469 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags);
1470}
1471static void entry_vkCmdEndQuery(
1472 VkCommandBuffer commandBuffer,
1473 VkQueryPool queryPool,
1474 uint32_t query)
1475{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001476 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001477 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001478 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001479 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query);
1480}
1481static void entry_vkCmdResetQueryPool(
1482 VkCommandBuffer commandBuffer,
1483 VkQueryPool queryPool,
1484 uint32_t firstQuery,
1485 uint32_t queryCount)
1486{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001487 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001488 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001489 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001490 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1491}
1492static void entry_vkCmdWriteTimestamp(
1493 VkCommandBuffer commandBuffer,
1494 VkPipelineStageFlagBits pipelineStage,
1495 VkQueryPool queryPool,
1496 uint32_t query)
1497{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001498 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001499 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001500 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001501 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1502}
1503static void entry_vkCmdCopyQueryPoolResults(
1504 VkCommandBuffer commandBuffer,
1505 VkQueryPool queryPool,
1506 uint32_t firstQuery,
1507 uint32_t queryCount,
1508 VkBuffer dstBuffer,
1509 VkDeviceSize dstOffset,
1510 VkDeviceSize stride,
1511 VkQueryResultFlags flags)
1512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001513 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001514 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001515 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001516 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1517}
1518static void entry_vkCmdPushConstants(
1519 VkCommandBuffer commandBuffer,
1520 VkPipelineLayout layout,
1521 VkShaderStageFlags stageFlags,
1522 uint32_t offset,
1523 uint32_t size,
1524 const void* pValues)
1525{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001526 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001527 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001528 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001529 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1530}
1531static void entry_vkCmdBeginRenderPass(
1532 VkCommandBuffer commandBuffer,
1533 const VkRenderPassBeginInfo* pRenderPassBegin,
1534 VkSubpassContents contents)
1535{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001536 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001537 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001538 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001539 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1540}
1541static void entry_vkCmdNextSubpass(
1542 VkCommandBuffer commandBuffer,
1543 VkSubpassContents contents)
1544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001545 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
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->vkCmdNextSubpass(commandBuffer, contents);
1549}
1550static void entry_vkCmdEndRenderPass(
1551 VkCommandBuffer commandBuffer)
1552{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001553 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001554 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001555 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001556 vkEnc->vkCmdEndRenderPass(commandBuffer);
1557}
1558static void entry_vkCmdExecuteCommands(
1559 VkCommandBuffer commandBuffer,
1560 uint32_t commandBufferCount,
1561 const VkCommandBuffer* pCommandBuffers)
1562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001563 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001564 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001565 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001566 vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1567}
1568#endif
1569#ifdef VK_VERSION_1_1
1570static VkResult entry_vkEnumerateInstanceVersion(
1571 uint32_t* pApiVersion)
1572{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001573 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001574 auto vkEnc = HostConnection::get()->vkEncoder();
1575 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1576 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion);
1577 return vkEnumerateInstanceVersion_VkResult_return;
1578}
1579static VkResult entry_vkBindBufferMemory2(
1580 VkDevice device,
1581 uint32_t bindInfoCount,
1582 const VkBindBufferMemoryInfo* pBindInfos)
1583{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001584 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001585 auto vkEnc = HostConnection::get()->vkEncoder();
1586 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001587 auto resources = ResourceTracker::get();
1588 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001589 return vkBindBufferMemory2_VkResult_return;
1590}
1591static VkResult entry_vkBindImageMemory2(
1592 VkDevice device,
1593 uint32_t bindInfoCount,
1594 const VkBindImageMemoryInfo* pBindInfos)
1595{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001596 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001597 auto vkEnc = HostConnection::get()->vkEncoder();
1598 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001599 auto resources = ResourceTracker::get();
1600 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001601 return vkBindImageMemory2_VkResult_return;
1602}
1603static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1604 VkDevice device,
1605 uint32_t heapIndex,
1606 uint32_t localDeviceIndex,
1607 uint32_t remoteDeviceIndex,
1608 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1609{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001610 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001611 auto vkEnc = HostConnection::get()->vkEncoder();
1612 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1613}
1614static void entry_vkCmdSetDeviceMask(
1615 VkCommandBuffer commandBuffer,
1616 uint32_t deviceMask)
1617{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001618 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001619 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001620 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001621 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask);
1622}
1623static void entry_vkCmdDispatchBase(
1624 VkCommandBuffer commandBuffer,
1625 uint32_t baseGroupX,
1626 uint32_t baseGroupY,
1627 uint32_t baseGroupZ,
1628 uint32_t groupCountX,
1629 uint32_t groupCountY,
1630 uint32_t groupCountZ)
1631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001632 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001633 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001634 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001635 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1636}
1637static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1638 VkInstance instance,
1639 uint32_t* pPhysicalDeviceGroupCount,
1640 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1641{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001642 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001643 auto vkEnc = HostConnection::get()->vkEncoder();
1644 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1645 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1646 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1647}
1648static void entry_vkGetImageMemoryRequirements2(
1649 VkDevice device,
1650 const VkImageMemoryRequirementsInfo2* pInfo,
1651 VkMemoryRequirements2* pMemoryRequirements)
1652{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001653 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001654 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001655 auto resources = ResourceTracker::get();
1656 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001657}
1658static void entry_vkGetBufferMemoryRequirements2(
1659 VkDevice device,
1660 const VkBufferMemoryRequirementsInfo2* pInfo,
1661 VkMemoryRequirements2* pMemoryRequirements)
1662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001663 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001664 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001665 auto resources = ResourceTracker::get();
1666 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001667}
1668static void entry_vkGetImageSparseMemoryRequirements2(
1669 VkDevice device,
1670 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1671 uint32_t* pSparseMemoryRequirementCount,
1672 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001674 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001675 auto vkEnc = HostConnection::get()->vkEncoder();
1676 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1677}
1678static void entry_vkGetPhysicalDeviceFeatures2(
1679 VkPhysicalDevice physicalDevice,
1680 VkPhysicalDeviceFeatures2* pFeatures)
1681{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001682 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001683 auto vkEnc = HostConnection::get()->vkEncoder();
1684 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
1685}
1686static void entry_vkGetPhysicalDeviceProperties2(
1687 VkPhysicalDevice physicalDevice,
1688 VkPhysicalDeviceProperties2* pProperties)
1689{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001690 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001691 auto vkEnc = HostConnection::get()->vkEncoder();
1692 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
1693}
1694static void entry_vkGetPhysicalDeviceFormatProperties2(
1695 VkPhysicalDevice physicalDevice,
1696 VkFormat format,
1697 VkFormatProperties2* pFormatProperties)
1698{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001699 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001700 auto vkEnc = HostConnection::get()->vkEncoder();
1701 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
1702}
1703static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1704 VkPhysicalDevice physicalDevice,
1705 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1706 VkImageFormatProperties2* pImageFormatProperties)
1707{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001708 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001709 auto vkEnc = HostConnection::get()->vkEncoder();
1710 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001711 auto resources = ResourceTracker::get();
1712 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001713 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1714}
1715static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1716 VkPhysicalDevice physicalDevice,
1717 uint32_t* pQueueFamilyPropertyCount,
1718 VkQueueFamilyProperties2* pQueueFamilyProperties)
1719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001720 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001721 auto vkEnc = HostConnection::get()->vkEncoder();
1722 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1723}
1724static void entry_vkGetPhysicalDeviceMemoryProperties2(
1725 VkPhysicalDevice physicalDevice,
1726 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1727{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001728 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001729 auto vkEnc = HostConnection::get()->vkEncoder();
1730 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
1731}
1732static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1733 VkPhysicalDevice physicalDevice,
1734 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1735 uint32_t* pPropertyCount,
1736 VkSparseImageFormatProperties2* pProperties)
1737{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001738 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001739 auto vkEnc = HostConnection::get()->vkEncoder();
1740 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
1741}
1742static void entry_vkTrimCommandPool(
1743 VkDevice device,
1744 VkCommandPool commandPool,
1745 VkCommandPoolTrimFlags flags)
1746{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001747 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001748 auto vkEnc = HostConnection::get()->vkEncoder();
1749 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1750}
1751static void entry_vkGetDeviceQueue2(
1752 VkDevice device,
1753 const VkDeviceQueueInfo2* pQueueInfo,
1754 VkQueue* pQueue)
1755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001756 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001757 auto vkEnc = HostConnection::get()->vkEncoder();
1758 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1759}
1760static VkResult entry_vkCreateSamplerYcbcrConversion(
1761 VkDevice device,
1762 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1763 const VkAllocationCallbacks* pAllocator,
1764 VkSamplerYcbcrConversion* pYcbcrConversion)
1765{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001766 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001767 auto vkEnc = HostConnection::get()->vkEncoder();
1768 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001769 auto resources = ResourceTracker::get();
1770 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001771 return vkCreateSamplerYcbcrConversion_VkResult_return;
1772}
1773static void entry_vkDestroySamplerYcbcrConversion(
1774 VkDevice device,
1775 VkSamplerYcbcrConversion ycbcrConversion,
1776 const VkAllocationCallbacks* pAllocator)
1777{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001778 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001779 auto vkEnc = HostConnection::get()->vkEncoder();
1780 vkEnc->vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator);
1781}
1782static VkResult entry_vkCreateDescriptorUpdateTemplate(
1783 VkDevice device,
1784 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1785 const VkAllocationCallbacks* pAllocator,
1786 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1787{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001788 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001789 auto vkEnc = HostConnection::get()->vkEncoder();
1790 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1791 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1792 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1793}
1794static void entry_vkDestroyDescriptorUpdateTemplate(
1795 VkDevice device,
1796 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1797 const VkAllocationCallbacks* pAllocator)
1798{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001799 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001800 auto vkEnc = HostConnection::get()->vkEncoder();
1801 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1802}
1803static void entry_vkUpdateDescriptorSetWithTemplate(
1804 VkDevice device,
1805 VkDescriptorSet descriptorSet,
1806 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1807 const void* pData)
1808{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001809 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001810 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07001811 auto resources = ResourceTracker::get();
1812 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001813}
1814static void entry_vkGetPhysicalDeviceExternalBufferProperties(
1815 VkPhysicalDevice physicalDevice,
1816 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1817 VkExternalBufferProperties* pExternalBufferProperties)
1818{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001819 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001820 auto vkEnc = HostConnection::get()->vkEncoder();
1821 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
1822}
1823static void entry_vkGetPhysicalDeviceExternalFenceProperties(
1824 VkPhysicalDevice physicalDevice,
1825 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
1826 VkExternalFenceProperties* pExternalFenceProperties)
1827{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001828 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001829 auto vkEnc = HostConnection::get()->vkEncoder();
1830 vkEnc->vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
1831}
1832static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
1833 VkPhysicalDevice physicalDevice,
1834 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
1835 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
1836{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001837 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001838 auto vkEnc = HostConnection::get()->vkEncoder();
1839 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
1840}
1841static void entry_vkGetDescriptorSetLayoutSupport(
1842 VkDevice device,
1843 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1844 VkDescriptorSetLayoutSupport* pSupport)
1845{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001846 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001847 auto vkEnc = HostConnection::get()->vkEncoder();
1848 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
1849}
1850#endif
1851#ifdef VK_KHR_surface
1852static void entry_vkDestroySurfaceKHR(
1853 VkInstance instance,
1854 VkSurfaceKHR surface,
1855 const VkAllocationCallbacks* pAllocator)
1856{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001857 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001858 auto vkEnc = HostConnection::get()->vkEncoder();
1859 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator);
1860}
1861static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
1862 VkPhysicalDevice physicalDevice,
1863 uint32_t queueFamilyIndex,
1864 VkSurfaceKHR surface,
1865 VkBool32* pSupported)
1866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001867 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001868 auto vkEnc = HostConnection::get()->vkEncoder();
1869 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
1870 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
1871 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
1872}
1873static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
1874 VkPhysicalDevice physicalDevice,
1875 VkSurfaceKHR surface,
1876 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
1877{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001878 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001879 auto vkEnc = HostConnection::get()->vkEncoder();
1880 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
1881 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
1882 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
1883}
1884static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
1885 VkPhysicalDevice physicalDevice,
1886 VkSurfaceKHR surface,
1887 uint32_t* pSurfaceFormatCount,
1888 VkSurfaceFormatKHR* pSurfaceFormats)
1889{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001890 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001891 auto vkEnc = HostConnection::get()->vkEncoder();
1892 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
1893 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
1894 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
1895}
1896static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
1897 VkPhysicalDevice physicalDevice,
1898 VkSurfaceKHR surface,
1899 uint32_t* pPresentModeCount,
1900 VkPresentModeKHR* pPresentModes)
1901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001902 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001903 auto vkEnc = HostConnection::get()->vkEncoder();
1904 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
1905 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
1906 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
1907}
1908#endif
1909#ifdef VK_KHR_swapchain
1910static VkResult entry_vkCreateSwapchainKHR(
1911 VkDevice device,
1912 const VkSwapchainCreateInfoKHR* pCreateInfo,
1913 const VkAllocationCallbacks* pAllocator,
1914 VkSwapchainKHR* pSwapchain)
1915{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001916 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001917 auto vkEnc = HostConnection::get()->vkEncoder();
1918 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
1919 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
1920 return vkCreateSwapchainKHR_VkResult_return;
1921}
1922static void entry_vkDestroySwapchainKHR(
1923 VkDevice device,
1924 VkSwapchainKHR swapchain,
1925 const VkAllocationCallbacks* pAllocator)
1926{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001927 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001928 auto vkEnc = HostConnection::get()->vkEncoder();
1929 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
1930}
1931static VkResult entry_vkGetSwapchainImagesKHR(
1932 VkDevice device,
1933 VkSwapchainKHR swapchain,
1934 uint32_t* pSwapchainImageCount,
1935 VkImage* pSwapchainImages)
1936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001937 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001938 auto vkEnc = HostConnection::get()->vkEncoder();
1939 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
1940 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
1941 return vkGetSwapchainImagesKHR_VkResult_return;
1942}
1943static VkResult entry_vkAcquireNextImageKHR(
1944 VkDevice device,
1945 VkSwapchainKHR swapchain,
1946 uint64_t timeout,
1947 VkSemaphore semaphore,
1948 VkFence fence,
1949 uint32_t* pImageIndex)
1950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001951 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001952 auto vkEnc = HostConnection::get()->vkEncoder();
1953 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
1954 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
1955 return vkAcquireNextImageKHR_VkResult_return;
1956}
1957static VkResult entry_vkQueuePresentKHR(
1958 VkQueue queue,
1959 const VkPresentInfoKHR* pPresentInfo)
1960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001961 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001962 auto vkEnc = HostConnection::get()->vkEncoder();
1963 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
1964 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo);
1965 return vkQueuePresentKHR_VkResult_return;
1966}
1967static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
1968 VkDevice device,
1969 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
1970{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001971 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001972 auto vkEnc = HostConnection::get()->vkEncoder();
1973 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
1974 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
1975 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
1976}
1977static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
1978 VkDevice device,
1979 VkSurfaceKHR surface,
1980 VkDeviceGroupPresentModeFlagsKHR* pModes)
1981{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001982 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001983 auto vkEnc = HostConnection::get()->vkEncoder();
1984 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
1985 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
1986 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
1987}
1988static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
1989 VkPhysicalDevice physicalDevice,
1990 VkSurfaceKHR surface,
1991 uint32_t* pRectCount,
1992 VkRect2D* pRects)
1993{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001994 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001995 auto vkEnc = HostConnection::get()->vkEncoder();
1996 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
1997 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
1998 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
1999}
2000static VkResult entry_vkAcquireNextImage2KHR(
2001 VkDevice device,
2002 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2003 uint32_t* pImageIndex)
2004{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002005 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002006 auto vkEnc = HostConnection::get()->vkEncoder();
2007 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2008 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2009 return vkAcquireNextImage2KHR_VkResult_return;
2010}
2011#endif
2012#ifdef VK_KHR_display
2013static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2014 VkPhysicalDevice physicalDevice,
2015 uint32_t* pPropertyCount,
2016 VkDisplayPropertiesKHR* pProperties)
2017{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002018 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002019 auto vkEnc = HostConnection::get()->vkEncoder();
2020 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2021 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2022 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2023}
2024static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2025 VkPhysicalDevice physicalDevice,
2026 uint32_t* pPropertyCount,
2027 VkDisplayPlanePropertiesKHR* pProperties)
2028{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002029 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002030 auto vkEnc = HostConnection::get()->vkEncoder();
2031 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2032 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2033 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2034}
2035static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2036 VkPhysicalDevice physicalDevice,
2037 uint32_t planeIndex,
2038 uint32_t* pDisplayCount,
2039 VkDisplayKHR* pDisplays)
2040{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002041 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002042 auto vkEnc = HostConnection::get()->vkEncoder();
2043 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2044 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
2045 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2046}
2047static VkResult entry_vkGetDisplayModePropertiesKHR(
2048 VkPhysicalDevice physicalDevice,
2049 VkDisplayKHR display,
2050 uint32_t* pPropertyCount,
2051 VkDisplayModePropertiesKHR* pProperties)
2052{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002053 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002054 auto vkEnc = HostConnection::get()->vkEncoder();
2055 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2056 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
2057 return vkGetDisplayModePropertiesKHR_VkResult_return;
2058}
2059static VkResult entry_vkCreateDisplayModeKHR(
2060 VkPhysicalDevice physicalDevice,
2061 VkDisplayKHR display,
2062 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2063 const VkAllocationCallbacks* pAllocator,
2064 VkDisplayModeKHR* pMode)
2065{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002066 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002067 auto vkEnc = HostConnection::get()->vkEncoder();
2068 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2069 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
2070 return vkCreateDisplayModeKHR_VkResult_return;
2071}
2072static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2073 VkPhysicalDevice physicalDevice,
2074 VkDisplayModeKHR mode,
2075 uint32_t planeIndex,
2076 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2077{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002078 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002079 auto vkEnc = HostConnection::get()->vkEncoder();
2080 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2081 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
2082 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2083}
2084static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2085 VkInstance instance,
2086 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2087 const VkAllocationCallbacks* pAllocator,
2088 VkSurfaceKHR* pSurface)
2089{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002090 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002091 auto vkEnc = HostConnection::get()->vkEncoder();
2092 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2093 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2094 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2095}
2096#endif
2097#ifdef VK_KHR_display_swapchain
2098static VkResult entry_vkCreateSharedSwapchainsKHR(
2099 VkDevice device,
2100 uint32_t swapchainCount,
2101 const VkSwapchainCreateInfoKHR* pCreateInfos,
2102 const VkAllocationCallbacks* pAllocator,
2103 VkSwapchainKHR* pSwapchains)
2104{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002105 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002106 auto vkEnc = HostConnection::get()->vkEncoder();
2107 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2108 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2109 return vkCreateSharedSwapchainsKHR_VkResult_return;
2110}
2111#endif
2112#ifdef VK_KHR_xlib_surface
2113static VkResult entry_vkCreateXlibSurfaceKHR(
2114 VkInstance instance,
2115 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2116 const VkAllocationCallbacks* pAllocator,
2117 VkSurfaceKHR* pSurface)
2118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002119 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002120 auto vkEnc = HostConnection::get()->vkEncoder();
2121 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2122 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2123 return vkCreateXlibSurfaceKHR_VkResult_return;
2124}
2125static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2126 VkPhysicalDevice physicalDevice,
2127 uint32_t queueFamilyIndex,
2128 Display* dpy,
2129 VisualID visualID)
2130{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002131 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002132 auto vkEnc = HostConnection::get()->vkEncoder();
2133 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2134 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
2135 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2136}
2137#endif
2138#ifdef VK_KHR_xcb_surface
2139static VkResult entry_vkCreateXcbSurfaceKHR(
2140 VkInstance instance,
2141 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2142 const VkAllocationCallbacks* pAllocator,
2143 VkSurfaceKHR* pSurface)
2144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002145 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002146 auto vkEnc = HostConnection::get()->vkEncoder();
2147 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2148 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2149 return vkCreateXcbSurfaceKHR_VkResult_return;
2150}
2151static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2152 VkPhysicalDevice physicalDevice,
2153 uint32_t queueFamilyIndex,
2154 xcb_connection_t* connection,
2155 xcb_visualid_t visual_id)
2156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002157 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002158 auto vkEnc = HostConnection::get()->vkEncoder();
2159 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2160 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
2161 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2162}
2163#endif
2164#ifdef VK_KHR_wayland_surface
2165static VkResult entry_vkCreateWaylandSurfaceKHR(
2166 VkInstance instance,
2167 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2168 const VkAllocationCallbacks* pAllocator,
2169 VkSurfaceKHR* pSurface)
2170{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002171 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002172 auto vkEnc = HostConnection::get()->vkEncoder();
2173 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2174 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2175 return vkCreateWaylandSurfaceKHR_VkResult_return;
2176}
2177static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2178 VkPhysicalDevice physicalDevice,
2179 uint32_t queueFamilyIndex,
2180 wl_display* display)
2181{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002182 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002183 auto vkEnc = HostConnection::get()->vkEncoder();
2184 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2185 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
2186 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2187}
2188#endif
2189#ifdef VK_KHR_mir_surface
2190static VkResult entry_vkCreateMirSurfaceKHR(
2191 VkInstance instance,
2192 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2193 const VkAllocationCallbacks* pAllocator,
2194 VkSurfaceKHR* pSurface)
2195{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002196 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002197 auto vkEnc = HostConnection::get()->vkEncoder();
2198 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
2199 vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2200 return vkCreateMirSurfaceKHR_VkResult_return;
2201}
2202static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2203 VkPhysicalDevice physicalDevice,
2204 uint32_t queueFamilyIndex,
2205 MirConnection* connection)
2206{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002207 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002208 auto vkEnc = HostConnection::get()->vkEncoder();
2209 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2210 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection);
2211 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2212}
2213#endif
2214#ifdef VK_KHR_android_surface
2215static VkResult entry_vkCreateAndroidSurfaceKHR(
2216 VkInstance instance,
2217 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2218 const VkAllocationCallbacks* pAllocator,
2219 VkSurfaceKHR* pSurface)
2220{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002221 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002222 auto vkEnc = HostConnection::get()->vkEncoder();
2223 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2224 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2225 return vkCreateAndroidSurfaceKHR_VkResult_return;
2226}
2227#endif
2228#ifdef VK_KHR_win32_surface
2229static VkResult entry_vkCreateWin32SurfaceKHR(
2230 VkInstance instance,
2231 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2232 const VkAllocationCallbacks* pAllocator,
2233 VkSurfaceKHR* pSurface)
2234{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002235 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002236 auto vkEnc = HostConnection::get()->vkEncoder();
2237 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2238 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2239 return vkCreateWin32SurfaceKHR_VkResult_return;
2240}
2241static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2242 VkPhysicalDevice physicalDevice,
2243 uint32_t queueFamilyIndex)
2244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002245 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002246 auto vkEnc = HostConnection::get()->vkEncoder();
2247 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2248 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
2249 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2250}
2251#endif
2252#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2253#endif
2254#ifdef VK_KHR_multiview
2255#endif
2256#ifdef VK_KHR_get_physical_device_properties2
2257static void entry_vkGetPhysicalDeviceFeatures2KHR(
2258 VkPhysicalDevice physicalDevice,
2259 VkPhysicalDeviceFeatures2* pFeatures)
2260{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002261 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002262 auto vkEnc = HostConnection::get()->vkEncoder();
2263 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
2264}
2265static void entry_vkGetPhysicalDeviceProperties2KHR(
2266 VkPhysicalDevice physicalDevice,
2267 VkPhysicalDeviceProperties2* pProperties)
2268{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002269 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002270 auto vkEnc = HostConnection::get()->vkEncoder();
2271 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
2272}
2273static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2274 VkPhysicalDevice physicalDevice,
2275 VkFormat format,
2276 VkFormatProperties2* pFormatProperties)
2277{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002278 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002279 auto vkEnc = HostConnection::get()->vkEncoder();
2280 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
2281}
2282static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2283 VkPhysicalDevice physicalDevice,
2284 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2285 VkImageFormatProperties2* pImageFormatProperties)
2286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002287 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002288 auto vkEnc = HostConnection::get()->vkEncoder();
2289 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002290 auto resources = ResourceTracker::get();
2291 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002292 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2293}
2294static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2295 VkPhysicalDevice physicalDevice,
2296 uint32_t* pQueueFamilyPropertyCount,
2297 VkQueueFamilyProperties2* pQueueFamilyProperties)
2298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002299 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002300 auto vkEnc = HostConnection::get()->vkEncoder();
2301 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2302}
2303static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2304 VkPhysicalDevice physicalDevice,
2305 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2306{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002307 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002308 auto vkEnc = HostConnection::get()->vkEncoder();
2309 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
2310}
2311static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2312 VkPhysicalDevice physicalDevice,
2313 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2314 uint32_t* pPropertyCount,
2315 VkSparseImageFormatProperties2* pProperties)
2316{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002317 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002318 auto vkEnc = HostConnection::get()->vkEncoder();
2319 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2320}
2321#endif
2322#ifdef VK_KHR_device_group
2323static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2324 VkDevice device,
2325 uint32_t heapIndex,
2326 uint32_t localDeviceIndex,
2327 uint32_t remoteDeviceIndex,
2328 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2329{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002330 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002331 auto vkEnc = HostConnection::get()->vkEncoder();
2332 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2333}
2334static void entry_vkCmdSetDeviceMaskKHR(
2335 VkCommandBuffer commandBuffer,
2336 uint32_t deviceMask)
2337{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002338 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002339 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002340 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002341 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2342}
2343static void entry_vkCmdDispatchBaseKHR(
2344 VkCommandBuffer commandBuffer,
2345 uint32_t baseGroupX,
2346 uint32_t baseGroupY,
2347 uint32_t baseGroupZ,
2348 uint32_t groupCountX,
2349 uint32_t groupCountY,
2350 uint32_t groupCountZ)
2351{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002352 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002353 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002354 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002355 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2356}
2357#endif
2358#ifdef VK_KHR_shader_draw_parameters
2359#endif
2360#ifdef VK_KHR_maintenance1
2361static void entry_vkTrimCommandPoolKHR(
2362 VkDevice device,
2363 VkCommandPool commandPool,
2364 VkCommandPoolTrimFlags flags)
2365{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002366 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002367 auto vkEnc = HostConnection::get()->vkEncoder();
2368 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2369}
2370#endif
2371#ifdef VK_KHR_device_group_creation
2372static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2373 VkInstance instance,
2374 uint32_t* pPhysicalDeviceGroupCount,
2375 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2376{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002377 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002378 auto vkEnc = HostConnection::get()->vkEncoder();
2379 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2380 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
2381 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2382}
2383#endif
2384#ifdef VK_KHR_external_memory_capabilities
2385static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2386 VkPhysicalDevice physicalDevice,
2387 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2388 VkExternalBufferProperties* pExternalBufferProperties)
2389{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002390 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002391 auto vkEnc = HostConnection::get()->vkEncoder();
2392 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2393}
2394#endif
2395#ifdef VK_KHR_external_memory
2396#endif
2397#ifdef VK_KHR_external_memory_win32
2398static VkResult entry_vkGetMemoryWin32HandleKHR(
2399 VkDevice device,
2400 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2401 HANDLE* pHandle)
2402{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002403 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002404 auto vkEnc = HostConnection::get()->vkEncoder();
2405 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2406 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2407 return vkGetMemoryWin32HandleKHR_VkResult_return;
2408}
2409static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2410 VkDevice device,
2411 VkExternalMemoryHandleTypeFlagBits handleType,
2412 HANDLE handle,
2413 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2414{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002415 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002416 auto vkEnc = HostConnection::get()->vkEncoder();
2417 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2418 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2419 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2420}
2421#endif
2422#ifdef VK_KHR_external_memory_fd
2423static VkResult entry_vkGetMemoryFdKHR(
2424 VkDevice device,
2425 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2426 int* pFd)
2427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002428 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002429 auto vkEnc = HostConnection::get()->vkEncoder();
2430 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2431 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2432 return vkGetMemoryFdKHR_VkResult_return;
2433}
2434static VkResult entry_vkGetMemoryFdPropertiesKHR(
2435 VkDevice device,
2436 VkExternalMemoryHandleTypeFlagBits handleType,
2437 int fd,
2438 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2439{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002440 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002441 auto vkEnc = HostConnection::get()->vkEncoder();
2442 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2443 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2444 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2445}
2446#endif
2447#ifdef VK_KHR_win32_keyed_mutex
2448#endif
2449#ifdef VK_KHR_external_semaphore_capabilities
2450static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2451 VkPhysicalDevice physicalDevice,
2452 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2453 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002455 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002456 auto vkEnc = HostConnection::get()->vkEncoder();
2457 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2458}
2459#endif
2460#ifdef VK_KHR_external_semaphore
2461#endif
2462#ifdef VK_KHR_external_semaphore_win32
2463static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2464 VkDevice device,
2465 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2466{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002467 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002468 auto vkEnc = HostConnection::get()->vkEncoder();
2469 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2470 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2471 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2472}
2473static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2474 VkDevice device,
2475 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2476 HANDLE* pHandle)
2477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002478 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002479 auto vkEnc = HostConnection::get()->vkEncoder();
2480 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2481 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2482 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2483}
2484#endif
2485#ifdef VK_KHR_external_semaphore_fd
2486static VkResult entry_vkImportSemaphoreFdKHR(
2487 VkDevice device,
2488 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2489{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002490 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002491 auto vkEnc = HostConnection::get()->vkEncoder();
2492 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002493 auto resources = ResourceTracker::get();
2494 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002495 return vkImportSemaphoreFdKHR_VkResult_return;
2496}
2497static VkResult entry_vkGetSemaphoreFdKHR(
2498 VkDevice device,
2499 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
2500 int* pFd)
2501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002502 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002503 auto vkEnc = HostConnection::get()->vkEncoder();
2504 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002505 auto resources = ResourceTracker::get();
2506 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002507 return vkGetSemaphoreFdKHR_VkResult_return;
2508}
2509#endif
2510#ifdef VK_KHR_push_descriptor
2511static void entry_vkCmdPushDescriptorSetKHR(
2512 VkCommandBuffer commandBuffer,
2513 VkPipelineBindPoint pipelineBindPoint,
2514 VkPipelineLayout layout,
2515 uint32_t set,
2516 uint32_t descriptorWriteCount,
2517 const VkWriteDescriptorSet* pDescriptorWrites)
2518{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002519 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002520 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002521 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002522 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
2523}
2524static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
2525 VkCommandBuffer commandBuffer,
2526 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2527 VkPipelineLayout layout,
2528 uint32_t set,
2529 const void* pData)
2530{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002531 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002532 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002533 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002534 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
2535}
2536#endif
2537#ifdef VK_KHR_16bit_storage
2538#endif
2539#ifdef VK_KHR_incremental_present
2540#endif
2541#ifdef VK_KHR_descriptor_update_template
2542static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
2543 VkDevice device,
2544 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2545 const VkAllocationCallbacks* pAllocator,
2546 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
2547{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002548 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002549 auto vkEnc = HostConnection::get()->vkEncoder();
2550 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
2551 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
2552 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
2553}
2554static void entry_vkDestroyDescriptorUpdateTemplateKHR(
2555 VkDevice device,
2556 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2557 const VkAllocationCallbacks* pAllocator)
2558{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002559 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002560 auto vkEnc = HostConnection::get()->vkEncoder();
2561 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
2562}
2563static void entry_vkUpdateDescriptorSetWithTemplateKHR(
2564 VkDevice device,
2565 VkDescriptorSet descriptorSet,
2566 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2567 const void* pData)
2568{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002569 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002570 auto vkEnc = HostConnection::get()->vkEncoder();
2571 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
2572}
2573#endif
2574#ifdef VK_KHR_create_renderpass2
2575static VkResult entry_vkCreateRenderPass2KHR(
2576 VkDevice device,
2577 const VkRenderPassCreateInfo2KHR* pCreateInfo,
2578 const VkAllocationCallbacks* pAllocator,
2579 VkRenderPass* pRenderPass)
2580{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002581 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002582 auto vkEnc = HostConnection::get()->vkEncoder();
2583 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
2584 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
2585 return vkCreateRenderPass2KHR_VkResult_return;
2586}
2587static void entry_vkCmdBeginRenderPass2KHR(
2588 VkCommandBuffer commandBuffer,
2589 const VkRenderPassBeginInfo* pRenderPassBegin,
2590 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
2591{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002592 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002593 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002594 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002595 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
2596}
2597static void entry_vkCmdNextSubpass2KHR(
2598 VkCommandBuffer commandBuffer,
2599 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
2600 const VkSubpassEndInfoKHR* pSubpassEndInfo)
2601{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002602 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002603 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002604 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002605 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
2606}
2607static void entry_vkCmdEndRenderPass2KHR(
2608 VkCommandBuffer commandBuffer,
2609 const VkSubpassEndInfoKHR* pSubpassEndInfo)
2610{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002611 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002612 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002613 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002614 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
2615}
2616#endif
2617#ifdef VK_KHR_shared_presentable_image
2618static VkResult entry_vkGetSwapchainStatusKHR(
2619 VkDevice device,
2620 VkSwapchainKHR swapchain)
2621{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002622 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002623 auto vkEnc = HostConnection::get()->vkEncoder();
2624 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
2625 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
2626 return vkGetSwapchainStatusKHR_VkResult_return;
2627}
2628#endif
2629#ifdef VK_KHR_external_fence_capabilities
2630static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
2631 VkPhysicalDevice physicalDevice,
2632 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2633 VkExternalFenceProperties* pExternalFenceProperties)
2634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002635 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002636 auto vkEnc = HostConnection::get()->vkEncoder();
2637 vkEnc->vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
2638}
2639#endif
2640#ifdef VK_KHR_external_fence
2641#endif
2642#ifdef VK_KHR_external_fence_win32
2643static VkResult entry_vkImportFenceWin32HandleKHR(
2644 VkDevice device,
2645 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
2646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002647 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002648 auto vkEnc = HostConnection::get()->vkEncoder();
2649 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
2650 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
2651 return vkImportFenceWin32HandleKHR_VkResult_return;
2652}
2653static VkResult entry_vkGetFenceWin32HandleKHR(
2654 VkDevice device,
2655 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2656 HANDLE* pHandle)
2657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002658 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002659 auto vkEnc = HostConnection::get()->vkEncoder();
2660 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
2661 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2662 return vkGetFenceWin32HandleKHR_VkResult_return;
2663}
2664#endif
2665#ifdef VK_KHR_external_fence_fd
2666static VkResult entry_vkImportFenceFdKHR(
2667 VkDevice device,
2668 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
2669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002670 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002671 auto vkEnc = HostConnection::get()->vkEncoder();
2672 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
2673 vkImportFenceFdKHR_VkResult_return = vkEnc->vkImportFenceFdKHR(device, pImportFenceFdInfo);
2674 return vkImportFenceFdKHR_VkResult_return;
2675}
2676static VkResult entry_vkGetFenceFdKHR(
2677 VkDevice device,
2678 const VkFenceGetFdInfoKHR* pGetFdInfo,
2679 int* pFd)
2680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002681 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002682 auto vkEnc = HostConnection::get()->vkEncoder();
2683 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
2684 vkGetFenceFdKHR_VkResult_return = vkEnc->vkGetFenceFdKHR(device, pGetFdInfo, pFd);
2685 return vkGetFenceFdKHR_VkResult_return;
2686}
2687#endif
2688#ifdef VK_KHR_maintenance2
2689#endif
2690#ifdef VK_KHR_get_surface_capabilities2
2691static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
2692 VkPhysicalDevice physicalDevice,
2693 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
2694 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
2695{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002696 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002697 auto vkEnc = HostConnection::get()->vkEncoder();
2698 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
2699 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
2700 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
2701}
2702static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
2703 VkPhysicalDevice physicalDevice,
2704 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
2705 uint32_t* pSurfaceFormatCount,
2706 VkSurfaceFormat2KHR* pSurfaceFormats)
2707{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002708 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002709 auto vkEnc = HostConnection::get()->vkEncoder();
2710 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
2711 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
2712 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
2713}
2714#endif
2715#ifdef VK_KHR_variable_pointers
2716#endif
2717#ifdef VK_KHR_get_display_properties2
2718static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
2719 VkPhysicalDevice physicalDevice,
2720 uint32_t* pPropertyCount,
2721 VkDisplayProperties2KHR* pProperties)
2722{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002723 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002724 auto vkEnc = HostConnection::get()->vkEncoder();
2725 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
2726 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
2727 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
2728}
2729static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
2730 VkPhysicalDevice physicalDevice,
2731 uint32_t* pPropertyCount,
2732 VkDisplayPlaneProperties2KHR* pProperties)
2733{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002734 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002735 auto vkEnc = HostConnection::get()->vkEncoder();
2736 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
2737 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
2738 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
2739}
2740static VkResult entry_vkGetDisplayModeProperties2KHR(
2741 VkPhysicalDevice physicalDevice,
2742 VkDisplayKHR display,
2743 uint32_t* pPropertyCount,
2744 VkDisplayModeProperties2KHR* pProperties)
2745{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002746 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002747 auto vkEnc = HostConnection::get()->vkEncoder();
2748 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
2749 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
2750 return vkGetDisplayModeProperties2KHR_VkResult_return;
2751}
2752static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
2753 VkPhysicalDevice physicalDevice,
2754 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
2755 VkDisplayPlaneCapabilities2KHR* pCapabilities)
2756{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002757 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002758 auto vkEnc = HostConnection::get()->vkEncoder();
2759 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
2760 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
2761 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
2762}
2763#endif
2764#ifdef VK_KHR_dedicated_allocation
2765#endif
2766#ifdef VK_KHR_storage_buffer_storage_class
2767#endif
2768#ifdef VK_KHR_relaxed_block_layout
2769#endif
2770#ifdef VK_KHR_get_memory_requirements2
2771static void entry_vkGetImageMemoryRequirements2KHR(
2772 VkDevice device,
2773 const VkImageMemoryRequirementsInfo2* pInfo,
2774 VkMemoryRequirements2* pMemoryRequirements)
2775{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002776 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002777 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08002778 auto resources = ResourceTracker::get();
2779 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002780}
2781static void entry_vkGetBufferMemoryRequirements2KHR(
2782 VkDevice device,
2783 const VkBufferMemoryRequirementsInfo2* pInfo,
2784 VkMemoryRequirements2* pMemoryRequirements)
2785{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002786 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002787 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08002788 auto resources = ResourceTracker::get();
2789 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002790}
2791static void entry_vkGetImageSparseMemoryRequirements2KHR(
2792 VkDevice device,
2793 const VkImageSparseMemoryRequirementsInfo2* pInfo,
2794 uint32_t* pSparseMemoryRequirementCount,
2795 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
2796{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002797 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002798 auto vkEnc = HostConnection::get()->vkEncoder();
2799 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
2800}
2801#endif
2802#ifdef VK_KHR_image_format_list
2803#endif
2804#ifdef VK_KHR_sampler_ycbcr_conversion
2805static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
2806 VkDevice device,
2807 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
2808 const VkAllocationCallbacks* pAllocator,
2809 VkSamplerYcbcrConversion* pYcbcrConversion)
2810{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002811 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002812 auto vkEnc = HostConnection::get()->vkEncoder();
2813 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08002814 auto resources = ResourceTracker::get();
2815 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002816 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
2817}
2818static void entry_vkDestroySamplerYcbcrConversionKHR(
2819 VkDevice device,
2820 VkSamplerYcbcrConversion ycbcrConversion,
2821 const VkAllocationCallbacks* pAllocator)
2822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002823 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002824 auto vkEnc = HostConnection::get()->vkEncoder();
2825 vkEnc->vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator);
2826}
2827#endif
2828#ifdef VK_KHR_bind_memory2
2829static VkResult entry_vkBindBufferMemory2KHR(
2830 VkDevice device,
2831 uint32_t bindInfoCount,
2832 const VkBindBufferMemoryInfo* pBindInfos)
2833{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002834 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002835 auto vkEnc = HostConnection::get()->vkEncoder();
2836 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08002837 auto resources = ResourceTracker::get();
2838 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002839 return vkBindBufferMemory2KHR_VkResult_return;
2840}
2841static VkResult entry_vkBindImageMemory2KHR(
2842 VkDevice device,
2843 uint32_t bindInfoCount,
2844 const VkBindImageMemoryInfo* pBindInfos)
2845{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002846 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002847 auto vkEnc = HostConnection::get()->vkEncoder();
2848 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08002849 auto resources = ResourceTracker::get();
2850 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002851 return vkBindImageMemory2KHR_VkResult_return;
2852}
2853#endif
2854#ifdef VK_KHR_maintenance3
2855static void entry_vkGetDescriptorSetLayoutSupportKHR(
2856 VkDevice device,
2857 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2858 VkDescriptorSetLayoutSupport* pSupport)
2859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002860 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002861 auto vkEnc = HostConnection::get()->vkEncoder();
2862 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
2863}
2864#endif
2865#ifdef VK_KHR_draw_indirect_count
2866static void entry_vkCmdDrawIndirectCountKHR(
2867 VkCommandBuffer commandBuffer,
2868 VkBuffer buffer,
2869 VkDeviceSize offset,
2870 VkBuffer countBuffer,
2871 VkDeviceSize countBufferOffset,
2872 uint32_t maxDrawCount,
2873 uint32_t stride)
2874{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002875 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002876 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002877 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002878 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
2879}
2880static void entry_vkCmdDrawIndexedIndirectCountKHR(
2881 VkCommandBuffer commandBuffer,
2882 VkBuffer buffer,
2883 VkDeviceSize offset,
2884 VkBuffer countBuffer,
2885 VkDeviceSize countBufferOffset,
2886 uint32_t maxDrawCount,
2887 uint32_t stride)
2888{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002889 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002890 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002891 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002892 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
2893}
2894#endif
2895#ifdef VK_KHR_8bit_storage
2896#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08002897#ifdef VK_ANDROID_native_buffer
2898static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
2899 VkDevice device,
2900 VkFormat format,
2901 VkImageUsageFlags imageUsage,
2902 int* grallocUsage)
2903{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002904 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08002905 auto vkEnc = HostConnection::get()->vkEncoder();
2906 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
2907 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
2908 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
2909}
2910static VkResult entry_vkAcquireImageANDROID(
2911 VkDevice device,
2912 VkImage image,
2913 int nativeFenceFd,
2914 VkSemaphore semaphore,
2915 VkFence fence)
2916{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002917 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08002918 auto vkEnc = HostConnection::get()->vkEncoder();
2919 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
2920 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
2921 return vkAcquireImageANDROID_VkResult_return;
2922}
2923static VkResult entry_vkQueueSignalReleaseImageANDROID(
2924 VkQueue queue,
2925 uint32_t waitSemaphoreCount,
2926 const VkSemaphore* pWaitSemaphores,
2927 VkImage image,
2928 int* pNativeFenceFd)
2929{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002930 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08002931 auto vkEnc = HostConnection::get()->vkEncoder();
2932 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
2933 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
2934 return vkQueueSignalReleaseImageANDROID_VkResult_return;
2935}
2936#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002937#ifdef VK_EXT_debug_report
2938static VkResult entry_vkCreateDebugReportCallbackEXT(
2939 VkInstance instance,
2940 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
2941 const VkAllocationCallbacks* pAllocator,
2942 VkDebugReportCallbackEXT* pCallback)
2943{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002944 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002945 auto vkEnc = HostConnection::get()->vkEncoder();
2946 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
2947 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
2948 return vkCreateDebugReportCallbackEXT_VkResult_return;
2949}
2950static void entry_vkDestroyDebugReportCallbackEXT(
2951 VkInstance instance,
2952 VkDebugReportCallbackEXT callback,
2953 const VkAllocationCallbacks* pAllocator)
2954{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002955 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002956 auto vkEnc = HostConnection::get()->vkEncoder();
2957 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
2958}
2959static void entry_vkDebugReportMessageEXT(
2960 VkInstance instance,
2961 VkDebugReportFlagsEXT flags,
2962 VkDebugReportObjectTypeEXT objectType,
2963 uint64_t object,
2964 size_t location,
2965 int32_t messageCode,
2966 const char* pLayerPrefix,
2967 const char* pMessage)
2968{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002969 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002970 auto vkEnc = HostConnection::get()->vkEncoder();
2971 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
2972}
2973#endif
2974#ifdef VK_NV_glsl_shader
2975#endif
2976#ifdef VK_EXT_depth_range_unrestricted
2977#endif
2978#ifdef VK_IMG_filter_cubic
2979#endif
2980#ifdef VK_AMD_rasterization_order
2981#endif
2982#ifdef VK_AMD_shader_trinary_minmax
2983#endif
2984#ifdef VK_AMD_shader_explicit_vertex_parameter
2985#endif
2986#ifdef VK_EXT_debug_marker
2987static VkResult entry_vkDebugMarkerSetObjectTagEXT(
2988 VkDevice device,
2989 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
2990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002991 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002992 auto vkEnc = HostConnection::get()->vkEncoder();
2993 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
2994 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
2995 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
2996}
2997static VkResult entry_vkDebugMarkerSetObjectNameEXT(
2998 VkDevice device,
2999 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003001 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003002 auto vkEnc = HostConnection::get()->vkEncoder();
3003 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3004 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3005 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3006}
3007static void entry_vkCmdDebugMarkerBeginEXT(
3008 VkCommandBuffer commandBuffer,
3009 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3010{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003011 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003012 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003013 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003014 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3015}
3016static void entry_vkCmdDebugMarkerEndEXT(
3017 VkCommandBuffer commandBuffer)
3018{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003019 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003020 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003021 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003022 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer);
3023}
3024static void entry_vkCmdDebugMarkerInsertEXT(
3025 VkCommandBuffer commandBuffer,
3026 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3027{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003028 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003029 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003030 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003031 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3032}
3033#endif
3034#ifdef VK_AMD_gcn_shader
3035#endif
3036#ifdef VK_NV_dedicated_allocation
3037#endif
3038#ifdef VK_AMD_draw_indirect_count
3039static void entry_vkCmdDrawIndirectCountAMD(
3040 VkCommandBuffer commandBuffer,
3041 VkBuffer buffer,
3042 VkDeviceSize offset,
3043 VkBuffer countBuffer,
3044 VkDeviceSize countBufferOffset,
3045 uint32_t maxDrawCount,
3046 uint32_t stride)
3047{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003048 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003049 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003050 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003051 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3052}
3053static void entry_vkCmdDrawIndexedIndirectCountAMD(
3054 VkCommandBuffer commandBuffer,
3055 VkBuffer buffer,
3056 VkDeviceSize offset,
3057 VkBuffer countBuffer,
3058 VkDeviceSize countBufferOffset,
3059 uint32_t maxDrawCount,
3060 uint32_t stride)
3061{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003062 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003063 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003064 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003065 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3066}
3067#endif
3068#ifdef VK_AMD_negative_viewport_height
3069#endif
3070#ifdef VK_AMD_gpu_shader_half_float
3071#endif
3072#ifdef VK_AMD_shader_ballot
3073#endif
3074#ifdef VK_AMD_texture_gather_bias_lod
3075#endif
3076#ifdef VK_AMD_shader_info
3077static VkResult entry_vkGetShaderInfoAMD(
3078 VkDevice device,
3079 VkPipeline pipeline,
3080 VkShaderStageFlagBits shaderStage,
3081 VkShaderInfoTypeAMD infoType,
3082 size_t* pInfoSize,
3083 void* pInfo)
3084{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003085 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003086 auto vkEnc = HostConnection::get()->vkEncoder();
3087 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3088 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3089 return vkGetShaderInfoAMD_VkResult_return;
3090}
3091#endif
3092#ifdef VK_AMD_shader_image_load_store_lod
3093#endif
3094#ifdef VK_IMG_format_pvrtc
3095#endif
3096#ifdef VK_NV_external_memory_capabilities
3097static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3098 VkPhysicalDevice physicalDevice,
3099 VkFormat format,
3100 VkImageType type,
3101 VkImageTiling tiling,
3102 VkImageUsageFlags usage,
3103 VkImageCreateFlags flags,
3104 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3105 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3106{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003107 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003108 auto vkEnc = HostConnection::get()->vkEncoder();
3109 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3110 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3111 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3112}
3113#endif
3114#ifdef VK_NV_external_memory
3115#endif
3116#ifdef VK_NV_external_memory_win32
3117static VkResult entry_vkGetMemoryWin32HandleNV(
3118 VkDevice device,
3119 VkDeviceMemory memory,
3120 VkExternalMemoryHandleTypeFlagsNV handleType,
3121 HANDLE* pHandle)
3122{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003123 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003124 auto vkEnc = HostConnection::get()->vkEncoder();
3125 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
3126 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
3127 return vkGetMemoryWin32HandleNV_VkResult_return;
3128}
3129#endif
3130#ifdef VK_NV_win32_keyed_mutex
3131#endif
3132#ifdef VK_EXT_validation_flags
3133#endif
3134#ifdef VK_NN_vi_surface
3135static VkResult entry_vkCreateViSurfaceNN(
3136 VkInstance instance,
3137 const VkViSurfaceCreateInfoNN* pCreateInfo,
3138 const VkAllocationCallbacks* pAllocator,
3139 VkSurfaceKHR* pSurface)
3140{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003141 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003142 auto vkEnc = HostConnection::get()->vkEncoder();
3143 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
3144 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
3145 return vkCreateViSurfaceNN_VkResult_return;
3146}
3147#endif
3148#ifdef VK_EXT_shader_subgroup_ballot
3149#endif
3150#ifdef VK_EXT_shader_subgroup_vote
3151#endif
3152#ifdef VK_EXT_conditional_rendering
3153static void entry_vkCmdBeginConditionalRenderingEXT(
3154 VkCommandBuffer commandBuffer,
3155 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
3156{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003157 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003158 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003159 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003160 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
3161}
3162static void entry_vkCmdEndConditionalRenderingEXT(
3163 VkCommandBuffer commandBuffer)
3164{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003165 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003166 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003167 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003168 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
3169}
3170#endif
3171#ifdef VK_NVX_device_generated_commands
3172static void entry_vkCmdProcessCommandsNVX(
3173 VkCommandBuffer commandBuffer,
3174 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
3175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003176 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
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->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
3180}
3181static void entry_vkCmdReserveSpaceForCommandsNVX(
3182 VkCommandBuffer commandBuffer,
3183 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
3184{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003185 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003186 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003187 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003188 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
3189}
3190static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
3191 VkDevice device,
3192 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
3193 const VkAllocationCallbacks* pAllocator,
3194 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
3195{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003196 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003197 auto vkEnc = HostConnection::get()->vkEncoder();
3198 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
3199 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
3200 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
3201}
3202static void entry_vkDestroyIndirectCommandsLayoutNVX(
3203 VkDevice device,
3204 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
3205 const VkAllocationCallbacks* pAllocator)
3206{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003207 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003208 auto vkEnc = HostConnection::get()->vkEncoder();
3209 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
3210}
3211static VkResult entry_vkCreateObjectTableNVX(
3212 VkDevice device,
3213 const VkObjectTableCreateInfoNVX* pCreateInfo,
3214 const VkAllocationCallbacks* pAllocator,
3215 VkObjectTableNVX* pObjectTable)
3216{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003217 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003218 auto vkEnc = HostConnection::get()->vkEncoder();
3219 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
3220 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
3221 return vkCreateObjectTableNVX_VkResult_return;
3222}
3223static void entry_vkDestroyObjectTableNVX(
3224 VkDevice device,
3225 VkObjectTableNVX objectTable,
3226 const VkAllocationCallbacks* pAllocator)
3227{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003228 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003229 auto vkEnc = HostConnection::get()->vkEncoder();
3230 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
3231}
3232static VkResult entry_vkRegisterObjectsNVX(
3233 VkDevice device,
3234 VkObjectTableNVX objectTable,
3235 uint32_t objectCount,
3236 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
3237 const uint32_t* pObjectIndices)
3238{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003239 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003240 auto vkEnc = HostConnection::get()->vkEncoder();
3241 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
3242 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
3243 return vkRegisterObjectsNVX_VkResult_return;
3244}
3245static VkResult entry_vkUnregisterObjectsNVX(
3246 VkDevice device,
3247 VkObjectTableNVX objectTable,
3248 uint32_t objectCount,
3249 const VkObjectEntryTypeNVX* pObjectEntryTypes,
3250 const uint32_t* pObjectIndices)
3251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003252 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003253 auto vkEnc = HostConnection::get()->vkEncoder();
3254 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
3255 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
3256 return vkUnregisterObjectsNVX_VkResult_return;
3257}
3258static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
3259 VkPhysicalDevice physicalDevice,
3260 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
3261 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
3262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003263 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003264 auto vkEnc = HostConnection::get()->vkEncoder();
3265 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
3266}
3267#endif
3268#ifdef VK_NV_clip_space_w_scaling
3269static void entry_vkCmdSetViewportWScalingNV(
3270 VkCommandBuffer commandBuffer,
3271 uint32_t firstViewport,
3272 uint32_t viewportCount,
3273 const VkViewportWScalingNV* pViewportWScalings)
3274{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003275 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003276 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003277 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003278 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
3279}
3280#endif
3281#ifdef VK_EXT_direct_mode_display
3282static VkResult entry_vkReleaseDisplayEXT(
3283 VkPhysicalDevice physicalDevice,
3284 VkDisplayKHR display)
3285{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003286 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003287 auto vkEnc = HostConnection::get()->vkEncoder();
3288 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
3289 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
3290 return vkReleaseDisplayEXT_VkResult_return;
3291}
3292#endif
3293#ifdef VK_EXT_acquire_xlib_display
3294static VkResult entry_vkAcquireXlibDisplayEXT(
3295 VkPhysicalDevice physicalDevice,
3296 Display* dpy,
3297 VkDisplayKHR display)
3298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003299 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003300 auto vkEnc = HostConnection::get()->vkEncoder();
3301 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
3302 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
3303 return vkAcquireXlibDisplayEXT_VkResult_return;
3304}
3305static VkResult entry_vkGetRandROutputDisplayEXT(
3306 VkPhysicalDevice physicalDevice,
3307 Display* dpy,
3308 RROutput rrOutput,
3309 VkDisplayKHR* pDisplay)
3310{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003311 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003312 auto vkEnc = HostConnection::get()->vkEncoder();
3313 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
3314 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
3315 return vkGetRandROutputDisplayEXT_VkResult_return;
3316}
3317#endif
3318#ifdef VK_EXT_display_surface_counter
3319static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
3320 VkPhysicalDevice physicalDevice,
3321 VkSurfaceKHR surface,
3322 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
3323{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003324 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003325 auto vkEnc = HostConnection::get()->vkEncoder();
3326 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
3327 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
3328 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
3329}
3330#endif
3331#ifdef VK_EXT_display_control
3332static VkResult entry_vkDisplayPowerControlEXT(
3333 VkDevice device,
3334 VkDisplayKHR display,
3335 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
3336{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003337 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003338 auto vkEnc = HostConnection::get()->vkEncoder();
3339 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
3340 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
3341 return vkDisplayPowerControlEXT_VkResult_return;
3342}
3343static VkResult entry_vkRegisterDeviceEventEXT(
3344 VkDevice device,
3345 const VkDeviceEventInfoEXT* pDeviceEventInfo,
3346 const VkAllocationCallbacks* pAllocator,
3347 VkFence* pFence)
3348{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003349 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003350 auto vkEnc = HostConnection::get()->vkEncoder();
3351 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
3352 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
3353 return vkRegisterDeviceEventEXT_VkResult_return;
3354}
3355static VkResult entry_vkRegisterDisplayEventEXT(
3356 VkDevice device,
3357 VkDisplayKHR display,
3358 const VkDisplayEventInfoEXT* pDisplayEventInfo,
3359 const VkAllocationCallbacks* pAllocator,
3360 VkFence* pFence)
3361{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003362 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003363 auto vkEnc = HostConnection::get()->vkEncoder();
3364 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
3365 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
3366 return vkRegisterDisplayEventEXT_VkResult_return;
3367}
3368static VkResult entry_vkGetSwapchainCounterEXT(
3369 VkDevice device,
3370 VkSwapchainKHR swapchain,
3371 VkSurfaceCounterFlagBitsEXT counter,
3372 uint64_t* pCounterValue)
3373{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003374 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003375 auto vkEnc = HostConnection::get()->vkEncoder();
3376 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
3377 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
3378 return vkGetSwapchainCounterEXT_VkResult_return;
3379}
3380#endif
3381#ifdef VK_GOOGLE_display_timing
3382static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
3383 VkDevice device,
3384 VkSwapchainKHR swapchain,
3385 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
3386{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003387 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003388 auto vkEnc = HostConnection::get()->vkEncoder();
3389 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
3390 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
3391 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
3392}
3393static VkResult entry_vkGetPastPresentationTimingGOOGLE(
3394 VkDevice device,
3395 VkSwapchainKHR swapchain,
3396 uint32_t* pPresentationTimingCount,
3397 VkPastPresentationTimingGOOGLE* pPresentationTimings)
3398{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003399 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003400 auto vkEnc = HostConnection::get()->vkEncoder();
3401 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
3402 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
3403 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
3404}
3405#endif
3406#ifdef VK_NV_sample_mask_override_coverage
3407#endif
3408#ifdef VK_NV_geometry_shader_passthrough
3409#endif
3410#ifdef VK_NV_viewport_array2
3411#endif
3412#ifdef VK_NVX_multiview_per_view_attributes
3413#endif
3414#ifdef VK_NV_viewport_swizzle
3415#endif
3416#ifdef VK_EXT_discard_rectangles
3417static void entry_vkCmdSetDiscardRectangleEXT(
3418 VkCommandBuffer commandBuffer,
3419 uint32_t firstDiscardRectangle,
3420 uint32_t discardRectangleCount,
3421 const VkRect2D* pDiscardRectangles)
3422{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003423 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003424 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003425 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003426 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
3427}
3428#endif
3429#ifdef VK_EXT_conservative_rasterization
3430#endif
3431#ifdef VK_EXT_swapchain_colorspace
3432#endif
3433#ifdef VK_EXT_hdr_metadata
3434static void entry_vkSetHdrMetadataEXT(
3435 VkDevice device,
3436 uint32_t swapchainCount,
3437 const VkSwapchainKHR* pSwapchains,
3438 const VkHdrMetadataEXT* pMetadata)
3439{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003440 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003441 auto vkEnc = HostConnection::get()->vkEncoder();
3442 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
3443}
3444#endif
3445#ifdef VK_MVK_ios_surface
3446static VkResult entry_vkCreateIOSSurfaceMVK(
3447 VkInstance instance,
3448 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
3449 const VkAllocationCallbacks* pAllocator,
3450 VkSurfaceKHR* pSurface)
3451{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003452 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003453 auto vkEnc = HostConnection::get()->vkEncoder();
3454 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
3455 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
3456 return vkCreateIOSSurfaceMVK_VkResult_return;
3457}
3458#endif
3459#ifdef VK_MVK_macos_surface
3460static VkResult entry_vkCreateMacOSSurfaceMVK(
3461 VkInstance instance,
3462 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
3463 const VkAllocationCallbacks* pAllocator,
3464 VkSurfaceKHR* pSurface)
3465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003466 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003467 auto vkEnc = HostConnection::get()->vkEncoder();
3468 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
3469 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
3470 return vkCreateMacOSSurfaceMVK_VkResult_return;
3471}
3472#endif
3473#ifdef VK_EXT_external_memory_dma_buf
3474#endif
3475#ifdef VK_EXT_queue_family_foreign
3476#endif
3477#ifdef VK_EXT_debug_utils
3478static VkResult entry_vkSetDebugUtilsObjectNameEXT(
3479 VkDevice device,
3480 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
3481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003482 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003483 auto vkEnc = HostConnection::get()->vkEncoder();
3484 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
3485 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
3486 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
3487}
3488static VkResult entry_vkSetDebugUtilsObjectTagEXT(
3489 VkDevice device,
3490 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
3491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003492 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003493 auto vkEnc = HostConnection::get()->vkEncoder();
3494 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
3495 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
3496 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
3497}
3498static void entry_vkQueueBeginDebugUtilsLabelEXT(
3499 VkQueue queue,
3500 const VkDebugUtilsLabelEXT* pLabelInfo)
3501{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003502 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003503 auto vkEnc = HostConnection::get()->vkEncoder();
3504 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
3505}
3506static void entry_vkQueueEndDebugUtilsLabelEXT(
3507 VkQueue queue)
3508{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003509 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003510 auto vkEnc = HostConnection::get()->vkEncoder();
3511 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
3512}
3513static void entry_vkQueueInsertDebugUtilsLabelEXT(
3514 VkQueue queue,
3515 const VkDebugUtilsLabelEXT* pLabelInfo)
3516{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003517 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003518 auto vkEnc = HostConnection::get()->vkEncoder();
3519 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
3520}
3521static void entry_vkCmdBeginDebugUtilsLabelEXT(
3522 VkCommandBuffer commandBuffer,
3523 const VkDebugUtilsLabelEXT* pLabelInfo)
3524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003525 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003526 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003527 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003528 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
3529}
3530static void entry_vkCmdEndDebugUtilsLabelEXT(
3531 VkCommandBuffer commandBuffer)
3532{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003533 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003534 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003535 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003536 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
3537}
3538static void entry_vkCmdInsertDebugUtilsLabelEXT(
3539 VkCommandBuffer commandBuffer,
3540 const VkDebugUtilsLabelEXT* pLabelInfo)
3541{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003542 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003543 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003544 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003545 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
3546}
3547static VkResult entry_vkCreateDebugUtilsMessengerEXT(
3548 VkInstance instance,
3549 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
3550 const VkAllocationCallbacks* pAllocator,
3551 VkDebugUtilsMessengerEXT* pMessenger)
3552{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003553 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003554 auto vkEnc = HostConnection::get()->vkEncoder();
3555 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
3556 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
3557 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
3558}
3559static void entry_vkDestroyDebugUtilsMessengerEXT(
3560 VkInstance instance,
3561 VkDebugUtilsMessengerEXT messenger,
3562 const VkAllocationCallbacks* pAllocator)
3563{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003564 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003565 auto vkEnc = HostConnection::get()->vkEncoder();
3566 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
3567}
3568static void entry_vkSubmitDebugUtilsMessageEXT(
3569 VkInstance instance,
3570 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
3571 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
3572 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
3573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003574 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003575 auto vkEnc = HostConnection::get()->vkEncoder();
3576 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
3577}
3578#endif
3579#ifdef VK_ANDROID_external_memory_android_hardware_buffer
3580static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
3581 VkDevice device,
3582 const AHardwareBuffer* buffer,
3583 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
3584{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003585 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003586 auto vkEnc = HostConnection::get()->vkEncoder();
3587 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08003588 auto resources = ResourceTracker::get();
3589 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003590 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
3591}
3592static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
3593 VkDevice device,
3594 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
3595 AHardwareBuffer** pBuffer)
3596{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003597 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003598 auto vkEnc = HostConnection::get()->vkEncoder();
3599 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08003600 auto resources = ResourceTracker::get();
3601 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003602 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
3603}
3604#endif
3605#ifdef VK_EXT_sampler_filter_minmax
3606#endif
3607#ifdef VK_AMD_gpu_shader_int16
3608#endif
3609#ifdef VK_AMD_mixed_attachment_samples
3610#endif
3611#ifdef VK_AMD_shader_fragment_mask
3612#endif
3613#ifdef VK_EXT_shader_stencil_export
3614#endif
3615#ifdef VK_EXT_sample_locations
3616static void entry_vkCmdSetSampleLocationsEXT(
3617 VkCommandBuffer commandBuffer,
3618 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
3619{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003620 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003621 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003622 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003623 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
3624}
3625static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
3626 VkPhysicalDevice physicalDevice,
3627 VkSampleCountFlagBits samples,
3628 VkMultisamplePropertiesEXT* pMultisampleProperties)
3629{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003630 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003631 auto vkEnc = HostConnection::get()->vkEncoder();
3632 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
3633}
3634#endif
3635#ifdef VK_EXT_blend_operation_advanced
3636#endif
3637#ifdef VK_NV_fragment_coverage_to_color
3638#endif
3639#ifdef VK_NV_framebuffer_mixed_samples
3640#endif
3641#ifdef VK_NV_fill_rectangle
3642#endif
3643#ifdef VK_EXT_post_depth_coverage
3644#endif
3645#ifdef VK_EXT_validation_cache
3646static VkResult entry_vkCreateValidationCacheEXT(
3647 VkDevice device,
3648 const VkValidationCacheCreateInfoEXT* pCreateInfo,
3649 const VkAllocationCallbacks* pAllocator,
3650 VkValidationCacheEXT* pValidationCache)
3651{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003652 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003653 auto vkEnc = HostConnection::get()->vkEncoder();
3654 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
3655 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
3656 return vkCreateValidationCacheEXT_VkResult_return;
3657}
3658static void entry_vkDestroyValidationCacheEXT(
3659 VkDevice device,
3660 VkValidationCacheEXT validationCache,
3661 const VkAllocationCallbacks* pAllocator)
3662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003663 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003664 auto vkEnc = HostConnection::get()->vkEncoder();
3665 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
3666}
3667static VkResult entry_vkMergeValidationCachesEXT(
3668 VkDevice device,
3669 VkValidationCacheEXT dstCache,
3670 uint32_t srcCacheCount,
3671 const VkValidationCacheEXT* pSrcCaches)
3672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003673 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003674 auto vkEnc = HostConnection::get()->vkEncoder();
3675 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
3676 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
3677 return vkMergeValidationCachesEXT_VkResult_return;
3678}
3679static VkResult entry_vkGetValidationCacheDataEXT(
3680 VkDevice device,
3681 VkValidationCacheEXT validationCache,
3682 size_t* pDataSize,
3683 void* pData)
3684{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003685 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003686 auto vkEnc = HostConnection::get()->vkEncoder();
3687 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
3688 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
3689 return vkGetValidationCacheDataEXT_VkResult_return;
3690}
3691#endif
3692#ifdef VK_EXT_descriptor_indexing
3693#endif
3694#ifdef VK_EXT_shader_viewport_index_layer
3695#endif
3696#ifdef VK_EXT_global_priority
3697#endif
3698#ifdef VK_EXT_external_memory_host
3699static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
3700 VkDevice device,
3701 VkExternalMemoryHandleTypeFlagBits handleType,
3702 const void* pHostPointer,
3703 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
3704{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003705 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003706 auto vkEnc = HostConnection::get()->vkEncoder();
3707 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
3708 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
3709 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
3710}
3711#endif
3712#ifdef VK_AMD_buffer_marker
3713static void entry_vkCmdWriteBufferMarkerAMD(
3714 VkCommandBuffer commandBuffer,
3715 VkPipelineStageFlagBits pipelineStage,
3716 VkBuffer dstBuffer,
3717 VkDeviceSize dstOffset,
3718 uint32_t marker)
3719{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003720 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003721 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003722 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003723 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
3724}
3725#endif
3726#ifdef VK_AMD_shader_core_properties
3727#endif
3728#ifdef VK_EXT_vertex_attribute_divisor
3729#endif
3730#ifdef VK_NV_shader_subgroup_partitioned
3731#endif
3732#ifdef VK_NV_device_diagnostic_checkpoints
3733static void entry_vkCmdSetCheckpointNV(
3734 VkCommandBuffer commandBuffer,
3735 const void* pCheckpointMarker)
3736{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003737 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003738 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003739 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003740 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
3741}
3742static void entry_vkGetQueueCheckpointDataNV(
3743 VkQueue queue,
3744 uint32_t* pCheckpointDataCount,
3745 VkCheckpointDataNV* pCheckpointData)
3746{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003747 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003748 auto vkEnc = HostConnection::get()->vkEncoder();
3749 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
3750}
3751#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08003752#ifdef VK_GOOGLE_address_space
3753static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
3754 VkDevice device,
3755 VkDeviceMemory memory,
3756 uint64_t* pAddress)
3757{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003758 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08003759 auto vkEnc = HostConnection::get()->vkEncoder();
3760 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
3761 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
3762 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
3763}
3764#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08003765#ifdef VK_GOOGLE_color_buffer
3766static VkResult entry_vkRegisterImageColorBufferGOOGLE(
3767 VkDevice device,
3768 VkImage image,
3769 uint32_t colorBuffer)
3770{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003771 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08003772 auto vkEnc = HostConnection::get()->vkEncoder();
3773 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
3774 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
3775 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
3776}
3777static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
3778 VkDevice device,
3779 VkBuffer buffer,
3780 uint32_t colorBuffer)
3781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003782 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08003783 auto vkEnc = HostConnection::get()->vkEncoder();
3784 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
3785 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
3786 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
3787}
3788#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07003789#ifdef VK_GOOGLE_sized_descriptor_update_template
3790static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
3791 VkDevice device,
3792 VkDescriptorSet descriptorSet,
3793 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3794 uint32_t imageInfoCount,
3795 uint32_t bufferInfoCount,
3796 uint32_t bufferViewCount,
3797 const uint32_t* pImageInfoEntryIndices,
3798 const uint32_t* pBufferInfoEntryIndices,
3799 const uint32_t* pBufferViewEntryIndices,
3800 const VkDescriptorImageInfo* pImageInfos,
3801 const VkDescriptorBufferInfo* pBufferInfos,
3802 const VkBufferView* pBufferViews)
3803{
3804 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
3805 auto vkEnc = HostConnection::get()->vkEncoder();
3806 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
3807}
3808#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07003809#ifdef VK_GOOGLE_async_command_buffers
3810static void entry_vkBeginCommandBufferAsyncGOOGLE(
3811 VkCommandBuffer commandBuffer,
3812 const VkCommandBufferBeginInfo* pBeginInfo)
3813{
3814 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
3815 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003816 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07003817 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
3818}
3819static void entry_vkEndCommandBufferAsyncGOOGLE(
3820 VkCommandBuffer commandBuffer)
3821{
3822 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
3823 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003824 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07003825 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
3826}
3827static void entry_vkResetCommandBufferAsyncGOOGLE(
3828 VkCommandBuffer commandBuffer,
3829 VkCommandBufferResetFlags flags)
3830{
3831 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
3832 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003833 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07003834 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
3835}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003836static void entry_vkCommandBufferHostSyncGOOGLE(
3837 VkCommandBuffer commandBuffer,
3838 uint32_t needHostSync,
3839 uint32_t sequenceNumber)
3840{
3841 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
3842 auto vkEnc = HostConnection::get()->vkEncoder();
3843 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
3844 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
3845}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07003846#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00003847#ifdef VK_GOOGLE_create_resources_with_requirements
3848static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
3849 VkDevice device,
3850 const VkImageCreateInfo* pCreateInfo,
3851 const VkAllocationCallbacks* pAllocator,
3852 VkImage* pImage,
3853 VkMemoryRequirements* pMemoryRequirements)
3854{
3855 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
3856 auto vkEnc = HostConnection::get()->vkEncoder();
3857 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
3858 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
3859 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
3860}
3861static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
3862 VkDevice device,
3863 const VkBufferCreateInfo* pCreateInfo,
3864 const VkAllocationCallbacks* pAllocator,
3865 VkBuffer* pBuffer,
3866 VkMemoryRequirements* pMemoryRequirements)
3867{
3868 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
3869 auto vkEnc = HostConnection::get()->vkEncoder();
3870 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
3871 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
3872 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
3873}
3874#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003875void* goldfish_vulkan_get_proc_address(const char* name){
3876#ifdef VK_VERSION_1_0
3877 if (!strcmp(name, "vkCreateInstance"))
3878 {
3879 return (void*)entry_vkCreateInstance;
3880 }
3881 if (!strcmp(name, "vkDestroyInstance"))
3882 {
3883 return (void*)entry_vkDestroyInstance;
3884 }
3885 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
3886 {
3887 return (void*)entry_vkEnumeratePhysicalDevices;
3888 }
3889 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
3890 {
3891 return (void*)entry_vkGetPhysicalDeviceFeatures;
3892 }
3893 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
3894 {
3895 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
3896 }
3897 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
3898 {
3899 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
3900 }
3901 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
3902 {
3903 return (void*)entry_vkGetPhysicalDeviceProperties;
3904 }
3905 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
3906 {
3907 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
3908 }
3909 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
3910 {
3911 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
3912 }
3913 if (!strcmp(name, "vkGetInstanceProcAddr"))
3914 {
3915 return (void*)entry_vkGetInstanceProcAddr;
3916 }
3917 if (!strcmp(name, "vkGetDeviceProcAddr"))
3918 {
3919 return (void*)entry_vkGetDeviceProcAddr;
3920 }
3921 if (!strcmp(name, "vkCreateDevice"))
3922 {
3923 return (void*)entry_vkCreateDevice;
3924 }
3925 if (!strcmp(name, "vkDestroyDevice"))
3926 {
3927 return (void*)entry_vkDestroyDevice;
3928 }
3929 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
3930 {
3931 return (void*)entry_vkEnumerateInstanceExtensionProperties;
3932 }
3933 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
3934 {
3935 return (void*)entry_vkEnumerateDeviceExtensionProperties;
3936 }
3937 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
3938 {
3939 return (void*)entry_vkEnumerateInstanceLayerProperties;
3940 }
3941 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
3942 {
3943 return (void*)entry_vkEnumerateDeviceLayerProperties;
3944 }
3945 if (!strcmp(name, "vkGetDeviceQueue"))
3946 {
3947 return (void*)entry_vkGetDeviceQueue;
3948 }
3949 if (!strcmp(name, "vkQueueSubmit"))
3950 {
3951 return (void*)entry_vkQueueSubmit;
3952 }
3953 if (!strcmp(name, "vkQueueWaitIdle"))
3954 {
3955 return (void*)entry_vkQueueWaitIdle;
3956 }
3957 if (!strcmp(name, "vkDeviceWaitIdle"))
3958 {
3959 return (void*)entry_vkDeviceWaitIdle;
3960 }
3961 if (!strcmp(name, "vkAllocateMemory"))
3962 {
3963 return (void*)entry_vkAllocateMemory;
3964 }
3965 if (!strcmp(name, "vkFreeMemory"))
3966 {
3967 return (void*)entry_vkFreeMemory;
3968 }
3969 if (!strcmp(name, "vkMapMemory"))
3970 {
3971 return (void*)entry_vkMapMemory;
3972 }
3973 if (!strcmp(name, "vkUnmapMemory"))
3974 {
3975 return (void*)entry_vkUnmapMemory;
3976 }
3977 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
3978 {
3979 return (void*)entry_vkFlushMappedMemoryRanges;
3980 }
3981 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
3982 {
3983 return (void*)entry_vkInvalidateMappedMemoryRanges;
3984 }
3985 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
3986 {
3987 return (void*)entry_vkGetDeviceMemoryCommitment;
3988 }
3989 if (!strcmp(name, "vkBindBufferMemory"))
3990 {
3991 return (void*)entry_vkBindBufferMemory;
3992 }
3993 if (!strcmp(name, "vkBindImageMemory"))
3994 {
3995 return (void*)entry_vkBindImageMemory;
3996 }
3997 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
3998 {
3999 return (void*)entry_vkGetBufferMemoryRequirements;
4000 }
4001 if (!strcmp(name, "vkGetImageMemoryRequirements"))
4002 {
4003 return (void*)entry_vkGetImageMemoryRequirements;
4004 }
4005 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
4006 {
4007 return (void*)entry_vkGetImageSparseMemoryRequirements;
4008 }
4009 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
4010 {
4011 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
4012 }
4013 if (!strcmp(name, "vkQueueBindSparse"))
4014 {
4015 return (void*)entry_vkQueueBindSparse;
4016 }
4017 if (!strcmp(name, "vkCreateFence"))
4018 {
4019 return (void*)entry_vkCreateFence;
4020 }
4021 if (!strcmp(name, "vkDestroyFence"))
4022 {
4023 return (void*)entry_vkDestroyFence;
4024 }
4025 if (!strcmp(name, "vkResetFences"))
4026 {
4027 return (void*)entry_vkResetFences;
4028 }
4029 if (!strcmp(name, "vkGetFenceStatus"))
4030 {
4031 return (void*)entry_vkGetFenceStatus;
4032 }
4033 if (!strcmp(name, "vkWaitForFences"))
4034 {
4035 return (void*)entry_vkWaitForFences;
4036 }
4037 if (!strcmp(name, "vkCreateSemaphore"))
4038 {
4039 return (void*)entry_vkCreateSemaphore;
4040 }
4041 if (!strcmp(name, "vkDestroySemaphore"))
4042 {
4043 return (void*)entry_vkDestroySemaphore;
4044 }
4045 if (!strcmp(name, "vkCreateEvent"))
4046 {
4047 return (void*)entry_vkCreateEvent;
4048 }
4049 if (!strcmp(name, "vkDestroyEvent"))
4050 {
4051 return (void*)entry_vkDestroyEvent;
4052 }
4053 if (!strcmp(name, "vkGetEventStatus"))
4054 {
4055 return (void*)entry_vkGetEventStatus;
4056 }
4057 if (!strcmp(name, "vkSetEvent"))
4058 {
4059 return (void*)entry_vkSetEvent;
4060 }
4061 if (!strcmp(name, "vkResetEvent"))
4062 {
4063 return (void*)entry_vkResetEvent;
4064 }
4065 if (!strcmp(name, "vkCreateQueryPool"))
4066 {
4067 return (void*)entry_vkCreateQueryPool;
4068 }
4069 if (!strcmp(name, "vkDestroyQueryPool"))
4070 {
4071 return (void*)entry_vkDestroyQueryPool;
4072 }
4073 if (!strcmp(name, "vkGetQueryPoolResults"))
4074 {
4075 return (void*)entry_vkGetQueryPoolResults;
4076 }
4077 if (!strcmp(name, "vkCreateBuffer"))
4078 {
4079 return (void*)entry_vkCreateBuffer;
4080 }
4081 if (!strcmp(name, "vkDestroyBuffer"))
4082 {
4083 return (void*)entry_vkDestroyBuffer;
4084 }
4085 if (!strcmp(name, "vkCreateBufferView"))
4086 {
4087 return (void*)entry_vkCreateBufferView;
4088 }
4089 if (!strcmp(name, "vkDestroyBufferView"))
4090 {
4091 return (void*)entry_vkDestroyBufferView;
4092 }
4093 if (!strcmp(name, "vkCreateImage"))
4094 {
4095 return (void*)entry_vkCreateImage;
4096 }
4097 if (!strcmp(name, "vkDestroyImage"))
4098 {
4099 return (void*)entry_vkDestroyImage;
4100 }
4101 if (!strcmp(name, "vkGetImageSubresourceLayout"))
4102 {
4103 return (void*)entry_vkGetImageSubresourceLayout;
4104 }
4105 if (!strcmp(name, "vkCreateImageView"))
4106 {
4107 return (void*)entry_vkCreateImageView;
4108 }
4109 if (!strcmp(name, "vkDestroyImageView"))
4110 {
4111 return (void*)entry_vkDestroyImageView;
4112 }
4113 if (!strcmp(name, "vkCreateShaderModule"))
4114 {
4115 return (void*)entry_vkCreateShaderModule;
4116 }
4117 if (!strcmp(name, "vkDestroyShaderModule"))
4118 {
4119 return (void*)entry_vkDestroyShaderModule;
4120 }
4121 if (!strcmp(name, "vkCreatePipelineCache"))
4122 {
4123 return (void*)entry_vkCreatePipelineCache;
4124 }
4125 if (!strcmp(name, "vkDestroyPipelineCache"))
4126 {
4127 return (void*)entry_vkDestroyPipelineCache;
4128 }
4129 if (!strcmp(name, "vkGetPipelineCacheData"))
4130 {
4131 return (void*)entry_vkGetPipelineCacheData;
4132 }
4133 if (!strcmp(name, "vkMergePipelineCaches"))
4134 {
4135 return (void*)entry_vkMergePipelineCaches;
4136 }
4137 if (!strcmp(name, "vkCreateGraphicsPipelines"))
4138 {
4139 return (void*)entry_vkCreateGraphicsPipelines;
4140 }
4141 if (!strcmp(name, "vkCreateComputePipelines"))
4142 {
4143 return (void*)entry_vkCreateComputePipelines;
4144 }
4145 if (!strcmp(name, "vkDestroyPipeline"))
4146 {
4147 return (void*)entry_vkDestroyPipeline;
4148 }
4149 if (!strcmp(name, "vkCreatePipelineLayout"))
4150 {
4151 return (void*)entry_vkCreatePipelineLayout;
4152 }
4153 if (!strcmp(name, "vkDestroyPipelineLayout"))
4154 {
4155 return (void*)entry_vkDestroyPipelineLayout;
4156 }
4157 if (!strcmp(name, "vkCreateSampler"))
4158 {
4159 return (void*)entry_vkCreateSampler;
4160 }
4161 if (!strcmp(name, "vkDestroySampler"))
4162 {
4163 return (void*)entry_vkDestroySampler;
4164 }
4165 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
4166 {
4167 return (void*)entry_vkCreateDescriptorSetLayout;
4168 }
4169 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
4170 {
4171 return (void*)entry_vkDestroyDescriptorSetLayout;
4172 }
4173 if (!strcmp(name, "vkCreateDescriptorPool"))
4174 {
4175 return (void*)entry_vkCreateDescriptorPool;
4176 }
4177 if (!strcmp(name, "vkDestroyDescriptorPool"))
4178 {
4179 return (void*)entry_vkDestroyDescriptorPool;
4180 }
4181 if (!strcmp(name, "vkResetDescriptorPool"))
4182 {
4183 return (void*)entry_vkResetDescriptorPool;
4184 }
4185 if (!strcmp(name, "vkAllocateDescriptorSets"))
4186 {
4187 return (void*)entry_vkAllocateDescriptorSets;
4188 }
4189 if (!strcmp(name, "vkFreeDescriptorSets"))
4190 {
4191 return (void*)entry_vkFreeDescriptorSets;
4192 }
4193 if (!strcmp(name, "vkUpdateDescriptorSets"))
4194 {
4195 return (void*)entry_vkUpdateDescriptorSets;
4196 }
4197 if (!strcmp(name, "vkCreateFramebuffer"))
4198 {
4199 return (void*)entry_vkCreateFramebuffer;
4200 }
4201 if (!strcmp(name, "vkDestroyFramebuffer"))
4202 {
4203 return (void*)entry_vkDestroyFramebuffer;
4204 }
4205 if (!strcmp(name, "vkCreateRenderPass"))
4206 {
4207 return (void*)entry_vkCreateRenderPass;
4208 }
4209 if (!strcmp(name, "vkDestroyRenderPass"))
4210 {
4211 return (void*)entry_vkDestroyRenderPass;
4212 }
4213 if (!strcmp(name, "vkGetRenderAreaGranularity"))
4214 {
4215 return (void*)entry_vkGetRenderAreaGranularity;
4216 }
4217 if (!strcmp(name, "vkCreateCommandPool"))
4218 {
4219 return (void*)entry_vkCreateCommandPool;
4220 }
4221 if (!strcmp(name, "vkDestroyCommandPool"))
4222 {
4223 return (void*)entry_vkDestroyCommandPool;
4224 }
4225 if (!strcmp(name, "vkResetCommandPool"))
4226 {
4227 return (void*)entry_vkResetCommandPool;
4228 }
4229 if (!strcmp(name, "vkAllocateCommandBuffers"))
4230 {
4231 return (void*)entry_vkAllocateCommandBuffers;
4232 }
4233 if (!strcmp(name, "vkFreeCommandBuffers"))
4234 {
4235 return (void*)entry_vkFreeCommandBuffers;
4236 }
4237 if (!strcmp(name, "vkBeginCommandBuffer"))
4238 {
4239 return (void*)entry_vkBeginCommandBuffer;
4240 }
4241 if (!strcmp(name, "vkEndCommandBuffer"))
4242 {
4243 return (void*)entry_vkEndCommandBuffer;
4244 }
4245 if (!strcmp(name, "vkResetCommandBuffer"))
4246 {
4247 return (void*)entry_vkResetCommandBuffer;
4248 }
4249 if (!strcmp(name, "vkCmdBindPipeline"))
4250 {
4251 return (void*)entry_vkCmdBindPipeline;
4252 }
4253 if (!strcmp(name, "vkCmdSetViewport"))
4254 {
4255 return (void*)entry_vkCmdSetViewport;
4256 }
4257 if (!strcmp(name, "vkCmdSetScissor"))
4258 {
4259 return (void*)entry_vkCmdSetScissor;
4260 }
4261 if (!strcmp(name, "vkCmdSetLineWidth"))
4262 {
4263 return (void*)entry_vkCmdSetLineWidth;
4264 }
4265 if (!strcmp(name, "vkCmdSetDepthBias"))
4266 {
4267 return (void*)entry_vkCmdSetDepthBias;
4268 }
4269 if (!strcmp(name, "vkCmdSetBlendConstants"))
4270 {
4271 return (void*)entry_vkCmdSetBlendConstants;
4272 }
4273 if (!strcmp(name, "vkCmdSetDepthBounds"))
4274 {
4275 return (void*)entry_vkCmdSetDepthBounds;
4276 }
4277 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
4278 {
4279 return (void*)entry_vkCmdSetStencilCompareMask;
4280 }
4281 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
4282 {
4283 return (void*)entry_vkCmdSetStencilWriteMask;
4284 }
4285 if (!strcmp(name, "vkCmdSetStencilReference"))
4286 {
4287 return (void*)entry_vkCmdSetStencilReference;
4288 }
4289 if (!strcmp(name, "vkCmdBindDescriptorSets"))
4290 {
4291 return (void*)entry_vkCmdBindDescriptorSets;
4292 }
4293 if (!strcmp(name, "vkCmdBindIndexBuffer"))
4294 {
4295 return (void*)entry_vkCmdBindIndexBuffer;
4296 }
4297 if (!strcmp(name, "vkCmdBindVertexBuffers"))
4298 {
4299 return (void*)entry_vkCmdBindVertexBuffers;
4300 }
4301 if (!strcmp(name, "vkCmdDraw"))
4302 {
4303 return (void*)entry_vkCmdDraw;
4304 }
4305 if (!strcmp(name, "vkCmdDrawIndexed"))
4306 {
4307 return (void*)entry_vkCmdDrawIndexed;
4308 }
4309 if (!strcmp(name, "vkCmdDrawIndirect"))
4310 {
4311 return (void*)entry_vkCmdDrawIndirect;
4312 }
4313 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
4314 {
4315 return (void*)entry_vkCmdDrawIndexedIndirect;
4316 }
4317 if (!strcmp(name, "vkCmdDispatch"))
4318 {
4319 return (void*)entry_vkCmdDispatch;
4320 }
4321 if (!strcmp(name, "vkCmdDispatchIndirect"))
4322 {
4323 return (void*)entry_vkCmdDispatchIndirect;
4324 }
4325 if (!strcmp(name, "vkCmdCopyBuffer"))
4326 {
4327 return (void*)entry_vkCmdCopyBuffer;
4328 }
4329 if (!strcmp(name, "vkCmdCopyImage"))
4330 {
4331 return (void*)entry_vkCmdCopyImage;
4332 }
4333 if (!strcmp(name, "vkCmdBlitImage"))
4334 {
4335 return (void*)entry_vkCmdBlitImage;
4336 }
4337 if (!strcmp(name, "vkCmdCopyBufferToImage"))
4338 {
4339 return (void*)entry_vkCmdCopyBufferToImage;
4340 }
4341 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
4342 {
4343 return (void*)entry_vkCmdCopyImageToBuffer;
4344 }
4345 if (!strcmp(name, "vkCmdUpdateBuffer"))
4346 {
4347 return (void*)entry_vkCmdUpdateBuffer;
4348 }
4349 if (!strcmp(name, "vkCmdFillBuffer"))
4350 {
4351 return (void*)entry_vkCmdFillBuffer;
4352 }
4353 if (!strcmp(name, "vkCmdClearColorImage"))
4354 {
4355 return (void*)entry_vkCmdClearColorImage;
4356 }
4357 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
4358 {
4359 return (void*)entry_vkCmdClearDepthStencilImage;
4360 }
4361 if (!strcmp(name, "vkCmdClearAttachments"))
4362 {
4363 return (void*)entry_vkCmdClearAttachments;
4364 }
4365 if (!strcmp(name, "vkCmdResolveImage"))
4366 {
4367 return (void*)entry_vkCmdResolveImage;
4368 }
4369 if (!strcmp(name, "vkCmdSetEvent"))
4370 {
4371 return (void*)entry_vkCmdSetEvent;
4372 }
4373 if (!strcmp(name, "vkCmdResetEvent"))
4374 {
4375 return (void*)entry_vkCmdResetEvent;
4376 }
4377 if (!strcmp(name, "vkCmdWaitEvents"))
4378 {
4379 return (void*)entry_vkCmdWaitEvents;
4380 }
4381 if (!strcmp(name, "vkCmdPipelineBarrier"))
4382 {
4383 return (void*)entry_vkCmdPipelineBarrier;
4384 }
4385 if (!strcmp(name, "vkCmdBeginQuery"))
4386 {
4387 return (void*)entry_vkCmdBeginQuery;
4388 }
4389 if (!strcmp(name, "vkCmdEndQuery"))
4390 {
4391 return (void*)entry_vkCmdEndQuery;
4392 }
4393 if (!strcmp(name, "vkCmdResetQueryPool"))
4394 {
4395 return (void*)entry_vkCmdResetQueryPool;
4396 }
4397 if (!strcmp(name, "vkCmdWriteTimestamp"))
4398 {
4399 return (void*)entry_vkCmdWriteTimestamp;
4400 }
4401 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
4402 {
4403 return (void*)entry_vkCmdCopyQueryPoolResults;
4404 }
4405 if (!strcmp(name, "vkCmdPushConstants"))
4406 {
4407 return (void*)entry_vkCmdPushConstants;
4408 }
4409 if (!strcmp(name, "vkCmdBeginRenderPass"))
4410 {
4411 return (void*)entry_vkCmdBeginRenderPass;
4412 }
4413 if (!strcmp(name, "vkCmdNextSubpass"))
4414 {
4415 return (void*)entry_vkCmdNextSubpass;
4416 }
4417 if (!strcmp(name, "vkCmdEndRenderPass"))
4418 {
4419 return (void*)entry_vkCmdEndRenderPass;
4420 }
4421 if (!strcmp(name, "vkCmdExecuteCommands"))
4422 {
4423 return (void*)entry_vkCmdExecuteCommands;
4424 }
4425#endif
4426#ifdef VK_VERSION_1_1
4427 if (!strcmp(name, "vkEnumerateInstanceVersion"))
4428 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004429 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004430 }
4431 if (!strcmp(name, "vkBindBufferMemory2"))
4432 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004433 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004434 }
4435 if (!strcmp(name, "vkBindImageMemory2"))
4436 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004437 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004438 }
4439 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
4440 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004441 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004442 }
4443 if (!strcmp(name, "vkCmdSetDeviceMask"))
4444 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004445 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004446 }
4447 if (!strcmp(name, "vkCmdDispatchBase"))
4448 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004449 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004450 }
4451 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
4452 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08004453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004454 }
4455 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
4456 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004457 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004458 }
4459 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
4460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004462 }
4463 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
4464 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004465 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004466 }
4467 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
4468 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004469 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004470 }
4471 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
4472 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004473 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004474 }
4475 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
4476 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004477 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004478 }
4479 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
4480 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004481 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004482 }
4483 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
4484 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004485 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004486 }
4487 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
4488 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004489 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004490 }
4491 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
4492 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004493 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004494 }
4495 if (!strcmp(name, "vkTrimCommandPool"))
4496 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004497 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004498 }
4499 if (!strcmp(name, "vkGetDeviceQueue2"))
4500 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004501 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004502 }
4503 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
4504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004506 }
4507 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
4508 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004509 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004510 }
4511 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
4512 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004513 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004514 }
4515 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
4516 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004517 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004518 }
4519 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
4520 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004521 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004522 }
4523 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
4524 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004525 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004526 }
4527 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
4528 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004529 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004530 }
4531 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
4532 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004533 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004534 }
4535 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
4536 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004537 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004538 }
4539#endif
4540#ifdef VK_KHR_surface
4541 if (!strcmp(name, "vkDestroySurfaceKHR"))
4542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004544 }
4545 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
4546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004548 }
4549 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
4550 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004551 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004552 }
4553 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
4554 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004555 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004556 }
4557 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
4558 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004559 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004560 }
4561#endif
4562#ifdef VK_KHR_swapchain
4563 if (!strcmp(name, "vkCreateSwapchainKHR"))
4564 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004565 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004566 }
4567 if (!strcmp(name, "vkDestroySwapchainKHR"))
4568 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004569 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004570 }
4571 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
4572 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004573 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004574 }
4575 if (!strcmp(name, "vkAcquireNextImageKHR"))
4576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004578 }
4579 if (!strcmp(name, "vkQueuePresentKHR"))
4580 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004581 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004582 }
4583 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
4584 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004585 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004586 }
4587 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
4588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004590 }
4591 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
4592 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004593 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004594 }
4595 if (!strcmp(name, "vkAcquireNextImage2KHR"))
4596 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004597 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004598 }
4599#endif
4600#ifdef VK_KHR_display
4601 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
4602 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004603 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004604 }
4605 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
4606 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004607 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004608 }
4609 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
4610 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004611 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004612 }
4613 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
4614 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004615 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004616 }
4617 if (!strcmp(name, "vkCreateDisplayModeKHR"))
4618 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004619 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004620 }
4621 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
4622 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004623 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004624 }
4625 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
4626 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004627 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004628 }
4629#endif
4630#ifdef VK_KHR_display_swapchain
4631 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
4632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004634 }
4635#endif
4636#ifdef VK_KHR_xlib_surface
4637 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
4638 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004639 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004640 }
4641 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
4642 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004643 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004644 }
4645#endif
4646#ifdef VK_KHR_xcb_surface
4647 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
4648 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004649 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004650 }
4651 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
4652 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004653 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004654 }
4655#endif
4656#ifdef VK_KHR_wayland_surface
4657 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
4658 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004659 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004660 }
4661 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
4662 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004663 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004664 }
4665#endif
4666#ifdef VK_KHR_mir_surface
4667 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
4668 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004669 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004670 }
4671 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
4672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004673 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004674 }
4675#endif
4676#ifdef VK_KHR_android_surface
4677 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
4678 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004679 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004680 }
4681#endif
4682#ifdef VK_KHR_win32_surface
4683 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
4684 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004685 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004686 }
4687 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
4688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004690 }
4691#endif
4692#ifdef VK_KHR_get_physical_device_properties2
4693 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
4694 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004695 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004696 }
4697 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
4698 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004699 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004700 }
4701 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
4702 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004703 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004704 }
4705 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
4706 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004707 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004708 }
4709 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
4710 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004711 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004712 }
4713 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
4714 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004715 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004716 }
4717 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
4718 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004719 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004720 }
4721#endif
4722#ifdef VK_KHR_device_group
4723 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
4724 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004725 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004726 }
4727 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
4728 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004729 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004730 }
4731 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
4732 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004733 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004734 }
4735#endif
4736#ifdef VK_KHR_maintenance1
4737 if (!strcmp(name, "vkTrimCommandPoolKHR"))
4738 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004739 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004740 }
4741#endif
4742#ifdef VK_KHR_device_group_creation
4743 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
4744 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004745 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004746 }
4747#endif
4748#ifdef VK_KHR_external_memory_capabilities
4749 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
4750 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004751 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004752 }
4753#endif
4754#ifdef VK_KHR_external_memory_win32
4755 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
4756 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004757 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004758 }
4759 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
4760 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004761 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004762 }
4763#endif
4764#ifdef VK_KHR_external_memory_fd
4765 if (!strcmp(name, "vkGetMemoryFdKHR"))
4766 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004767 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004768 }
4769 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
4770 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004771 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004772 }
4773#endif
4774#ifdef VK_KHR_external_semaphore_capabilities
4775 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
4776 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004777 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004778 }
4779#endif
4780#ifdef VK_KHR_external_semaphore_win32
4781 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
4782 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004783 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004784 }
4785 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
4786 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004787 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004788 }
4789#endif
4790#ifdef VK_KHR_external_semaphore_fd
4791 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
4792 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004793 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004794 }
4795 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
4796 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004797 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004798 }
4799#endif
4800#ifdef VK_KHR_push_descriptor
4801 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
4802 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004803 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004804 }
4805 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
4806 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004807 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004808 }
4809#endif
4810#ifdef VK_KHR_descriptor_update_template
4811 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
4812 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004813 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004814 }
4815 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
4816 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004817 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004818 }
4819 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
4820 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004821 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004822 }
4823#endif
4824#ifdef VK_KHR_create_renderpass2
4825 if (!strcmp(name, "vkCreateRenderPass2KHR"))
4826 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004827 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004828 }
4829 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
4830 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004831 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004832 }
4833 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
4834 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004835 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004836 }
4837 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
4838 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004839 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004840 }
4841#endif
4842#ifdef VK_KHR_shared_presentable_image
4843 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
4844 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004845 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004846 }
4847#endif
4848#ifdef VK_KHR_external_fence_capabilities
4849 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
4850 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004851 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004852 }
4853#endif
4854#ifdef VK_KHR_external_fence_win32
4855 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
4856 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004857 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004858 }
4859 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
4860 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004861 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004862 }
4863#endif
4864#ifdef VK_KHR_external_fence_fd
4865 if (!strcmp(name, "vkImportFenceFdKHR"))
4866 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004867 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004868 }
4869 if (!strcmp(name, "vkGetFenceFdKHR"))
4870 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004871 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004872 }
4873#endif
4874#ifdef VK_KHR_get_surface_capabilities2
4875 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
4876 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004877 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004878 }
4879 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
4880 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004881 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004882 }
4883#endif
4884#ifdef VK_KHR_get_display_properties2
4885 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
4886 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004887 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004888 }
4889 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
4890 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004891 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004892 }
4893 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
4894 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004895 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004896 }
4897 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
4898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004900 }
4901#endif
4902#ifdef VK_KHR_get_memory_requirements2
4903 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
4904 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004905 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004906 }
4907 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
4908 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004909 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004910 }
4911 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
4912 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004913 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004914 }
4915#endif
4916#ifdef VK_KHR_sampler_ycbcr_conversion
4917 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
4918 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004920 }
4921 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
4922 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004923 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004924 }
4925#endif
4926#ifdef VK_KHR_bind_memory2
4927 if (!strcmp(name, "vkBindBufferMemory2KHR"))
4928 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004929 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004930 }
4931 if (!strcmp(name, "vkBindImageMemory2KHR"))
4932 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004933 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004934 }
4935#endif
4936#ifdef VK_KHR_maintenance3
4937 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
4938 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004939 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004940 }
4941#endif
4942#ifdef VK_KHR_draw_indirect_count
4943 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
4944 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004945 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004946 }
4947 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
4948 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004949 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004950 }
4951#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08004952#ifdef VK_ANDROID_native_buffer
4953 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
4954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004955 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08004956 }
4957 if (!strcmp(name, "vkAcquireImageANDROID"))
4958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004959 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08004960 }
4961 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
4962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004963 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08004964 }
4965#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004966#ifdef VK_EXT_debug_report
4967 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
4968 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004969 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004970 }
4971 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
4972 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004973 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004974 }
4975 if (!strcmp(name, "vkDebugReportMessageEXT"))
4976 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004977 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004978 }
4979#endif
4980#ifdef VK_EXT_debug_marker
4981 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
4982 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004983 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004984 }
4985 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
4986 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004987 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004988 }
4989 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
4990 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004991 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004992 }
4993 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
4994 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004995 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004996 }
4997 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
4998 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08004999 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005000 }
5001#endif
5002#ifdef VK_AMD_draw_indirect_count
5003 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
5004 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005005 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005006 }
5007 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
5008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005010 }
5011#endif
5012#ifdef VK_AMD_shader_info
5013 if (!strcmp(name, "vkGetShaderInfoAMD"))
5014 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005015 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005016 }
5017#endif
5018#ifdef VK_NV_external_memory_capabilities
5019 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
5020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005022 }
5023#endif
5024#ifdef VK_NV_external_memory_win32
5025 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
5026 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005027 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005028 }
5029#endif
5030#ifdef VK_NN_vi_surface
5031 if (!strcmp(name, "vkCreateViSurfaceNN"))
5032 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005033 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005034 }
5035#endif
5036#ifdef VK_EXT_conditional_rendering
5037 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
5038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005040 }
5041 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
5042 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005043 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005044 }
5045#endif
5046#ifdef VK_NVX_device_generated_commands
5047 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
5048 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005049 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005050 }
5051 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
5052 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005053 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005054 }
5055 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
5056 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005057 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005058 }
5059 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
5060 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005061 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005062 }
5063 if (!strcmp(name, "vkCreateObjectTableNVX"))
5064 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005065 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005066 }
5067 if (!strcmp(name, "vkDestroyObjectTableNVX"))
5068 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005069 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005070 }
5071 if (!strcmp(name, "vkRegisterObjectsNVX"))
5072 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005073 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005074 }
5075 if (!strcmp(name, "vkUnregisterObjectsNVX"))
5076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005078 }
5079 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
5080 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005081 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005082 }
5083#endif
5084#ifdef VK_NV_clip_space_w_scaling
5085 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
5086 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005087 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005088 }
5089#endif
5090#ifdef VK_EXT_direct_mode_display
5091 if (!strcmp(name, "vkReleaseDisplayEXT"))
5092 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005093 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005094 }
5095#endif
5096#ifdef VK_EXT_acquire_xlib_display
5097 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
5098 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005099 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005100 }
5101 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
5102 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005103 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005104 }
5105#endif
5106#ifdef VK_EXT_display_surface_counter
5107 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
5108 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005109 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005110 }
5111#endif
5112#ifdef VK_EXT_display_control
5113 if (!strcmp(name, "vkDisplayPowerControlEXT"))
5114 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005115 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005116 }
5117 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
5118 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005119 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005120 }
5121 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
5122 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005123 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005124 }
5125 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
5126 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005127 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005128 }
5129#endif
5130#ifdef VK_GOOGLE_display_timing
5131 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
5132 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005133 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005134 }
5135 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
5136 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005137 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005138 }
5139#endif
5140#ifdef VK_EXT_discard_rectangles
5141 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
5142 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005143 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005144 }
5145#endif
5146#ifdef VK_EXT_hdr_metadata
5147 if (!strcmp(name, "vkSetHdrMetadataEXT"))
5148 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005149 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005150 }
5151#endif
5152#ifdef VK_MVK_ios_surface
5153 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
5154 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005155 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005156 }
5157#endif
5158#ifdef VK_MVK_macos_surface
5159 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
5160 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005161 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005162 }
5163#endif
5164#ifdef VK_EXT_debug_utils
5165 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
5166 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005167 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005168 }
5169 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
5170 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005171 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005172 }
5173 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
5174 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005175 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005176 }
5177 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
5178 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005179 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005180 }
5181 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
5182 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005183 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005184 }
5185 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
5186 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005187 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005188 }
5189 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
5190 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005191 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005192 }
5193 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
5194 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005195 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005196 }
5197 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
5198 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005199 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005200 }
5201 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
5202 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005203 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005204 }
5205 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
5206 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005207 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005208 }
5209#endif
5210#ifdef VK_ANDROID_external_memory_android_hardware_buffer
5211 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
5212 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005213 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005214 }
5215 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
5216 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005217 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005218 }
5219#endif
5220#ifdef VK_EXT_sample_locations
5221 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
5222 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005223 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005224 }
5225 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
5226 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005227 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005228 }
5229#endif
5230#ifdef VK_EXT_validation_cache
5231 if (!strcmp(name, "vkCreateValidationCacheEXT"))
5232 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005233 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005234 }
5235 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
5236 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005237 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005238 }
5239 if (!strcmp(name, "vkMergeValidationCachesEXT"))
5240 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005241 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005242 }
5243 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
5244 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005245 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005246 }
5247#endif
5248#ifdef VK_EXT_external_memory_host
5249 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
5250 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005251 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005252 }
5253#endif
5254#ifdef VK_AMD_buffer_marker
5255 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
5256 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005257 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005258 }
5259#endif
5260#ifdef VK_NV_device_diagnostic_checkpoints
5261 if (!strcmp(name, "vkCmdSetCheckpointNV"))
5262 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005263 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005264 }
5265 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
5266 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005267 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005268 }
5269#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005270#ifdef VK_GOOGLE_address_space
5271 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
5272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005273 return nullptr;
5274 }
5275#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005276#ifdef VK_GOOGLE_color_buffer
5277 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
5278 {
5279 return nullptr;
5280 }
5281 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
5282 {
5283 return nullptr;
5284 }
5285#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005286#ifdef VK_GOOGLE_sized_descriptor_update_template
5287 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
5288 {
5289 return nullptr;
5290 }
5291#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005292#ifdef VK_GOOGLE_async_command_buffers
5293 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
5294 {
5295 return nullptr;
5296 }
5297 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
5298 {
5299 return nullptr;
5300 }
5301 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
5302 {
5303 return nullptr;
5304 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005305 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
5306 {
5307 return nullptr;
5308 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005309#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005310#ifdef VK_GOOGLE_create_resources_with_requirements
5311 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
5312 {
5313 return nullptr;
5314 }
5315 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
5316 {
5317 return nullptr;
5318 }
5319#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005320 return nullptr;
5321}
5322void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
5323 auto resources = ResourceTracker::get();
5324 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
5325#ifdef VK_VERSION_1_0
5326 if (!strcmp(name, "vkCreateInstance"))
5327 {
5328 return (void*)entry_vkCreateInstance;
5329 }
5330 if (!strcmp(name, "vkDestroyInstance"))
5331 {
5332 return (void*)entry_vkDestroyInstance;
5333 }
5334 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5335 {
5336 return (void*)entry_vkEnumeratePhysicalDevices;
5337 }
5338 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5339 {
5340 return (void*)entry_vkGetPhysicalDeviceFeatures;
5341 }
5342 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5343 {
5344 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5345 }
5346 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5347 {
5348 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5349 }
5350 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5351 {
5352 return (void*)entry_vkGetPhysicalDeviceProperties;
5353 }
5354 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5355 {
5356 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5357 }
5358 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5359 {
5360 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5361 }
5362 if (!strcmp(name, "vkGetInstanceProcAddr"))
5363 {
5364 return (void*)entry_vkGetInstanceProcAddr;
5365 }
5366 if (!strcmp(name, "vkGetDeviceProcAddr"))
5367 {
5368 return (void*)entry_vkGetDeviceProcAddr;
5369 }
5370 if (!strcmp(name, "vkCreateDevice"))
5371 {
5372 return (void*)entry_vkCreateDevice;
5373 }
5374 if (!strcmp(name, "vkDestroyDevice"))
5375 {
5376 return (void*)entry_vkDestroyDevice;
5377 }
5378 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5379 {
5380 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5381 }
5382 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5383 {
5384 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5385 }
5386 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5387 {
5388 return (void*)entry_vkEnumerateInstanceLayerProperties;
5389 }
5390 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5391 {
5392 return (void*)entry_vkEnumerateDeviceLayerProperties;
5393 }
5394 if (!strcmp(name, "vkGetDeviceQueue"))
5395 {
5396 return (void*)entry_vkGetDeviceQueue;
5397 }
5398 if (!strcmp(name, "vkQueueSubmit"))
5399 {
5400 return (void*)entry_vkQueueSubmit;
5401 }
5402 if (!strcmp(name, "vkQueueWaitIdle"))
5403 {
5404 return (void*)entry_vkQueueWaitIdle;
5405 }
5406 if (!strcmp(name, "vkDeviceWaitIdle"))
5407 {
5408 return (void*)entry_vkDeviceWaitIdle;
5409 }
5410 if (!strcmp(name, "vkAllocateMemory"))
5411 {
5412 return (void*)entry_vkAllocateMemory;
5413 }
5414 if (!strcmp(name, "vkFreeMemory"))
5415 {
5416 return (void*)entry_vkFreeMemory;
5417 }
5418 if (!strcmp(name, "vkMapMemory"))
5419 {
5420 return (void*)entry_vkMapMemory;
5421 }
5422 if (!strcmp(name, "vkUnmapMemory"))
5423 {
5424 return (void*)entry_vkUnmapMemory;
5425 }
5426 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5427 {
5428 return (void*)entry_vkFlushMappedMemoryRanges;
5429 }
5430 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5431 {
5432 return (void*)entry_vkInvalidateMappedMemoryRanges;
5433 }
5434 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5435 {
5436 return (void*)entry_vkGetDeviceMemoryCommitment;
5437 }
5438 if (!strcmp(name, "vkBindBufferMemory"))
5439 {
5440 return (void*)entry_vkBindBufferMemory;
5441 }
5442 if (!strcmp(name, "vkBindImageMemory"))
5443 {
5444 return (void*)entry_vkBindImageMemory;
5445 }
5446 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5447 {
5448 return (void*)entry_vkGetBufferMemoryRequirements;
5449 }
5450 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5451 {
5452 return (void*)entry_vkGetImageMemoryRequirements;
5453 }
5454 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5455 {
5456 return (void*)entry_vkGetImageSparseMemoryRequirements;
5457 }
5458 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5459 {
5460 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5461 }
5462 if (!strcmp(name, "vkQueueBindSparse"))
5463 {
5464 return (void*)entry_vkQueueBindSparse;
5465 }
5466 if (!strcmp(name, "vkCreateFence"))
5467 {
5468 return (void*)entry_vkCreateFence;
5469 }
5470 if (!strcmp(name, "vkDestroyFence"))
5471 {
5472 return (void*)entry_vkDestroyFence;
5473 }
5474 if (!strcmp(name, "vkResetFences"))
5475 {
5476 return (void*)entry_vkResetFences;
5477 }
5478 if (!strcmp(name, "vkGetFenceStatus"))
5479 {
5480 return (void*)entry_vkGetFenceStatus;
5481 }
5482 if (!strcmp(name, "vkWaitForFences"))
5483 {
5484 return (void*)entry_vkWaitForFences;
5485 }
5486 if (!strcmp(name, "vkCreateSemaphore"))
5487 {
5488 return (void*)entry_vkCreateSemaphore;
5489 }
5490 if (!strcmp(name, "vkDestroySemaphore"))
5491 {
5492 return (void*)entry_vkDestroySemaphore;
5493 }
5494 if (!strcmp(name, "vkCreateEvent"))
5495 {
5496 return (void*)entry_vkCreateEvent;
5497 }
5498 if (!strcmp(name, "vkDestroyEvent"))
5499 {
5500 return (void*)entry_vkDestroyEvent;
5501 }
5502 if (!strcmp(name, "vkGetEventStatus"))
5503 {
5504 return (void*)entry_vkGetEventStatus;
5505 }
5506 if (!strcmp(name, "vkSetEvent"))
5507 {
5508 return (void*)entry_vkSetEvent;
5509 }
5510 if (!strcmp(name, "vkResetEvent"))
5511 {
5512 return (void*)entry_vkResetEvent;
5513 }
5514 if (!strcmp(name, "vkCreateQueryPool"))
5515 {
5516 return (void*)entry_vkCreateQueryPool;
5517 }
5518 if (!strcmp(name, "vkDestroyQueryPool"))
5519 {
5520 return (void*)entry_vkDestroyQueryPool;
5521 }
5522 if (!strcmp(name, "vkGetQueryPoolResults"))
5523 {
5524 return (void*)entry_vkGetQueryPoolResults;
5525 }
5526 if (!strcmp(name, "vkCreateBuffer"))
5527 {
5528 return (void*)entry_vkCreateBuffer;
5529 }
5530 if (!strcmp(name, "vkDestroyBuffer"))
5531 {
5532 return (void*)entry_vkDestroyBuffer;
5533 }
5534 if (!strcmp(name, "vkCreateBufferView"))
5535 {
5536 return (void*)entry_vkCreateBufferView;
5537 }
5538 if (!strcmp(name, "vkDestroyBufferView"))
5539 {
5540 return (void*)entry_vkDestroyBufferView;
5541 }
5542 if (!strcmp(name, "vkCreateImage"))
5543 {
5544 return (void*)entry_vkCreateImage;
5545 }
5546 if (!strcmp(name, "vkDestroyImage"))
5547 {
5548 return (void*)entry_vkDestroyImage;
5549 }
5550 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5551 {
5552 return (void*)entry_vkGetImageSubresourceLayout;
5553 }
5554 if (!strcmp(name, "vkCreateImageView"))
5555 {
5556 return (void*)entry_vkCreateImageView;
5557 }
5558 if (!strcmp(name, "vkDestroyImageView"))
5559 {
5560 return (void*)entry_vkDestroyImageView;
5561 }
5562 if (!strcmp(name, "vkCreateShaderModule"))
5563 {
5564 return (void*)entry_vkCreateShaderModule;
5565 }
5566 if (!strcmp(name, "vkDestroyShaderModule"))
5567 {
5568 return (void*)entry_vkDestroyShaderModule;
5569 }
5570 if (!strcmp(name, "vkCreatePipelineCache"))
5571 {
5572 return (void*)entry_vkCreatePipelineCache;
5573 }
5574 if (!strcmp(name, "vkDestroyPipelineCache"))
5575 {
5576 return (void*)entry_vkDestroyPipelineCache;
5577 }
5578 if (!strcmp(name, "vkGetPipelineCacheData"))
5579 {
5580 return (void*)entry_vkGetPipelineCacheData;
5581 }
5582 if (!strcmp(name, "vkMergePipelineCaches"))
5583 {
5584 return (void*)entry_vkMergePipelineCaches;
5585 }
5586 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5587 {
5588 return (void*)entry_vkCreateGraphicsPipelines;
5589 }
5590 if (!strcmp(name, "vkCreateComputePipelines"))
5591 {
5592 return (void*)entry_vkCreateComputePipelines;
5593 }
5594 if (!strcmp(name, "vkDestroyPipeline"))
5595 {
5596 return (void*)entry_vkDestroyPipeline;
5597 }
5598 if (!strcmp(name, "vkCreatePipelineLayout"))
5599 {
5600 return (void*)entry_vkCreatePipelineLayout;
5601 }
5602 if (!strcmp(name, "vkDestroyPipelineLayout"))
5603 {
5604 return (void*)entry_vkDestroyPipelineLayout;
5605 }
5606 if (!strcmp(name, "vkCreateSampler"))
5607 {
5608 return (void*)entry_vkCreateSampler;
5609 }
5610 if (!strcmp(name, "vkDestroySampler"))
5611 {
5612 return (void*)entry_vkDestroySampler;
5613 }
5614 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5615 {
5616 return (void*)entry_vkCreateDescriptorSetLayout;
5617 }
5618 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5619 {
5620 return (void*)entry_vkDestroyDescriptorSetLayout;
5621 }
5622 if (!strcmp(name, "vkCreateDescriptorPool"))
5623 {
5624 return (void*)entry_vkCreateDescriptorPool;
5625 }
5626 if (!strcmp(name, "vkDestroyDescriptorPool"))
5627 {
5628 return (void*)entry_vkDestroyDescriptorPool;
5629 }
5630 if (!strcmp(name, "vkResetDescriptorPool"))
5631 {
5632 return (void*)entry_vkResetDescriptorPool;
5633 }
5634 if (!strcmp(name, "vkAllocateDescriptorSets"))
5635 {
5636 return (void*)entry_vkAllocateDescriptorSets;
5637 }
5638 if (!strcmp(name, "vkFreeDescriptorSets"))
5639 {
5640 return (void*)entry_vkFreeDescriptorSets;
5641 }
5642 if (!strcmp(name, "vkUpdateDescriptorSets"))
5643 {
5644 return (void*)entry_vkUpdateDescriptorSets;
5645 }
5646 if (!strcmp(name, "vkCreateFramebuffer"))
5647 {
5648 return (void*)entry_vkCreateFramebuffer;
5649 }
5650 if (!strcmp(name, "vkDestroyFramebuffer"))
5651 {
5652 return (void*)entry_vkDestroyFramebuffer;
5653 }
5654 if (!strcmp(name, "vkCreateRenderPass"))
5655 {
5656 return (void*)entry_vkCreateRenderPass;
5657 }
5658 if (!strcmp(name, "vkDestroyRenderPass"))
5659 {
5660 return (void*)entry_vkDestroyRenderPass;
5661 }
5662 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5663 {
5664 return (void*)entry_vkGetRenderAreaGranularity;
5665 }
5666 if (!strcmp(name, "vkCreateCommandPool"))
5667 {
5668 return (void*)entry_vkCreateCommandPool;
5669 }
5670 if (!strcmp(name, "vkDestroyCommandPool"))
5671 {
5672 return (void*)entry_vkDestroyCommandPool;
5673 }
5674 if (!strcmp(name, "vkResetCommandPool"))
5675 {
5676 return (void*)entry_vkResetCommandPool;
5677 }
5678 if (!strcmp(name, "vkAllocateCommandBuffers"))
5679 {
5680 return (void*)entry_vkAllocateCommandBuffers;
5681 }
5682 if (!strcmp(name, "vkFreeCommandBuffers"))
5683 {
5684 return (void*)entry_vkFreeCommandBuffers;
5685 }
5686 if (!strcmp(name, "vkBeginCommandBuffer"))
5687 {
5688 return (void*)entry_vkBeginCommandBuffer;
5689 }
5690 if (!strcmp(name, "vkEndCommandBuffer"))
5691 {
5692 return (void*)entry_vkEndCommandBuffer;
5693 }
5694 if (!strcmp(name, "vkResetCommandBuffer"))
5695 {
5696 return (void*)entry_vkResetCommandBuffer;
5697 }
5698 if (!strcmp(name, "vkCmdBindPipeline"))
5699 {
5700 return (void*)entry_vkCmdBindPipeline;
5701 }
5702 if (!strcmp(name, "vkCmdSetViewport"))
5703 {
5704 return (void*)entry_vkCmdSetViewport;
5705 }
5706 if (!strcmp(name, "vkCmdSetScissor"))
5707 {
5708 return (void*)entry_vkCmdSetScissor;
5709 }
5710 if (!strcmp(name, "vkCmdSetLineWidth"))
5711 {
5712 return (void*)entry_vkCmdSetLineWidth;
5713 }
5714 if (!strcmp(name, "vkCmdSetDepthBias"))
5715 {
5716 return (void*)entry_vkCmdSetDepthBias;
5717 }
5718 if (!strcmp(name, "vkCmdSetBlendConstants"))
5719 {
5720 return (void*)entry_vkCmdSetBlendConstants;
5721 }
5722 if (!strcmp(name, "vkCmdSetDepthBounds"))
5723 {
5724 return (void*)entry_vkCmdSetDepthBounds;
5725 }
5726 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5727 {
5728 return (void*)entry_vkCmdSetStencilCompareMask;
5729 }
5730 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5731 {
5732 return (void*)entry_vkCmdSetStencilWriteMask;
5733 }
5734 if (!strcmp(name, "vkCmdSetStencilReference"))
5735 {
5736 return (void*)entry_vkCmdSetStencilReference;
5737 }
5738 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5739 {
5740 return (void*)entry_vkCmdBindDescriptorSets;
5741 }
5742 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5743 {
5744 return (void*)entry_vkCmdBindIndexBuffer;
5745 }
5746 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5747 {
5748 return (void*)entry_vkCmdBindVertexBuffers;
5749 }
5750 if (!strcmp(name, "vkCmdDraw"))
5751 {
5752 return (void*)entry_vkCmdDraw;
5753 }
5754 if (!strcmp(name, "vkCmdDrawIndexed"))
5755 {
5756 return (void*)entry_vkCmdDrawIndexed;
5757 }
5758 if (!strcmp(name, "vkCmdDrawIndirect"))
5759 {
5760 return (void*)entry_vkCmdDrawIndirect;
5761 }
5762 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5763 {
5764 return (void*)entry_vkCmdDrawIndexedIndirect;
5765 }
5766 if (!strcmp(name, "vkCmdDispatch"))
5767 {
5768 return (void*)entry_vkCmdDispatch;
5769 }
5770 if (!strcmp(name, "vkCmdDispatchIndirect"))
5771 {
5772 return (void*)entry_vkCmdDispatchIndirect;
5773 }
5774 if (!strcmp(name, "vkCmdCopyBuffer"))
5775 {
5776 return (void*)entry_vkCmdCopyBuffer;
5777 }
5778 if (!strcmp(name, "vkCmdCopyImage"))
5779 {
5780 return (void*)entry_vkCmdCopyImage;
5781 }
5782 if (!strcmp(name, "vkCmdBlitImage"))
5783 {
5784 return (void*)entry_vkCmdBlitImage;
5785 }
5786 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5787 {
5788 return (void*)entry_vkCmdCopyBufferToImage;
5789 }
5790 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5791 {
5792 return (void*)entry_vkCmdCopyImageToBuffer;
5793 }
5794 if (!strcmp(name, "vkCmdUpdateBuffer"))
5795 {
5796 return (void*)entry_vkCmdUpdateBuffer;
5797 }
5798 if (!strcmp(name, "vkCmdFillBuffer"))
5799 {
5800 return (void*)entry_vkCmdFillBuffer;
5801 }
5802 if (!strcmp(name, "vkCmdClearColorImage"))
5803 {
5804 return (void*)entry_vkCmdClearColorImage;
5805 }
5806 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5807 {
5808 return (void*)entry_vkCmdClearDepthStencilImage;
5809 }
5810 if (!strcmp(name, "vkCmdClearAttachments"))
5811 {
5812 return (void*)entry_vkCmdClearAttachments;
5813 }
5814 if (!strcmp(name, "vkCmdResolveImage"))
5815 {
5816 return (void*)entry_vkCmdResolveImage;
5817 }
5818 if (!strcmp(name, "vkCmdSetEvent"))
5819 {
5820 return (void*)entry_vkCmdSetEvent;
5821 }
5822 if (!strcmp(name, "vkCmdResetEvent"))
5823 {
5824 return (void*)entry_vkCmdResetEvent;
5825 }
5826 if (!strcmp(name, "vkCmdWaitEvents"))
5827 {
5828 return (void*)entry_vkCmdWaitEvents;
5829 }
5830 if (!strcmp(name, "vkCmdPipelineBarrier"))
5831 {
5832 return (void*)entry_vkCmdPipelineBarrier;
5833 }
5834 if (!strcmp(name, "vkCmdBeginQuery"))
5835 {
5836 return (void*)entry_vkCmdBeginQuery;
5837 }
5838 if (!strcmp(name, "vkCmdEndQuery"))
5839 {
5840 return (void*)entry_vkCmdEndQuery;
5841 }
5842 if (!strcmp(name, "vkCmdResetQueryPool"))
5843 {
5844 return (void*)entry_vkCmdResetQueryPool;
5845 }
5846 if (!strcmp(name, "vkCmdWriteTimestamp"))
5847 {
5848 return (void*)entry_vkCmdWriteTimestamp;
5849 }
5850 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5851 {
5852 return (void*)entry_vkCmdCopyQueryPoolResults;
5853 }
5854 if (!strcmp(name, "vkCmdPushConstants"))
5855 {
5856 return (void*)entry_vkCmdPushConstants;
5857 }
5858 if (!strcmp(name, "vkCmdBeginRenderPass"))
5859 {
5860 return (void*)entry_vkCmdBeginRenderPass;
5861 }
5862 if (!strcmp(name, "vkCmdNextSubpass"))
5863 {
5864 return (void*)entry_vkCmdNextSubpass;
5865 }
5866 if (!strcmp(name, "vkCmdEndRenderPass"))
5867 {
5868 return (void*)entry_vkCmdEndRenderPass;
5869 }
5870 if (!strcmp(name, "vkCmdExecuteCommands"))
5871 {
5872 return (void*)entry_vkCmdExecuteCommands;
5873 }
5874#endif
5875#ifdef VK_VERSION_1_1
5876 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5877 {
5878 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
5879 }
5880 if (!strcmp(name, "vkBindBufferMemory2"))
5881 {
5882 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
5883 }
5884 if (!strcmp(name, "vkBindImageMemory2"))
5885 {
5886 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
5887 }
5888 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5889 {
5890 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
5891 }
5892 if (!strcmp(name, "vkCmdSetDeviceMask"))
5893 {
5894 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
5895 }
5896 if (!strcmp(name, "vkCmdDispatchBase"))
5897 {
5898 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
5899 }
5900 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5901 {
5902 return nullptr;
5903 }
5904 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5905 {
5906 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
5907 }
5908 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5909 {
5910 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
5911 }
5912 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5913 {
5914 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
5915 }
5916 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5917 {
5918 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
5919 }
5920 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5921 {
5922 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
5923 }
5924 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5925 {
5926 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
5927 }
5928 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5929 {
5930 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
5931 }
5932 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5933 {
5934 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
5935 }
5936 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5937 {
5938 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
5939 }
5940 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5941 {
5942 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
5943 }
5944 if (!strcmp(name, "vkTrimCommandPool"))
5945 {
5946 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
5947 }
5948 if (!strcmp(name, "vkGetDeviceQueue2"))
5949 {
5950 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
5951 }
5952 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5953 {
5954 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
5955 }
5956 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5957 {
5958 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
5959 }
5960 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5961 {
5962 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
5963 }
5964 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5965 {
5966 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
5967 }
5968 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5969 {
5970 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
5971 }
5972 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5973 {
5974 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
5975 }
5976 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5977 {
5978 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
5979 }
5980 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5981 {
5982 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
5983 }
5984 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5985 {
5986 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
5987 }
5988#endif
5989#ifdef VK_KHR_surface
5990 if (!strcmp(name, "vkDestroySurfaceKHR"))
5991 {
5992 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
5993 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
5994 }
5995 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
5996 {
5997 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
5998 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
5999 }
6000 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6001 {
6002 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
6003 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
6004 }
6005 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6006 {
6007 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
6008 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
6009 }
6010 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6011 {
6012 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
6013 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
6014 }
6015#endif
6016#ifdef VK_KHR_swapchain
6017 if (!strcmp(name, "vkCreateSwapchainKHR"))
6018 {
6019 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6020 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
6021 }
6022 if (!strcmp(name, "vkDestroySwapchainKHR"))
6023 {
6024 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6025 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
6026 }
6027 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6028 {
6029 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6030 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
6031 }
6032 if (!strcmp(name, "vkAcquireNextImageKHR"))
6033 {
6034 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6035 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
6036 }
6037 if (!strcmp(name, "vkQueuePresentKHR"))
6038 {
6039 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6040 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
6041 }
6042 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6043 {
6044 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6045 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
6046 }
6047 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6048 {
6049 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6050 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
6051 }
6052 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6053 {
6054 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6055 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
6056 }
6057 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6058 {
6059 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
6060 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
6061 }
6062#endif
6063#ifdef VK_KHR_display
6064 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6065 {
6066 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6067 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
6068 }
6069 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6070 {
6071 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6072 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
6073 }
6074 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6075 {
6076 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6077 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
6078 }
6079 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6080 {
6081 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6082 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
6083 }
6084 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6085 {
6086 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6087 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
6088 }
6089 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6090 {
6091 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6092 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
6093 }
6094 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6095 {
6096 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
6097 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
6098 }
6099#endif
6100#ifdef VK_KHR_display_swapchain
6101 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6102 {
6103 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display_swapchain");
6104 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
6105 }
6106#endif
6107#ifdef VK_KHR_xlib_surface
6108 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6109 {
6110 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
6111 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
6112 }
6113 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6114 {
6115 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
6116 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
6117 }
6118#endif
6119#ifdef VK_KHR_xcb_surface
6120 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6121 {
6122 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
6123 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
6124 }
6125 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6126 {
6127 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
6128 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
6129 }
6130#endif
6131#ifdef VK_KHR_wayland_surface
6132 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6133 {
6134 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
6135 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
6136 }
6137 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6138 {
6139 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
6140 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
6141 }
6142#endif
6143#ifdef VK_KHR_mir_surface
6144 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6145 {
6146 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
6147 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
6148 }
6149 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6150 {
6151 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
6152 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
6153 }
6154#endif
6155#ifdef VK_KHR_android_surface
6156 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6157 {
6158 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
6159 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
6160 }
6161#endif
6162#ifdef VK_KHR_win32_surface
6163 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6164 {
6165 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
6166 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
6167 }
6168 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6169 {
6170 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
6171 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
6172 }
6173#endif
6174#ifdef VK_KHR_get_physical_device_properties2
6175 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6176 {
6177 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6178 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
6179 }
6180 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6181 {
6182 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6183 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
6184 }
6185 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6186 {
6187 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6188 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
6189 }
6190 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6191 {
6192 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6193 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
6194 }
6195 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6196 {
6197 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6198 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
6199 }
6200 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6201 {
6202 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6203 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
6204 }
6205 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6206 {
6207 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
6208 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
6209 }
6210#endif
6211#ifdef VK_KHR_device_group
6212 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6213 {
6214 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
6215 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
6216 }
6217 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6218 {
6219 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
6220 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
6221 }
6222 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6223 {
6224 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
6225 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
6226 }
6227#endif
6228#ifdef VK_KHR_maintenance1
6229 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6230 {
6231 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_maintenance1");
6232 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
6233 }
6234#endif
6235#ifdef VK_KHR_device_group_creation
6236 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6237 {
6238 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
6239 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
6240 }
6241#endif
6242#ifdef VK_KHR_external_memory_capabilities
6243 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6244 {
6245 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
6246 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
6247 }
6248#endif
6249#ifdef VK_KHR_external_memory_win32
6250 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6251 {
6252 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_win32");
6253 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
6254 }
6255 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6256 {
6257 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_win32");
6258 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
6259 }
6260#endif
6261#ifdef VK_KHR_external_memory_fd
6262 if (!strcmp(name, "vkGetMemoryFdKHR"))
6263 {
6264 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_fd");
6265 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
6266 }
6267 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6268 {
6269 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_fd");
6270 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
6271 }
6272#endif
6273#ifdef VK_KHR_external_semaphore_capabilities
6274 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6275 {
6276 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
6277 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
6278 }
6279#endif
6280#ifdef VK_KHR_external_semaphore_win32
6281 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6282 {
6283 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_win32");
6284 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
6285 }
6286 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6287 {
6288 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_win32");
6289 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
6290 }
6291#endif
6292#ifdef VK_KHR_external_semaphore_fd
6293 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6294 {
6295 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_fd");
6296 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
6297 }
6298 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6299 {
6300 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_fd");
6301 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
6302 }
6303#endif
6304#ifdef VK_KHR_push_descriptor
6305 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6306 {
6307 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
6308 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
6309 }
6310 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6311 {
6312 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
6313 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
6314 }
6315#endif
6316#ifdef VK_KHR_descriptor_update_template
6317 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6318 {
6319 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_descriptor_update_template");
6320 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
6321 }
6322 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6323 {
6324 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_descriptor_update_template");
6325 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
6326 }
6327 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6328 {
6329 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_descriptor_update_template");
6330 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
6331 }
6332#endif
6333#ifdef VK_KHR_create_renderpass2
6334 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6335 {
6336 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
6337 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
6338 }
6339 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6340 {
6341 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
6342 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
6343 }
6344 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6345 {
6346 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
6347 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
6348 }
6349 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6350 {
6351 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
6352 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
6353 }
6354#endif
6355#ifdef VK_KHR_shared_presentable_image
6356 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6357 {
6358 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_shared_presentable_image");
6359 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
6360 }
6361#endif
6362#ifdef VK_KHR_external_fence_capabilities
6363 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6364 {
6365 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
6366 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
6367 }
6368#endif
6369#ifdef VK_KHR_external_fence_win32
6370 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6371 {
6372 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_win32");
6373 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
6374 }
6375 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6376 {
6377 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_win32");
6378 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
6379 }
6380#endif
6381#ifdef VK_KHR_external_fence_fd
6382 if (!strcmp(name, "vkImportFenceFdKHR"))
6383 {
6384 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_fd");
6385 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
6386 }
6387 if (!strcmp(name, "vkGetFenceFdKHR"))
6388 {
6389 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_fd");
6390 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
6391 }
6392#endif
6393#ifdef VK_KHR_get_surface_capabilities2
6394 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6395 {
6396 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
6397 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
6398 }
6399 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6400 {
6401 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
6402 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
6403 }
6404#endif
6405#ifdef VK_KHR_get_display_properties2
6406 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6407 {
6408 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
6409 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
6410 }
6411 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6412 {
6413 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
6414 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
6415 }
6416 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6417 {
6418 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
6419 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
6420 }
6421 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6422 {
6423 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
6424 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
6425 }
6426#endif
6427#ifdef VK_KHR_get_memory_requirements2
6428 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6429 {
6430 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_memory_requirements2");
6431 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
6432 }
6433 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6434 {
6435 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_memory_requirements2");
6436 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
6437 }
6438 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6439 {
6440 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_memory_requirements2");
6441 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
6442 }
6443#endif
6444#ifdef VK_KHR_sampler_ycbcr_conversion
6445 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6446 {
6447 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_sampler_ycbcr_conversion");
6448 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
6449 }
6450 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6451 {
6452 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_sampler_ycbcr_conversion");
6453 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
6454 }
6455#endif
6456#ifdef VK_KHR_bind_memory2
6457 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6458 {
6459 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_bind_memory2");
6460 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
6461 }
6462 if (!strcmp(name, "vkBindImageMemory2KHR"))
6463 {
6464 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_bind_memory2");
6465 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
6466 }
6467#endif
6468#ifdef VK_KHR_maintenance3
6469 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6470 {
6471 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_maintenance3");
6472 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
6473 }
6474#endif
6475#ifdef VK_KHR_draw_indirect_count
6476 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6477 {
6478 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
6479 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
6480 }
6481 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6482 {
6483 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
6484 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
6485 }
6486#endif
6487#ifdef VK_ANDROID_native_buffer
6488 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6489 {
6490 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
6491 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
6492 }
6493 if (!strcmp(name, "vkAcquireImageANDROID"))
6494 {
6495 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
6496 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
6497 }
6498 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6499 {
6500 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
6501 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
6502 }
6503#endif
6504#ifdef VK_EXT_debug_report
6505 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6506 {
6507 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
6508 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
6509 }
6510 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6511 {
6512 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
6513 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
6514 }
6515 if (!strcmp(name, "vkDebugReportMessageEXT"))
6516 {
6517 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
6518 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
6519 }
6520#endif
6521#ifdef VK_EXT_debug_marker
6522 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6523 {
6524 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
6525 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
6526 }
6527 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6528 {
6529 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
6530 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
6531 }
6532 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6533 {
6534 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
6535 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
6536 }
6537 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6538 {
6539 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
6540 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
6541 }
6542 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6543 {
6544 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
6545 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
6546 }
6547#endif
6548#ifdef VK_AMD_draw_indirect_count
6549 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6550 {
6551 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
6552 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
6553 }
6554 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6555 {
6556 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
6557 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
6558 }
6559#endif
6560#ifdef VK_AMD_shader_info
6561 if (!strcmp(name, "vkGetShaderInfoAMD"))
6562 {
6563 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_shader_info");
6564 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
6565 }
6566#endif
6567#ifdef VK_NV_external_memory_capabilities
6568 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6569 {
6570 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
6571 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
6572 }
6573#endif
6574#ifdef VK_NV_external_memory_win32
6575 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6576 {
6577 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_win32");
6578 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
6579 }
6580#endif
6581#ifdef VK_NN_vi_surface
6582 if (!strcmp(name, "vkCreateViSurfaceNN"))
6583 {
6584 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
6585 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
6586 }
6587#endif
6588#ifdef VK_EXT_conditional_rendering
6589 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6590 {
6591 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
6592 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
6593 }
6594 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6595 {
6596 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
6597 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
6598 }
6599#endif
6600#ifdef VK_NVX_device_generated_commands
6601 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6602 {
6603 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6604 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
6605 }
6606 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6607 {
6608 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6609 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
6610 }
6611 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6612 {
6613 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6614 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
6615 }
6616 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6617 {
6618 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6619 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
6620 }
6621 if (!strcmp(name, "vkCreateObjectTableNVX"))
6622 {
6623 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6624 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
6625 }
6626 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6627 {
6628 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6629 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
6630 }
6631 if (!strcmp(name, "vkRegisterObjectsNVX"))
6632 {
6633 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6634 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
6635 }
6636 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6637 {
6638 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6639 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
6640 }
6641 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6642 {
6643 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
6644 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
6645 }
6646#endif
6647#ifdef VK_NV_clip_space_w_scaling
6648 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6649 {
6650 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
6651 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
6652 }
6653#endif
6654#ifdef VK_EXT_direct_mode_display
6655 if (!strcmp(name, "vkReleaseDisplayEXT"))
6656 {
6657 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
6658 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
6659 }
6660#endif
6661#ifdef VK_EXT_acquire_xlib_display
6662 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6663 {
6664 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
6665 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
6666 }
6667 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6668 {
6669 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
6670 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
6671 }
6672#endif
6673#ifdef VK_EXT_display_surface_counter
6674 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6675 {
6676 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
6677 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
6678 }
6679#endif
6680#ifdef VK_EXT_display_control
6681 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6682 {
6683 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_control");
6684 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
6685 }
6686 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6687 {
6688 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_control");
6689 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
6690 }
6691 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6692 {
6693 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_control");
6694 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
6695 }
6696 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6697 {
6698 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_control");
6699 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
6700 }
6701#endif
6702#ifdef VK_GOOGLE_display_timing
6703 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6704 {
6705 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_display_timing");
6706 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
6707 }
6708 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6709 {
6710 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_display_timing");
6711 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
6712 }
6713#endif
6714#ifdef VK_EXT_discard_rectangles
6715 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6716 {
6717 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
6718 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
6719 }
6720#endif
6721#ifdef VK_EXT_hdr_metadata
6722 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6723 {
6724 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_hdr_metadata");
6725 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
6726 }
6727#endif
6728#ifdef VK_MVK_ios_surface
6729 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6730 {
6731 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
6732 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
6733 }
6734#endif
6735#ifdef VK_MVK_macos_surface
6736 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6737 {
6738 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
6739 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
6740 }
6741#endif
6742#ifdef VK_EXT_debug_utils
6743 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6744 {
6745 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6746 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
6747 }
6748 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6749 {
6750 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6751 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
6752 }
6753 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6754 {
6755 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6756 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
6757 }
6758 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6759 {
6760 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6761 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
6762 }
6763 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6764 {
6765 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6766 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
6767 }
6768 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6769 {
6770 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6771 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
6772 }
6773 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6774 {
6775 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6776 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
6777 }
6778 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6779 {
6780 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6781 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
6782 }
6783 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6784 {
6785 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6786 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
6787 }
6788 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6789 {
6790 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6791 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
6792 }
6793 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6794 {
6795 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
6796 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
6797 }
6798#endif
6799#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6800 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6801 {
6802 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_external_memory_android_hardware_buffer");
6803 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
6804 }
6805 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6806 {
6807 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_external_memory_android_hardware_buffer");
6808 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
6809 }
6810#endif
6811#ifdef VK_EXT_sample_locations
6812 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6813 {
6814 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
6815 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
6816 }
6817 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6818 {
6819 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
6820 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
6821 }
6822#endif
6823#ifdef VK_EXT_validation_cache
6824 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6825 {
6826 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_validation_cache");
6827 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
6828 }
6829 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6830 {
6831 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_validation_cache");
6832 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
6833 }
6834 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6835 {
6836 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_validation_cache");
6837 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
6838 }
6839 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6840 {
6841 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_validation_cache");
6842 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
6843 }
6844#endif
6845#ifdef VK_EXT_external_memory_host
6846 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6847 {
6848 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_external_memory_host");
6849 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
6850 }
6851#endif
6852#ifdef VK_AMD_buffer_marker
6853 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6854 {
6855 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
6856 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
6857 }
6858#endif
6859#ifdef VK_NV_device_diagnostic_checkpoints
6860 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6861 {
6862 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
6863 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
6864 }
6865 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6866 {
6867 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
6868 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
6869 }
6870#endif
6871#ifdef VK_GOOGLE_address_space
6872 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6873 {
6874 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_address_space");
6875 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
6876 }
6877#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006878#ifdef VK_GOOGLE_color_buffer
6879 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6880 {
6881 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_color_buffer");
6882 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
6883 }
6884 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6885 {
6886 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_color_buffer");
6887 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
6888 }
6889#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006890#ifdef VK_GOOGLE_sized_descriptor_update_template
6891 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6892 {
6893 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_sized_descriptor_update_template");
6894 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
6895 }
6896#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006897#ifdef VK_GOOGLE_async_command_buffers
6898 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6899 {
6900 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
6901 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
6902 }
6903 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6904 {
6905 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
6906 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
6907 }
6908 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6909 {
6910 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
6911 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
6912 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006913 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6914 {
6915 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
6916 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
6917 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006918#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006919#ifdef VK_GOOGLE_create_resources_with_requirements
6920 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6921 {
6922 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_create_resources_with_requirements");
6923 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
6924 }
6925 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6926 {
6927 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_create_resources_with_requirements");
6928 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
6929 }
6930#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006931 return nullptr;
6932}
6933void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
6934 auto resources = ResourceTracker::get();
6935 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
6936#ifdef VK_VERSION_1_0
6937 if (!strcmp(name, "vkCreateInstance"))
6938 {
6939 return (void*)entry_vkCreateInstance;
6940 }
6941 if (!strcmp(name, "vkDestroyInstance"))
6942 {
6943 return (void*)entry_vkDestroyInstance;
6944 }
6945 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6946 {
6947 return (void*)entry_vkEnumeratePhysicalDevices;
6948 }
6949 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6950 {
6951 return (void*)entry_vkGetPhysicalDeviceFeatures;
6952 }
6953 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6954 {
6955 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6956 }
6957 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6958 {
6959 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6960 }
6961 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6962 {
6963 return (void*)entry_vkGetPhysicalDeviceProperties;
6964 }
6965 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6966 {
6967 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6968 }
6969 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6970 {
6971 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6972 }
6973 if (!strcmp(name, "vkGetInstanceProcAddr"))
6974 {
6975 return (void*)entry_vkGetInstanceProcAddr;
6976 }
6977 if (!strcmp(name, "vkGetDeviceProcAddr"))
6978 {
6979 return (void*)entry_vkGetDeviceProcAddr;
6980 }
6981 if (!strcmp(name, "vkCreateDevice"))
6982 {
6983 return (void*)entry_vkCreateDevice;
6984 }
6985 if (!strcmp(name, "vkDestroyDevice"))
6986 {
6987 return (void*)entry_vkDestroyDevice;
6988 }
6989 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6990 {
6991 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6992 }
6993 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6994 {
6995 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6996 }
6997 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6998 {
6999 return (void*)entry_vkEnumerateInstanceLayerProperties;
7000 }
7001 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7002 {
7003 return (void*)entry_vkEnumerateDeviceLayerProperties;
7004 }
7005 if (!strcmp(name, "vkGetDeviceQueue"))
7006 {
7007 return (void*)entry_vkGetDeviceQueue;
7008 }
7009 if (!strcmp(name, "vkQueueSubmit"))
7010 {
7011 return (void*)entry_vkQueueSubmit;
7012 }
7013 if (!strcmp(name, "vkQueueWaitIdle"))
7014 {
7015 return (void*)entry_vkQueueWaitIdle;
7016 }
7017 if (!strcmp(name, "vkDeviceWaitIdle"))
7018 {
7019 return (void*)entry_vkDeviceWaitIdle;
7020 }
7021 if (!strcmp(name, "vkAllocateMemory"))
7022 {
7023 return (void*)entry_vkAllocateMemory;
7024 }
7025 if (!strcmp(name, "vkFreeMemory"))
7026 {
7027 return (void*)entry_vkFreeMemory;
7028 }
7029 if (!strcmp(name, "vkMapMemory"))
7030 {
7031 return (void*)entry_vkMapMemory;
7032 }
7033 if (!strcmp(name, "vkUnmapMemory"))
7034 {
7035 return (void*)entry_vkUnmapMemory;
7036 }
7037 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
7038 {
7039 return (void*)entry_vkFlushMappedMemoryRanges;
7040 }
7041 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
7042 {
7043 return (void*)entry_vkInvalidateMappedMemoryRanges;
7044 }
7045 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
7046 {
7047 return (void*)entry_vkGetDeviceMemoryCommitment;
7048 }
7049 if (!strcmp(name, "vkBindBufferMemory"))
7050 {
7051 return (void*)entry_vkBindBufferMemory;
7052 }
7053 if (!strcmp(name, "vkBindImageMemory"))
7054 {
7055 return (void*)entry_vkBindImageMemory;
7056 }
7057 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
7058 {
7059 return (void*)entry_vkGetBufferMemoryRequirements;
7060 }
7061 if (!strcmp(name, "vkGetImageMemoryRequirements"))
7062 {
7063 return (void*)entry_vkGetImageMemoryRequirements;
7064 }
7065 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
7066 {
7067 return (void*)entry_vkGetImageSparseMemoryRequirements;
7068 }
7069 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
7070 {
7071 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
7072 }
7073 if (!strcmp(name, "vkQueueBindSparse"))
7074 {
7075 return (void*)entry_vkQueueBindSparse;
7076 }
7077 if (!strcmp(name, "vkCreateFence"))
7078 {
7079 return (void*)entry_vkCreateFence;
7080 }
7081 if (!strcmp(name, "vkDestroyFence"))
7082 {
7083 return (void*)entry_vkDestroyFence;
7084 }
7085 if (!strcmp(name, "vkResetFences"))
7086 {
7087 return (void*)entry_vkResetFences;
7088 }
7089 if (!strcmp(name, "vkGetFenceStatus"))
7090 {
7091 return (void*)entry_vkGetFenceStatus;
7092 }
7093 if (!strcmp(name, "vkWaitForFences"))
7094 {
7095 return (void*)entry_vkWaitForFences;
7096 }
7097 if (!strcmp(name, "vkCreateSemaphore"))
7098 {
7099 return (void*)entry_vkCreateSemaphore;
7100 }
7101 if (!strcmp(name, "vkDestroySemaphore"))
7102 {
7103 return (void*)entry_vkDestroySemaphore;
7104 }
7105 if (!strcmp(name, "vkCreateEvent"))
7106 {
7107 return (void*)entry_vkCreateEvent;
7108 }
7109 if (!strcmp(name, "vkDestroyEvent"))
7110 {
7111 return (void*)entry_vkDestroyEvent;
7112 }
7113 if (!strcmp(name, "vkGetEventStatus"))
7114 {
7115 return (void*)entry_vkGetEventStatus;
7116 }
7117 if (!strcmp(name, "vkSetEvent"))
7118 {
7119 return (void*)entry_vkSetEvent;
7120 }
7121 if (!strcmp(name, "vkResetEvent"))
7122 {
7123 return (void*)entry_vkResetEvent;
7124 }
7125 if (!strcmp(name, "vkCreateQueryPool"))
7126 {
7127 return (void*)entry_vkCreateQueryPool;
7128 }
7129 if (!strcmp(name, "vkDestroyQueryPool"))
7130 {
7131 return (void*)entry_vkDestroyQueryPool;
7132 }
7133 if (!strcmp(name, "vkGetQueryPoolResults"))
7134 {
7135 return (void*)entry_vkGetQueryPoolResults;
7136 }
7137 if (!strcmp(name, "vkCreateBuffer"))
7138 {
7139 return (void*)entry_vkCreateBuffer;
7140 }
7141 if (!strcmp(name, "vkDestroyBuffer"))
7142 {
7143 return (void*)entry_vkDestroyBuffer;
7144 }
7145 if (!strcmp(name, "vkCreateBufferView"))
7146 {
7147 return (void*)entry_vkCreateBufferView;
7148 }
7149 if (!strcmp(name, "vkDestroyBufferView"))
7150 {
7151 return (void*)entry_vkDestroyBufferView;
7152 }
7153 if (!strcmp(name, "vkCreateImage"))
7154 {
7155 return (void*)entry_vkCreateImage;
7156 }
7157 if (!strcmp(name, "vkDestroyImage"))
7158 {
7159 return (void*)entry_vkDestroyImage;
7160 }
7161 if (!strcmp(name, "vkGetImageSubresourceLayout"))
7162 {
7163 return (void*)entry_vkGetImageSubresourceLayout;
7164 }
7165 if (!strcmp(name, "vkCreateImageView"))
7166 {
7167 return (void*)entry_vkCreateImageView;
7168 }
7169 if (!strcmp(name, "vkDestroyImageView"))
7170 {
7171 return (void*)entry_vkDestroyImageView;
7172 }
7173 if (!strcmp(name, "vkCreateShaderModule"))
7174 {
7175 return (void*)entry_vkCreateShaderModule;
7176 }
7177 if (!strcmp(name, "vkDestroyShaderModule"))
7178 {
7179 return (void*)entry_vkDestroyShaderModule;
7180 }
7181 if (!strcmp(name, "vkCreatePipelineCache"))
7182 {
7183 return (void*)entry_vkCreatePipelineCache;
7184 }
7185 if (!strcmp(name, "vkDestroyPipelineCache"))
7186 {
7187 return (void*)entry_vkDestroyPipelineCache;
7188 }
7189 if (!strcmp(name, "vkGetPipelineCacheData"))
7190 {
7191 return (void*)entry_vkGetPipelineCacheData;
7192 }
7193 if (!strcmp(name, "vkMergePipelineCaches"))
7194 {
7195 return (void*)entry_vkMergePipelineCaches;
7196 }
7197 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7198 {
7199 return (void*)entry_vkCreateGraphicsPipelines;
7200 }
7201 if (!strcmp(name, "vkCreateComputePipelines"))
7202 {
7203 return (void*)entry_vkCreateComputePipelines;
7204 }
7205 if (!strcmp(name, "vkDestroyPipeline"))
7206 {
7207 return (void*)entry_vkDestroyPipeline;
7208 }
7209 if (!strcmp(name, "vkCreatePipelineLayout"))
7210 {
7211 return (void*)entry_vkCreatePipelineLayout;
7212 }
7213 if (!strcmp(name, "vkDestroyPipelineLayout"))
7214 {
7215 return (void*)entry_vkDestroyPipelineLayout;
7216 }
7217 if (!strcmp(name, "vkCreateSampler"))
7218 {
7219 return (void*)entry_vkCreateSampler;
7220 }
7221 if (!strcmp(name, "vkDestroySampler"))
7222 {
7223 return (void*)entry_vkDestroySampler;
7224 }
7225 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7226 {
7227 return (void*)entry_vkCreateDescriptorSetLayout;
7228 }
7229 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7230 {
7231 return (void*)entry_vkDestroyDescriptorSetLayout;
7232 }
7233 if (!strcmp(name, "vkCreateDescriptorPool"))
7234 {
7235 return (void*)entry_vkCreateDescriptorPool;
7236 }
7237 if (!strcmp(name, "vkDestroyDescriptorPool"))
7238 {
7239 return (void*)entry_vkDestroyDescriptorPool;
7240 }
7241 if (!strcmp(name, "vkResetDescriptorPool"))
7242 {
7243 return (void*)entry_vkResetDescriptorPool;
7244 }
7245 if (!strcmp(name, "vkAllocateDescriptorSets"))
7246 {
7247 return (void*)entry_vkAllocateDescriptorSets;
7248 }
7249 if (!strcmp(name, "vkFreeDescriptorSets"))
7250 {
7251 return (void*)entry_vkFreeDescriptorSets;
7252 }
7253 if (!strcmp(name, "vkUpdateDescriptorSets"))
7254 {
7255 return (void*)entry_vkUpdateDescriptorSets;
7256 }
7257 if (!strcmp(name, "vkCreateFramebuffer"))
7258 {
7259 return (void*)entry_vkCreateFramebuffer;
7260 }
7261 if (!strcmp(name, "vkDestroyFramebuffer"))
7262 {
7263 return (void*)entry_vkDestroyFramebuffer;
7264 }
7265 if (!strcmp(name, "vkCreateRenderPass"))
7266 {
7267 return (void*)entry_vkCreateRenderPass;
7268 }
7269 if (!strcmp(name, "vkDestroyRenderPass"))
7270 {
7271 return (void*)entry_vkDestroyRenderPass;
7272 }
7273 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7274 {
7275 return (void*)entry_vkGetRenderAreaGranularity;
7276 }
7277 if (!strcmp(name, "vkCreateCommandPool"))
7278 {
7279 return (void*)entry_vkCreateCommandPool;
7280 }
7281 if (!strcmp(name, "vkDestroyCommandPool"))
7282 {
7283 return (void*)entry_vkDestroyCommandPool;
7284 }
7285 if (!strcmp(name, "vkResetCommandPool"))
7286 {
7287 return (void*)entry_vkResetCommandPool;
7288 }
7289 if (!strcmp(name, "vkAllocateCommandBuffers"))
7290 {
7291 return (void*)entry_vkAllocateCommandBuffers;
7292 }
7293 if (!strcmp(name, "vkFreeCommandBuffers"))
7294 {
7295 return (void*)entry_vkFreeCommandBuffers;
7296 }
7297 if (!strcmp(name, "vkBeginCommandBuffer"))
7298 {
7299 return (void*)entry_vkBeginCommandBuffer;
7300 }
7301 if (!strcmp(name, "vkEndCommandBuffer"))
7302 {
7303 return (void*)entry_vkEndCommandBuffer;
7304 }
7305 if (!strcmp(name, "vkResetCommandBuffer"))
7306 {
7307 return (void*)entry_vkResetCommandBuffer;
7308 }
7309 if (!strcmp(name, "vkCmdBindPipeline"))
7310 {
7311 return (void*)entry_vkCmdBindPipeline;
7312 }
7313 if (!strcmp(name, "vkCmdSetViewport"))
7314 {
7315 return (void*)entry_vkCmdSetViewport;
7316 }
7317 if (!strcmp(name, "vkCmdSetScissor"))
7318 {
7319 return (void*)entry_vkCmdSetScissor;
7320 }
7321 if (!strcmp(name, "vkCmdSetLineWidth"))
7322 {
7323 return (void*)entry_vkCmdSetLineWidth;
7324 }
7325 if (!strcmp(name, "vkCmdSetDepthBias"))
7326 {
7327 return (void*)entry_vkCmdSetDepthBias;
7328 }
7329 if (!strcmp(name, "vkCmdSetBlendConstants"))
7330 {
7331 return (void*)entry_vkCmdSetBlendConstants;
7332 }
7333 if (!strcmp(name, "vkCmdSetDepthBounds"))
7334 {
7335 return (void*)entry_vkCmdSetDepthBounds;
7336 }
7337 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7338 {
7339 return (void*)entry_vkCmdSetStencilCompareMask;
7340 }
7341 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7342 {
7343 return (void*)entry_vkCmdSetStencilWriteMask;
7344 }
7345 if (!strcmp(name, "vkCmdSetStencilReference"))
7346 {
7347 return (void*)entry_vkCmdSetStencilReference;
7348 }
7349 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7350 {
7351 return (void*)entry_vkCmdBindDescriptorSets;
7352 }
7353 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7354 {
7355 return (void*)entry_vkCmdBindIndexBuffer;
7356 }
7357 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7358 {
7359 return (void*)entry_vkCmdBindVertexBuffers;
7360 }
7361 if (!strcmp(name, "vkCmdDraw"))
7362 {
7363 return (void*)entry_vkCmdDraw;
7364 }
7365 if (!strcmp(name, "vkCmdDrawIndexed"))
7366 {
7367 return (void*)entry_vkCmdDrawIndexed;
7368 }
7369 if (!strcmp(name, "vkCmdDrawIndirect"))
7370 {
7371 return (void*)entry_vkCmdDrawIndirect;
7372 }
7373 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7374 {
7375 return (void*)entry_vkCmdDrawIndexedIndirect;
7376 }
7377 if (!strcmp(name, "vkCmdDispatch"))
7378 {
7379 return (void*)entry_vkCmdDispatch;
7380 }
7381 if (!strcmp(name, "vkCmdDispatchIndirect"))
7382 {
7383 return (void*)entry_vkCmdDispatchIndirect;
7384 }
7385 if (!strcmp(name, "vkCmdCopyBuffer"))
7386 {
7387 return (void*)entry_vkCmdCopyBuffer;
7388 }
7389 if (!strcmp(name, "vkCmdCopyImage"))
7390 {
7391 return (void*)entry_vkCmdCopyImage;
7392 }
7393 if (!strcmp(name, "vkCmdBlitImage"))
7394 {
7395 return (void*)entry_vkCmdBlitImage;
7396 }
7397 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7398 {
7399 return (void*)entry_vkCmdCopyBufferToImage;
7400 }
7401 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7402 {
7403 return (void*)entry_vkCmdCopyImageToBuffer;
7404 }
7405 if (!strcmp(name, "vkCmdUpdateBuffer"))
7406 {
7407 return (void*)entry_vkCmdUpdateBuffer;
7408 }
7409 if (!strcmp(name, "vkCmdFillBuffer"))
7410 {
7411 return (void*)entry_vkCmdFillBuffer;
7412 }
7413 if (!strcmp(name, "vkCmdClearColorImage"))
7414 {
7415 return (void*)entry_vkCmdClearColorImage;
7416 }
7417 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7418 {
7419 return (void*)entry_vkCmdClearDepthStencilImage;
7420 }
7421 if (!strcmp(name, "vkCmdClearAttachments"))
7422 {
7423 return (void*)entry_vkCmdClearAttachments;
7424 }
7425 if (!strcmp(name, "vkCmdResolveImage"))
7426 {
7427 return (void*)entry_vkCmdResolveImage;
7428 }
7429 if (!strcmp(name, "vkCmdSetEvent"))
7430 {
7431 return (void*)entry_vkCmdSetEvent;
7432 }
7433 if (!strcmp(name, "vkCmdResetEvent"))
7434 {
7435 return (void*)entry_vkCmdResetEvent;
7436 }
7437 if (!strcmp(name, "vkCmdWaitEvents"))
7438 {
7439 return (void*)entry_vkCmdWaitEvents;
7440 }
7441 if (!strcmp(name, "vkCmdPipelineBarrier"))
7442 {
7443 return (void*)entry_vkCmdPipelineBarrier;
7444 }
7445 if (!strcmp(name, "vkCmdBeginQuery"))
7446 {
7447 return (void*)entry_vkCmdBeginQuery;
7448 }
7449 if (!strcmp(name, "vkCmdEndQuery"))
7450 {
7451 return (void*)entry_vkCmdEndQuery;
7452 }
7453 if (!strcmp(name, "vkCmdResetQueryPool"))
7454 {
7455 return (void*)entry_vkCmdResetQueryPool;
7456 }
7457 if (!strcmp(name, "vkCmdWriteTimestamp"))
7458 {
7459 return (void*)entry_vkCmdWriteTimestamp;
7460 }
7461 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7462 {
7463 return (void*)entry_vkCmdCopyQueryPoolResults;
7464 }
7465 if (!strcmp(name, "vkCmdPushConstants"))
7466 {
7467 return (void*)entry_vkCmdPushConstants;
7468 }
7469 if (!strcmp(name, "vkCmdBeginRenderPass"))
7470 {
7471 return (void*)entry_vkCmdBeginRenderPass;
7472 }
7473 if (!strcmp(name, "vkCmdNextSubpass"))
7474 {
7475 return (void*)entry_vkCmdNextSubpass;
7476 }
7477 if (!strcmp(name, "vkCmdEndRenderPass"))
7478 {
7479 return (void*)entry_vkCmdEndRenderPass;
7480 }
7481 if (!strcmp(name, "vkCmdExecuteCommands"))
7482 {
7483 return (void*)entry_vkCmdExecuteCommands;
7484 }
7485#endif
7486#ifdef VK_VERSION_1_1
7487 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7488 {
7489 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7490 }
7491 if (!strcmp(name, "vkBindBufferMemory2"))
7492 {
7493 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
7494 }
7495 if (!strcmp(name, "vkBindImageMemory2"))
7496 {
7497 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
7498 }
7499 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7500 {
7501 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
7502 }
7503 if (!strcmp(name, "vkCmdSetDeviceMask"))
7504 {
7505 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7506 }
7507 if (!strcmp(name, "vkCmdDispatchBase"))
7508 {
7509 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7510 }
7511 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7512 {
7513 return nullptr;
7514 }
7515 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7516 {
7517 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
7518 }
7519 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7520 {
7521 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
7522 }
7523 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7524 {
7525 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
7526 }
7527 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7528 {
7529 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7530 }
7531 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7532 {
7533 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7534 }
7535 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7536 {
7537 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7538 }
7539 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7540 {
7541 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7542 }
7543 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7544 {
7545 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7546 }
7547 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7548 {
7549 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7550 }
7551 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7552 {
7553 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7554 }
7555 if (!strcmp(name, "vkTrimCommandPool"))
7556 {
7557 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
7558 }
7559 if (!strcmp(name, "vkGetDeviceQueue2"))
7560 {
7561 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
7562 }
7563 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7564 {
7565 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
7566 }
7567 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7568 {
7569 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
7570 }
7571 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7572 {
7573 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
7574 }
7575 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7576 {
7577 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
7578 }
7579 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7580 {
7581 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
7582 }
7583 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7584 {
7585 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7586 }
7587 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7588 {
7589 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7590 }
7591 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7592 {
7593 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7594 }
7595 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7596 {
7597 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
7598 }
7599#endif
7600#ifdef VK_KHR_surface
7601 if (!strcmp(name, "vkDestroySurfaceKHR"))
7602 {
7603 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
7604 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7605 }
7606 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7607 {
7608 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
7609 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7610 }
7611 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7612 {
7613 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
7614 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7615 }
7616 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7617 {
7618 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
7619 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7620 }
7621 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7622 {
7623 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
7624 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7625 }
7626#endif
7627#ifdef VK_KHR_swapchain
7628 if (!strcmp(name, "vkCreateSwapchainKHR"))
7629 {
7630 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7631 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
7632 }
7633 if (!strcmp(name, "vkDestroySwapchainKHR"))
7634 {
7635 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7636 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
7637 }
7638 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7639 {
7640 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7641 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
7642 }
7643 if (!strcmp(name, "vkAcquireNextImageKHR"))
7644 {
7645 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7646 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
7647 }
7648 if (!strcmp(name, "vkQueuePresentKHR"))
7649 {
7650 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7651 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7652 }
7653 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7654 {
7655 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7656 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
7657 }
7658 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7659 {
7660 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7661 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
7662 }
7663 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7664 {
7665 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7666 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7667 }
7668 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7669 {
7670 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
7671 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
7672 }
7673#endif
7674#ifdef VK_KHR_display
7675 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7676 {
7677 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7678 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7679 }
7680 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7681 {
7682 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7683 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7684 }
7685 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7686 {
7687 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7688 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7689 }
7690 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7691 {
7692 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7693 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7694 }
7695 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7696 {
7697 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7698 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7699 }
7700 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7701 {
7702 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7703 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7704 }
7705 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7706 {
7707 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
7708 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7709 }
7710#endif
7711#ifdef VK_KHR_display_swapchain
7712 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7713 {
7714 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
7715 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
7716 }
7717#endif
7718#ifdef VK_KHR_xlib_surface
7719 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7720 {
7721 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
7722 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7723 }
7724 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7725 {
7726 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
7727 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7728 }
7729#endif
7730#ifdef VK_KHR_xcb_surface
7731 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7732 {
7733 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
7734 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7735 }
7736 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7737 {
7738 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
7739 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7740 }
7741#endif
7742#ifdef VK_KHR_wayland_surface
7743 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7744 {
7745 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
7746 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7747 }
7748 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7749 {
7750 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
7751 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7752 }
7753#endif
7754#ifdef VK_KHR_mir_surface
7755 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7756 {
7757 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
7758 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7759 }
7760 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7761 {
7762 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
7763 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7764 }
7765#endif
7766#ifdef VK_KHR_android_surface
7767 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7768 {
7769 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
7770 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7771 }
7772#endif
7773#ifdef VK_KHR_win32_surface
7774 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7775 {
7776 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
7777 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7778 }
7779 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7780 {
7781 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
7782 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7783 }
7784#endif
7785#ifdef VK_KHR_get_physical_device_properties2
7786 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7787 {
7788 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7789 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7790 }
7791 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7792 {
7793 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7794 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7795 }
7796 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7797 {
7798 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7799 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7800 }
7801 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7802 {
7803 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7804 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7805 }
7806 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7807 {
7808 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7809 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7810 }
7811 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7812 {
7813 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7814 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7815 }
7816 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7817 {
7818 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
7819 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7820 }
7821#endif
7822#ifdef VK_KHR_device_group
7823 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7824 {
7825 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
7826 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
7827 }
7828 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7829 {
7830 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
7831 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7832 }
7833 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7834 {
7835 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
7836 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7837 }
7838#endif
7839#ifdef VK_KHR_maintenance1
7840 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7841 {
7842 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
7843 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
7844 }
7845#endif
7846#ifdef VK_KHR_device_group_creation
7847 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7848 {
7849 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
7850 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7851 }
7852#endif
7853#ifdef VK_KHR_external_memory_capabilities
7854 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7855 {
7856 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
7857 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7858 }
7859#endif
7860#ifdef VK_KHR_external_memory_win32
7861 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7862 {
7863 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
7864 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
7865 }
7866 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7867 {
7868 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
7869 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
7870 }
7871#endif
7872#ifdef VK_KHR_external_memory_fd
7873 if (!strcmp(name, "vkGetMemoryFdKHR"))
7874 {
7875 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
7876 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
7877 }
7878 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7879 {
7880 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
7881 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
7882 }
7883#endif
7884#ifdef VK_KHR_external_semaphore_capabilities
7885 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7886 {
7887 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
7888 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7889 }
7890#endif
7891#ifdef VK_KHR_external_semaphore_win32
7892 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7893 {
7894 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
7895 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
7896 }
7897 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7898 {
7899 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
7900 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
7901 }
7902#endif
7903#ifdef VK_KHR_external_semaphore_fd
7904 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7905 {
7906 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
7907 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
7908 }
7909 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7910 {
7911 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
7912 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
7913 }
7914#endif
7915#ifdef VK_KHR_push_descriptor
7916 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7917 {
7918 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
7919 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7920 }
7921 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7922 {
7923 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
7924 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7925 }
7926#endif
7927#ifdef VK_KHR_descriptor_update_template
7928 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7929 {
7930 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
7931 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
7932 }
7933 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7934 {
7935 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
7936 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
7937 }
7938 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7939 {
7940 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
7941 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
7942 }
7943#endif
7944#ifdef VK_KHR_create_renderpass2
7945 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7946 {
7947 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
7948 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
7949 }
7950 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7951 {
7952 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
7953 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7954 }
7955 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7956 {
7957 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
7958 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7959 }
7960 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7961 {
7962 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
7963 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7964 }
7965#endif
7966#ifdef VK_KHR_shared_presentable_image
7967 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7968 {
7969 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
7970 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
7971 }
7972#endif
7973#ifdef VK_KHR_external_fence_capabilities
7974 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7975 {
7976 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
7977 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7978 }
7979#endif
7980#ifdef VK_KHR_external_fence_win32
7981 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7982 {
7983 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
7984 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
7985 }
7986 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7987 {
7988 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
7989 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
7990 }
7991#endif
7992#ifdef VK_KHR_external_fence_fd
7993 if (!strcmp(name, "vkImportFenceFdKHR"))
7994 {
7995 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
7996 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
7997 }
7998 if (!strcmp(name, "vkGetFenceFdKHR"))
7999 {
8000 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
8001 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
8002 }
8003#endif
8004#ifdef VK_KHR_get_surface_capabilities2
8005 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
8006 {
8007 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
8008 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
8009 }
8010 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
8011 {
8012 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
8013 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
8014 }
8015#endif
8016#ifdef VK_KHR_get_display_properties2
8017 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
8018 {
8019 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
8020 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
8021 }
8022 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
8023 {
8024 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
8025 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
8026 }
8027 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
8028 {
8029 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
8030 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
8031 }
8032 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
8033 {
8034 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
8035 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
8036 }
8037#endif
8038#ifdef VK_KHR_get_memory_requirements2
8039 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
8040 {
8041 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
8042 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
8043 }
8044 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
8045 {
8046 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
8047 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
8048 }
8049 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
8050 {
8051 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
8052 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
8053 }
8054#endif
8055#ifdef VK_KHR_sampler_ycbcr_conversion
8056 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
8057 {
8058 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
8059 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
8060 }
8061 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
8062 {
8063 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
8064 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
8065 }
8066#endif
8067#ifdef VK_KHR_bind_memory2
8068 if (!strcmp(name, "vkBindBufferMemory2KHR"))
8069 {
8070 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
8071 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
8072 }
8073 if (!strcmp(name, "vkBindImageMemory2KHR"))
8074 {
8075 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
8076 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
8077 }
8078#endif
8079#ifdef VK_KHR_maintenance3
8080 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
8081 {
8082 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
8083 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
8084 }
8085#endif
8086#ifdef VK_KHR_draw_indirect_count
8087 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
8088 {
8089 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
8090 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
8091 }
8092 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
8093 {
8094 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
8095 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
8096 }
8097#endif
8098#ifdef VK_ANDROID_native_buffer
8099 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
8100 {
8101 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
8102 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
8103 }
8104 if (!strcmp(name, "vkAcquireImageANDROID"))
8105 {
8106 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
8107 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
8108 }
8109 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
8110 {
8111 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
8112 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
8113 }
8114#endif
8115#ifdef VK_EXT_debug_report
8116 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
8117 {
8118 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
8119 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
8120 }
8121 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
8122 {
8123 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
8124 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
8125 }
8126 if (!strcmp(name, "vkDebugReportMessageEXT"))
8127 {
8128 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
8129 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
8130 }
8131#endif
8132#ifdef VK_EXT_debug_marker
8133 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
8134 {
8135 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
8136 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
8137 }
8138 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
8139 {
8140 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
8141 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
8142 }
8143 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
8144 {
8145 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
8146 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
8147 }
8148 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
8149 {
8150 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
8151 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
8152 }
8153 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8154 {
8155 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
8156 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8157 }
8158#endif
8159#ifdef VK_AMD_draw_indirect_count
8160 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8161 {
8162 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
8163 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8164 }
8165 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8166 {
8167 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
8168 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8169 }
8170#endif
8171#ifdef VK_AMD_shader_info
8172 if (!strcmp(name, "vkGetShaderInfoAMD"))
8173 {
8174 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
8175 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
8176 }
8177#endif
8178#ifdef VK_NV_external_memory_capabilities
8179 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8180 {
8181 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
8182 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8183 }
8184#endif
8185#ifdef VK_NV_external_memory_win32
8186 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8187 {
8188 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
8189 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
8190 }
8191#endif
8192#ifdef VK_NN_vi_surface
8193 if (!strcmp(name, "vkCreateViSurfaceNN"))
8194 {
8195 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
8196 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8197 }
8198#endif
8199#ifdef VK_EXT_conditional_rendering
8200 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8201 {
8202 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
8203 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8204 }
8205 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8206 {
8207 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
8208 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8209 }
8210#endif
8211#ifdef VK_NVX_device_generated_commands
8212 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8213 {
8214 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8215 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8216 }
8217 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8218 {
8219 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8220 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8221 }
8222 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8223 {
8224 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8225 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
8226 }
8227 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8228 {
8229 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8230 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
8231 }
8232 if (!strcmp(name, "vkCreateObjectTableNVX"))
8233 {
8234 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8235 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
8236 }
8237 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8238 {
8239 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8240 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
8241 }
8242 if (!strcmp(name, "vkRegisterObjectsNVX"))
8243 {
8244 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8245 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
8246 }
8247 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8248 {
8249 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8250 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
8251 }
8252 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8253 {
8254 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
8255 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8256 }
8257#endif
8258#ifdef VK_NV_clip_space_w_scaling
8259 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8260 {
8261 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
8262 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8263 }
8264#endif
8265#ifdef VK_EXT_direct_mode_display
8266 if (!strcmp(name, "vkReleaseDisplayEXT"))
8267 {
8268 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
8269 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8270 }
8271#endif
8272#ifdef VK_EXT_acquire_xlib_display
8273 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8274 {
8275 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
8276 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8277 }
8278 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8279 {
8280 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
8281 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8282 }
8283#endif
8284#ifdef VK_EXT_display_surface_counter
8285 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8286 {
8287 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
8288 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8289 }
8290#endif
8291#ifdef VK_EXT_display_control
8292 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8293 {
8294 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
8295 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
8296 }
8297 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8298 {
8299 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
8300 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
8301 }
8302 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8303 {
8304 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
8305 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
8306 }
8307 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8308 {
8309 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
8310 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
8311 }
8312#endif
8313#ifdef VK_GOOGLE_display_timing
8314 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8315 {
8316 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
8317 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
8318 }
8319 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8320 {
8321 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
8322 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
8323 }
8324#endif
8325#ifdef VK_EXT_discard_rectangles
8326 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8327 {
8328 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
8329 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8330 }
8331#endif
8332#ifdef VK_EXT_hdr_metadata
8333 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8334 {
8335 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
8336 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
8337 }
8338#endif
8339#ifdef VK_MVK_ios_surface
8340 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8341 {
8342 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
8343 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8344 }
8345#endif
8346#ifdef VK_MVK_macos_surface
8347 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8348 {
8349 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
8350 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8351 }
8352#endif
8353#ifdef VK_EXT_debug_utils
8354 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8355 {
8356 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8357 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
8358 }
8359 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8360 {
8361 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8362 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
8363 }
8364 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8365 {
8366 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8367 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8368 }
8369 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8370 {
8371 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8372 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8373 }
8374 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8375 {
8376 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8377 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8378 }
8379 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8380 {
8381 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8382 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8383 }
8384 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8385 {
8386 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8387 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8388 }
8389 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8390 {
8391 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8392 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8393 }
8394 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8395 {
8396 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8397 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8398 }
8399 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8400 {
8401 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8402 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8403 }
8404 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8405 {
8406 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
8407 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8408 }
8409#endif
8410#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8411 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8412 {
8413 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
8414 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
8415 }
8416 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8417 {
8418 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
8419 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
8420 }
8421#endif
8422#ifdef VK_EXT_sample_locations
8423 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8424 {
8425 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
8426 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8427 }
8428 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8429 {
8430 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
8431 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8432 }
8433#endif
8434#ifdef VK_EXT_validation_cache
8435 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8436 {
8437 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
8438 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
8439 }
8440 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8441 {
8442 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
8443 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
8444 }
8445 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8446 {
8447 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
8448 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
8449 }
8450 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8451 {
8452 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
8453 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
8454 }
8455#endif
8456#ifdef VK_EXT_external_memory_host
8457 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8458 {
8459 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
8460 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
8461 }
8462#endif
8463#ifdef VK_AMD_buffer_marker
8464 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8465 {
8466 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
8467 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8468 }
8469#endif
8470#ifdef VK_NV_device_diagnostic_checkpoints
8471 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8472 {
8473 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
8474 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8475 }
8476 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8477 {
8478 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
8479 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8480 }
8481#endif
8482#ifdef VK_GOOGLE_address_space
8483 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8484 {
8485 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
8486 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08008487 }
8488#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008489#ifdef VK_GOOGLE_color_buffer
8490 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8491 {
8492 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
8493 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
8494 }
8495 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8496 {
8497 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
8498 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
8499 }
8500#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008501#ifdef VK_GOOGLE_sized_descriptor_update_template
8502 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8503 {
8504 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
8505 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
8506 }
8507#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008508#ifdef VK_GOOGLE_async_command_buffers
8509 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8510 {
8511 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
8512 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8513 }
8514 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8515 {
8516 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
8517 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8518 }
8519 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8520 {
8521 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
8522 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8523 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008524 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8525 {
8526 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
8527 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8528 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008529#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008530#ifdef VK_GOOGLE_create_resources_with_requirements
8531 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8532 {
8533 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
8534 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
8535 }
8536 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8537 {
8538 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
8539 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
8540 }
8541#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08008542 return nullptr;
8543}
8544
8545} // namespace goldfish_vk