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