blob: c9dd80dd799b0fdbae005a544d8ad201c5109754 [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;
848 vkCreateDescriptorSetLayout_VkResult_return = vkEnc->vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
849 return vkCreateDescriptorSetLayout_VkResult_return;
850}
851static void entry_vkDestroyDescriptorSetLayout(
852 VkDevice device,
853 VkDescriptorSetLayout descriptorSetLayout,
854 const VkAllocationCallbacks* pAllocator)
855{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800856 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800857 auto vkEnc = HostConnection::get()->vkEncoder();
858 vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
859}
860static VkResult entry_vkCreateDescriptorPool(
861 VkDevice device,
862 const VkDescriptorPoolCreateInfo* pCreateInfo,
863 const VkAllocationCallbacks* pAllocator,
864 VkDescriptorPool* pDescriptorPool)
865{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800866 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800867 auto vkEnc = HostConnection::get()->vkEncoder();
868 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
869 vkCreateDescriptorPool_VkResult_return = vkEnc->vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
870 return vkCreateDescriptorPool_VkResult_return;
871}
872static void entry_vkDestroyDescriptorPool(
873 VkDevice device,
874 VkDescriptorPool descriptorPool,
875 const VkAllocationCallbacks* pAllocator)
876{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800877 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800878 auto vkEnc = HostConnection::get()->vkEncoder();
879 vkEnc->vkDestroyDescriptorPool(device, descriptorPool, pAllocator);
880}
881static VkResult entry_vkResetDescriptorPool(
882 VkDevice device,
883 VkDescriptorPool descriptorPool,
884 VkDescriptorPoolResetFlags flags)
885{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800886 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800887 auto vkEnc = HostConnection::get()->vkEncoder();
888 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
889 vkResetDescriptorPool_VkResult_return = vkEnc->vkResetDescriptorPool(device, descriptorPool, flags);
890 return vkResetDescriptorPool_VkResult_return;
891}
892static VkResult entry_vkAllocateDescriptorSets(
893 VkDevice device,
894 const VkDescriptorSetAllocateInfo* pAllocateInfo,
895 VkDescriptorSet* pDescriptorSets)
896{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800897 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800898 auto vkEnc = HostConnection::get()->vkEncoder();
899 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
900 vkAllocateDescriptorSets_VkResult_return = vkEnc->vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
901 return vkAllocateDescriptorSets_VkResult_return;
902}
903static VkResult entry_vkFreeDescriptorSets(
904 VkDevice device,
905 VkDescriptorPool descriptorPool,
906 uint32_t descriptorSetCount,
907 const VkDescriptorSet* pDescriptorSets)
908{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800909 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800910 auto vkEnc = HostConnection::get()->vkEncoder();
911 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
912 vkFreeDescriptorSets_VkResult_return = vkEnc->vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
913 return vkFreeDescriptorSets_VkResult_return;
914}
915static void entry_vkUpdateDescriptorSets(
916 VkDevice device,
917 uint32_t descriptorWriteCount,
918 const VkWriteDescriptorSet* pDescriptorWrites,
919 uint32_t descriptorCopyCount,
920 const VkCopyDescriptorSet* pDescriptorCopies)
921{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800922 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800923 auto vkEnc = HostConnection::get()->vkEncoder();
924 vkEnc->vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
925}
926static VkResult entry_vkCreateFramebuffer(
927 VkDevice device,
928 const VkFramebufferCreateInfo* pCreateInfo,
929 const VkAllocationCallbacks* pAllocator,
930 VkFramebuffer* pFramebuffer)
931{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800932 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800933 auto vkEnc = HostConnection::get()->vkEncoder();
934 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
935 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
936 return vkCreateFramebuffer_VkResult_return;
937}
938static void entry_vkDestroyFramebuffer(
939 VkDevice device,
940 VkFramebuffer framebuffer,
941 const VkAllocationCallbacks* pAllocator)
942{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800943 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800944 auto vkEnc = HostConnection::get()->vkEncoder();
945 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator);
946}
947static VkResult entry_vkCreateRenderPass(
948 VkDevice device,
949 const VkRenderPassCreateInfo* pCreateInfo,
950 const VkAllocationCallbacks* pAllocator,
951 VkRenderPass* pRenderPass)
952{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800953 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800954 auto vkEnc = HostConnection::get()->vkEncoder();
955 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
956 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
957 return vkCreateRenderPass_VkResult_return;
958}
959static void entry_vkDestroyRenderPass(
960 VkDevice device,
961 VkRenderPass renderPass,
962 const VkAllocationCallbacks* pAllocator)
963{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800964 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800965 auto vkEnc = HostConnection::get()->vkEncoder();
966 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator);
967}
968static void entry_vkGetRenderAreaGranularity(
969 VkDevice device,
970 VkRenderPass renderPass,
971 VkExtent2D* pGranularity)
972{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800973 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800974 auto vkEnc = HostConnection::get()->vkEncoder();
975 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity);
976}
977static VkResult entry_vkCreateCommandPool(
978 VkDevice device,
979 const VkCommandPoolCreateInfo* pCreateInfo,
980 const VkAllocationCallbacks* pAllocator,
981 VkCommandPool* pCommandPool)
982{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800983 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800984 auto vkEnc = HostConnection::get()->vkEncoder();
985 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
986 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
987 return vkCreateCommandPool_VkResult_return;
988}
989static void entry_vkDestroyCommandPool(
990 VkDevice device,
991 VkCommandPool commandPool,
992 const VkAllocationCallbacks* pAllocator)
993{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800994 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800995 auto vkEnc = HostConnection::get()->vkEncoder();
996 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator);
997}
998static VkResult entry_vkResetCommandPool(
999 VkDevice device,
1000 VkCommandPool commandPool,
1001 VkCommandPoolResetFlags flags)
1002{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001003 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001004 auto vkEnc = HostConnection::get()->vkEncoder();
1005 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
1006 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags);
1007 return vkResetCommandPool_VkResult_return;
1008}
1009static VkResult entry_vkAllocateCommandBuffers(
1010 VkDevice device,
1011 const VkCommandBufferAllocateInfo* pAllocateInfo,
1012 VkCommandBuffer* pCommandBuffers)
1013{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001014 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001015 auto vkEnc = HostConnection::get()->vkEncoder();
1016 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1017 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
1018 return vkAllocateCommandBuffers_VkResult_return;
1019}
1020static void entry_vkFreeCommandBuffers(
1021 VkDevice device,
1022 VkCommandPool commandPool,
1023 uint32_t commandBufferCount,
1024 const VkCommandBuffer* pCommandBuffers)
1025{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001026 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001027 auto vkEnc = HostConnection::get()->vkEncoder();
1028 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
1029}
1030static VkResult entry_vkBeginCommandBuffer(
1031 VkCommandBuffer commandBuffer,
1032 const VkCommandBufferBeginInfo* pBeginInfo)
1033{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001034 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001035 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001036 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001037 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001038 auto resources = ResourceTracker::get();
1039 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001040 return vkBeginCommandBuffer_VkResult_return;
1041}
1042static VkResult entry_vkEndCommandBuffer(
1043 VkCommandBuffer commandBuffer)
1044{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001045 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001046 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001047 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001048 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001049 auto resources = ResourceTracker::get();
1050 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001051 return vkEndCommandBuffer_VkResult_return;
1052}
1053static VkResult entry_vkResetCommandBuffer(
1054 VkCommandBuffer commandBuffer,
1055 VkCommandBufferResetFlags flags)
1056{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001057 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001058 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001059 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001060 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001061 auto resources = ResourceTracker::get();
1062 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001063 return vkResetCommandBuffer_VkResult_return;
1064}
1065static void entry_vkCmdBindPipeline(
1066 VkCommandBuffer commandBuffer,
1067 VkPipelineBindPoint pipelineBindPoint,
1068 VkPipeline pipeline)
1069{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001070 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001071 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001072 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001073 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
1074}
1075static void entry_vkCmdSetViewport(
1076 VkCommandBuffer commandBuffer,
1077 uint32_t firstViewport,
1078 uint32_t viewportCount,
1079 const VkViewport* pViewports)
1080{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001081 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001082 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001083 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001084 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
1085}
1086static void entry_vkCmdSetScissor(
1087 VkCommandBuffer commandBuffer,
1088 uint32_t firstScissor,
1089 uint32_t scissorCount,
1090 const VkRect2D* pScissors)
1091{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001092 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001093 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001094 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001095 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
1096}
1097static void entry_vkCmdSetLineWidth(
1098 VkCommandBuffer commandBuffer,
1099 float lineWidth)
1100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001101 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001102 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001103 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001104 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth);
1105}
1106static void entry_vkCmdSetDepthBias(
1107 VkCommandBuffer commandBuffer,
1108 float depthBiasConstantFactor,
1109 float depthBiasClamp,
1110 float depthBiasSlopeFactor)
1111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001112 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001113 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001114 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001115 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1116}
1117static void entry_vkCmdSetBlendConstants(
1118 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001119 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001120{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001121 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001122 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001123 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001124 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants);
1125}
1126static void entry_vkCmdSetDepthBounds(
1127 VkCommandBuffer commandBuffer,
1128 float minDepthBounds,
1129 float maxDepthBounds)
1130{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001131 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001132 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001133 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001134 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1135}
1136static void entry_vkCmdSetStencilCompareMask(
1137 VkCommandBuffer commandBuffer,
1138 VkStencilFaceFlags faceMask,
1139 uint32_t compareMask)
1140{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001141 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001142 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001143 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001144 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1145}
1146static void entry_vkCmdSetStencilWriteMask(
1147 VkCommandBuffer commandBuffer,
1148 VkStencilFaceFlags faceMask,
1149 uint32_t writeMask)
1150{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001151 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001152 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001153 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001154 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1155}
1156static void entry_vkCmdSetStencilReference(
1157 VkCommandBuffer commandBuffer,
1158 VkStencilFaceFlags faceMask,
1159 uint32_t reference)
1160{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001161 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001162 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001163 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001164 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference);
1165}
1166static void entry_vkCmdBindDescriptorSets(
1167 VkCommandBuffer commandBuffer,
1168 VkPipelineBindPoint pipelineBindPoint,
1169 VkPipelineLayout layout,
1170 uint32_t firstSet,
1171 uint32_t descriptorSetCount,
1172 const VkDescriptorSet* pDescriptorSets,
1173 uint32_t dynamicOffsetCount,
1174 const uint32_t* pDynamicOffsets)
1175{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001176 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001177 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001178 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001179 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1180}
1181static void entry_vkCmdBindIndexBuffer(
1182 VkCommandBuffer commandBuffer,
1183 VkBuffer buffer,
1184 VkDeviceSize offset,
1185 VkIndexType indexType)
1186{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001187 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001188 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001189 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001190 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1191}
1192static void entry_vkCmdBindVertexBuffers(
1193 VkCommandBuffer commandBuffer,
1194 uint32_t firstBinding,
1195 uint32_t bindingCount,
1196 const VkBuffer* pBuffers,
1197 const VkDeviceSize* pOffsets)
1198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001199 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001200 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001201 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001202 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1203}
1204static void entry_vkCmdDraw(
1205 VkCommandBuffer commandBuffer,
1206 uint32_t vertexCount,
1207 uint32_t instanceCount,
1208 uint32_t firstVertex,
1209 uint32_t firstInstance)
1210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001211 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001212 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001213 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001214 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1215}
1216static void entry_vkCmdDrawIndexed(
1217 VkCommandBuffer commandBuffer,
1218 uint32_t indexCount,
1219 uint32_t instanceCount,
1220 uint32_t firstIndex,
1221 int32_t vertexOffset,
1222 uint32_t firstInstance)
1223{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001224 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001225 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001226 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001227 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1228}
1229static void entry_vkCmdDrawIndirect(
1230 VkCommandBuffer commandBuffer,
1231 VkBuffer buffer,
1232 VkDeviceSize offset,
1233 uint32_t drawCount,
1234 uint32_t stride)
1235{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001236 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001237 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001238 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001239 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1240}
1241static void entry_vkCmdDrawIndexedIndirect(
1242 VkCommandBuffer commandBuffer,
1243 VkBuffer buffer,
1244 VkDeviceSize offset,
1245 uint32_t drawCount,
1246 uint32_t stride)
1247{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001248 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001249 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001250 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001251 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1252}
1253static void entry_vkCmdDispatch(
1254 VkCommandBuffer commandBuffer,
1255 uint32_t groupCountX,
1256 uint32_t groupCountY,
1257 uint32_t groupCountZ)
1258{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001259 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001260 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001261 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001262 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
1263}
1264static void entry_vkCmdDispatchIndirect(
1265 VkCommandBuffer commandBuffer,
1266 VkBuffer buffer,
1267 VkDeviceSize offset)
1268{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001269 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001270 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001271 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001272 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset);
1273}
1274static void entry_vkCmdCopyBuffer(
1275 VkCommandBuffer commandBuffer,
1276 VkBuffer srcBuffer,
1277 VkBuffer dstBuffer,
1278 uint32_t regionCount,
1279 const VkBufferCopy* pRegions)
1280{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001281 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001282 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001283 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001284 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1285}
1286static void entry_vkCmdCopyImage(
1287 VkCommandBuffer commandBuffer,
1288 VkImage srcImage,
1289 VkImageLayout srcImageLayout,
1290 VkImage dstImage,
1291 VkImageLayout dstImageLayout,
1292 uint32_t regionCount,
1293 const VkImageCopy* pRegions)
1294{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001295 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001296 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001297 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001298 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1299}
1300static void entry_vkCmdBlitImage(
1301 VkCommandBuffer commandBuffer,
1302 VkImage srcImage,
1303 VkImageLayout srcImageLayout,
1304 VkImage dstImage,
1305 VkImageLayout dstImageLayout,
1306 uint32_t regionCount,
1307 const VkImageBlit* pRegions,
1308 VkFilter filter)
1309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001310 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001311 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001312 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001313 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1314}
1315static void entry_vkCmdCopyBufferToImage(
1316 VkCommandBuffer commandBuffer,
1317 VkBuffer srcBuffer,
1318 VkImage dstImage,
1319 VkImageLayout dstImageLayout,
1320 uint32_t regionCount,
1321 const VkBufferImageCopy* pRegions)
1322{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001323 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001324 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001325 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001326 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1327}
1328static void entry_vkCmdCopyImageToBuffer(
1329 VkCommandBuffer commandBuffer,
1330 VkImage srcImage,
1331 VkImageLayout srcImageLayout,
1332 VkBuffer dstBuffer,
1333 uint32_t regionCount,
1334 const VkBufferImageCopy* pRegions)
1335{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001336 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001337 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001338 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001339 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1340}
1341static void entry_vkCmdUpdateBuffer(
1342 VkCommandBuffer commandBuffer,
1343 VkBuffer dstBuffer,
1344 VkDeviceSize dstOffset,
1345 VkDeviceSize dataSize,
1346 const void* pData)
1347{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001348 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001349 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001350 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001351 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1352}
1353static void entry_vkCmdFillBuffer(
1354 VkCommandBuffer commandBuffer,
1355 VkBuffer dstBuffer,
1356 VkDeviceSize dstOffset,
1357 VkDeviceSize size,
1358 uint32_t data)
1359{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001360 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001361 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001362 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001363 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1364}
1365static void entry_vkCmdClearColorImage(
1366 VkCommandBuffer commandBuffer,
1367 VkImage image,
1368 VkImageLayout imageLayout,
1369 const VkClearColorValue* pColor,
1370 uint32_t rangeCount,
1371 const VkImageSubresourceRange* pRanges)
1372{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001373 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001374 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001375 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001376 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1377}
1378static void entry_vkCmdClearDepthStencilImage(
1379 VkCommandBuffer commandBuffer,
1380 VkImage image,
1381 VkImageLayout imageLayout,
1382 const VkClearDepthStencilValue* pDepthStencil,
1383 uint32_t rangeCount,
1384 const VkImageSubresourceRange* pRanges)
1385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001386 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001387 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001388 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001389 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1390}
1391static void entry_vkCmdClearAttachments(
1392 VkCommandBuffer commandBuffer,
1393 uint32_t attachmentCount,
1394 const VkClearAttachment* pAttachments,
1395 uint32_t rectCount,
1396 const VkClearRect* pRects)
1397{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001398 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001399 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001400 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001401 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1402}
1403static void entry_vkCmdResolveImage(
1404 VkCommandBuffer commandBuffer,
1405 VkImage srcImage,
1406 VkImageLayout srcImageLayout,
1407 VkImage dstImage,
1408 VkImageLayout dstImageLayout,
1409 uint32_t regionCount,
1410 const VkImageResolve* pRegions)
1411{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001412 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001413 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001414 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001415 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1416}
1417static void entry_vkCmdSetEvent(
1418 VkCommandBuffer commandBuffer,
1419 VkEvent event,
1420 VkPipelineStageFlags stageMask)
1421{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001422 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001423 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001424 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001425 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask);
1426}
1427static void entry_vkCmdResetEvent(
1428 VkCommandBuffer commandBuffer,
1429 VkEvent event,
1430 VkPipelineStageFlags stageMask)
1431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001432 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001433 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001434 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001435 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask);
1436}
1437static void entry_vkCmdWaitEvents(
1438 VkCommandBuffer commandBuffer,
1439 uint32_t eventCount,
1440 const VkEvent* pEvents,
1441 VkPipelineStageFlags srcStageMask,
1442 VkPipelineStageFlags dstStageMask,
1443 uint32_t memoryBarrierCount,
1444 const VkMemoryBarrier* pMemoryBarriers,
1445 uint32_t bufferMemoryBarrierCount,
1446 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1447 uint32_t imageMemoryBarrierCount,
1448 const VkImageMemoryBarrier* pImageMemoryBarriers)
1449{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001450 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001451 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001452 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001453 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1454}
1455static void entry_vkCmdPipelineBarrier(
1456 VkCommandBuffer commandBuffer,
1457 VkPipelineStageFlags srcStageMask,
1458 VkPipelineStageFlags dstStageMask,
1459 VkDependencyFlags dependencyFlags,
1460 uint32_t memoryBarrierCount,
1461 const VkMemoryBarrier* pMemoryBarriers,
1462 uint32_t bufferMemoryBarrierCount,
1463 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1464 uint32_t imageMemoryBarrierCount,
1465 const VkImageMemoryBarrier* pImageMemoryBarriers)
1466{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001467 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001468 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001469 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001470 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1471}
1472static void entry_vkCmdBeginQuery(
1473 VkCommandBuffer commandBuffer,
1474 VkQueryPool queryPool,
1475 uint32_t query,
1476 VkQueryControlFlags flags)
1477{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001478 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001479 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001480 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001481 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags);
1482}
1483static void entry_vkCmdEndQuery(
1484 VkCommandBuffer commandBuffer,
1485 VkQueryPool queryPool,
1486 uint32_t query)
1487{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001488 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001489 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001490 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001491 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query);
1492}
1493static void entry_vkCmdResetQueryPool(
1494 VkCommandBuffer commandBuffer,
1495 VkQueryPool queryPool,
1496 uint32_t firstQuery,
1497 uint32_t queryCount)
1498{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001499 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001500 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001501 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001502 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1503}
1504static void entry_vkCmdWriteTimestamp(
1505 VkCommandBuffer commandBuffer,
1506 VkPipelineStageFlagBits pipelineStage,
1507 VkQueryPool queryPool,
1508 uint32_t query)
1509{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001510 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001511 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001512 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001513 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1514}
1515static void entry_vkCmdCopyQueryPoolResults(
1516 VkCommandBuffer commandBuffer,
1517 VkQueryPool queryPool,
1518 uint32_t firstQuery,
1519 uint32_t queryCount,
1520 VkBuffer dstBuffer,
1521 VkDeviceSize dstOffset,
1522 VkDeviceSize stride,
1523 VkQueryResultFlags flags)
1524{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001525 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001526 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001527 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001528 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1529}
1530static void entry_vkCmdPushConstants(
1531 VkCommandBuffer commandBuffer,
1532 VkPipelineLayout layout,
1533 VkShaderStageFlags stageFlags,
1534 uint32_t offset,
1535 uint32_t size,
1536 const void* pValues)
1537{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001538 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001539 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001540 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001541 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1542}
1543static void entry_vkCmdBeginRenderPass(
1544 VkCommandBuffer commandBuffer,
1545 const VkRenderPassBeginInfo* pRenderPassBegin,
1546 VkSubpassContents contents)
1547{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001548 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001549 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001550 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001551 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1552}
1553static void entry_vkCmdNextSubpass(
1554 VkCommandBuffer commandBuffer,
1555 VkSubpassContents contents)
1556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001557 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001558 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001559 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001560 vkEnc->vkCmdNextSubpass(commandBuffer, contents);
1561}
1562static void entry_vkCmdEndRenderPass(
1563 VkCommandBuffer commandBuffer)
1564{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001565 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001566 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001567 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001568 vkEnc->vkCmdEndRenderPass(commandBuffer);
1569}
1570static void entry_vkCmdExecuteCommands(
1571 VkCommandBuffer commandBuffer,
1572 uint32_t commandBufferCount,
1573 const VkCommandBuffer* pCommandBuffers)
1574{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001575 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001576 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001577 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001578 vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1579}
1580#endif
1581#ifdef VK_VERSION_1_1
1582static VkResult entry_vkEnumerateInstanceVersion(
1583 uint32_t* pApiVersion)
1584{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001585 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001586 auto vkEnc = HostConnection::get()->vkEncoder();
1587 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1588 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion);
1589 return vkEnumerateInstanceVersion_VkResult_return;
1590}
1591static VkResult entry_vkBindBufferMemory2(
1592 VkDevice device,
1593 uint32_t bindInfoCount,
1594 const VkBindBufferMemoryInfo* pBindInfos)
1595{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001596 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001597 auto vkEnc = HostConnection::get()->vkEncoder();
1598 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001599 auto resources = ResourceTracker::get();
1600 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001601 return vkBindBufferMemory2_VkResult_return;
1602}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001603static VkResult dynCheck_entry_vkBindBufferMemory2(
1604 VkDevice device,
1605 uint32_t bindInfoCount,
1606 const VkBindBufferMemoryInfo* pBindInfos)
1607{
1608 auto resources = ResourceTracker::get();
1609 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1610 {
1611 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1612 }
1613 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1614 auto vkEnc = HostConnection::get()->vkEncoder();
1615 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1616 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1617 return vkBindBufferMemory2_VkResult_return;
1618}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001619static VkResult entry_vkBindImageMemory2(
1620 VkDevice device,
1621 uint32_t bindInfoCount,
1622 const VkBindImageMemoryInfo* pBindInfos)
1623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001624 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001625 auto vkEnc = HostConnection::get()->vkEncoder();
1626 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001627 auto resources = ResourceTracker::get();
1628 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001629 return vkBindImageMemory2_VkResult_return;
1630}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001631static VkResult dynCheck_entry_vkBindImageMemory2(
1632 VkDevice device,
1633 uint32_t bindInfoCount,
1634 const VkBindImageMemoryInfo* pBindInfos)
1635{
1636 auto resources = ResourceTracker::get();
1637 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1638 {
1639 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1640 }
1641 AEMU_SCOPED_TRACE("vkBindImageMemory2");
1642 auto vkEnc = HostConnection::get()->vkEncoder();
1643 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1644 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1645 return vkBindImageMemory2_VkResult_return;
1646}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001647static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1648 VkDevice device,
1649 uint32_t heapIndex,
1650 uint32_t localDeviceIndex,
1651 uint32_t remoteDeviceIndex,
1652 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1653{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001654 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001655 auto vkEnc = HostConnection::get()->vkEncoder();
1656 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1657}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001658static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1659 VkDevice device,
1660 uint32_t heapIndex,
1661 uint32_t localDeviceIndex,
1662 uint32_t remoteDeviceIndex,
1663 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1664{
1665 auto resources = ResourceTracker::get();
1666 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1667 {
1668 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1669 }
1670 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1671 auto vkEnc = HostConnection::get()->vkEncoder();
1672 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1673}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001674static void entry_vkCmdSetDeviceMask(
1675 VkCommandBuffer commandBuffer,
1676 uint32_t deviceMask)
1677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001678 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001679 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001680 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001681 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask);
1682}
1683static void entry_vkCmdDispatchBase(
1684 VkCommandBuffer commandBuffer,
1685 uint32_t baseGroupX,
1686 uint32_t baseGroupY,
1687 uint32_t baseGroupZ,
1688 uint32_t groupCountX,
1689 uint32_t groupCountY,
1690 uint32_t groupCountZ)
1691{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001692 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001693 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001694 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001695 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1696}
1697static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1698 VkInstance instance,
1699 uint32_t* pPhysicalDeviceGroupCount,
1700 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001702 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001703 auto vkEnc = HostConnection::get()->vkEncoder();
1704 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1705 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1706 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1707}
1708static void entry_vkGetImageMemoryRequirements2(
1709 VkDevice device,
1710 const VkImageMemoryRequirementsInfo2* pInfo,
1711 VkMemoryRequirements2* pMemoryRequirements)
1712{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001713 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001714 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001715 auto resources = ResourceTracker::get();
1716 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001717}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001718static void dynCheck_entry_vkGetImageMemoryRequirements2(
1719 VkDevice device,
1720 const VkImageMemoryRequirementsInfo2* pInfo,
1721 VkMemoryRequirements2* pMemoryRequirements)
1722{
1723 auto resources = ResourceTracker::get();
1724 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1725 {
1726 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1727 }
1728 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1729 auto vkEnc = HostConnection::get()->vkEncoder();
1730 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1731}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001732static void entry_vkGetBufferMemoryRequirements2(
1733 VkDevice device,
1734 const VkBufferMemoryRequirementsInfo2* pInfo,
1735 VkMemoryRequirements2* pMemoryRequirements)
1736{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001737 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001738 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001739 auto resources = ResourceTracker::get();
1740 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001741}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001742static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1743 VkDevice device,
1744 const VkBufferMemoryRequirementsInfo2* pInfo,
1745 VkMemoryRequirements2* pMemoryRequirements)
1746{
1747 auto resources = ResourceTracker::get();
1748 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1749 {
1750 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1751 }
1752 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1753 auto vkEnc = HostConnection::get()->vkEncoder();
1754 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1755}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001756static void entry_vkGetImageSparseMemoryRequirements2(
1757 VkDevice device,
1758 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1759 uint32_t* pSparseMemoryRequirementCount,
1760 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1761{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001762 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001763 auto vkEnc = HostConnection::get()->vkEncoder();
1764 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1765}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001766static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1767 VkDevice device,
1768 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1769 uint32_t* pSparseMemoryRequirementCount,
1770 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1771{
1772 auto resources = ResourceTracker::get();
1773 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1774 {
1775 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1776 }
1777 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1778 auto vkEnc = HostConnection::get()->vkEncoder();
1779 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1780}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001781static void entry_vkGetPhysicalDeviceFeatures2(
1782 VkPhysicalDevice physicalDevice,
1783 VkPhysicalDeviceFeatures2* pFeatures)
1784{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001785 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001786 auto vkEnc = HostConnection::get()->vkEncoder();
1787 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
1788}
1789static void entry_vkGetPhysicalDeviceProperties2(
1790 VkPhysicalDevice physicalDevice,
1791 VkPhysicalDeviceProperties2* pProperties)
1792{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001793 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001794 auto vkEnc = HostConnection::get()->vkEncoder();
1795 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
1796}
1797static void entry_vkGetPhysicalDeviceFormatProperties2(
1798 VkPhysicalDevice physicalDevice,
1799 VkFormat format,
1800 VkFormatProperties2* pFormatProperties)
1801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001802 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001803 auto vkEnc = HostConnection::get()->vkEncoder();
1804 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
1805}
1806static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1807 VkPhysicalDevice physicalDevice,
1808 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1809 VkImageFormatProperties2* pImageFormatProperties)
1810{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001811 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001812 auto vkEnc = HostConnection::get()->vkEncoder();
1813 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001814 auto resources = ResourceTracker::get();
1815 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001816 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1817}
1818static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1819 VkPhysicalDevice physicalDevice,
1820 uint32_t* pQueueFamilyPropertyCount,
1821 VkQueueFamilyProperties2* pQueueFamilyProperties)
1822{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001823 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001824 auto vkEnc = HostConnection::get()->vkEncoder();
1825 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1826}
1827static void entry_vkGetPhysicalDeviceMemoryProperties2(
1828 VkPhysicalDevice physicalDevice,
1829 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1830{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001831 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001832 auto vkEnc = HostConnection::get()->vkEncoder();
1833 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
1834}
1835static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1836 VkPhysicalDevice physicalDevice,
1837 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1838 uint32_t* pPropertyCount,
1839 VkSparseImageFormatProperties2* pProperties)
1840{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001841 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001842 auto vkEnc = HostConnection::get()->vkEncoder();
1843 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
1844}
1845static void entry_vkTrimCommandPool(
1846 VkDevice device,
1847 VkCommandPool commandPool,
1848 VkCommandPoolTrimFlags flags)
1849{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001850 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001851 auto vkEnc = HostConnection::get()->vkEncoder();
1852 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1853}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001854static void dynCheck_entry_vkTrimCommandPool(
1855 VkDevice device,
1856 VkCommandPool commandPool,
1857 VkCommandPoolTrimFlags flags)
1858{
1859 auto resources = ResourceTracker::get();
1860 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1861 {
1862 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1863 }
1864 AEMU_SCOPED_TRACE("vkTrimCommandPool");
1865 auto vkEnc = HostConnection::get()->vkEncoder();
1866 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1867}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001868static void entry_vkGetDeviceQueue2(
1869 VkDevice device,
1870 const VkDeviceQueueInfo2* pQueueInfo,
1871 VkQueue* pQueue)
1872{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001873 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001874 auto vkEnc = HostConnection::get()->vkEncoder();
1875 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1876}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001877static void dynCheck_entry_vkGetDeviceQueue2(
1878 VkDevice device,
1879 const VkDeviceQueueInfo2* pQueueInfo,
1880 VkQueue* pQueue)
1881{
1882 auto resources = ResourceTracker::get();
1883 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1884 {
1885 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1886 }
1887 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1888 auto vkEnc = HostConnection::get()->vkEncoder();
1889 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1890}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001891static VkResult entry_vkCreateSamplerYcbcrConversion(
1892 VkDevice device,
1893 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1894 const VkAllocationCallbacks* pAllocator,
1895 VkSamplerYcbcrConversion* pYcbcrConversion)
1896{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001897 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001898 auto vkEnc = HostConnection::get()->vkEncoder();
1899 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001900 auto resources = ResourceTracker::get();
1901 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001902 return vkCreateSamplerYcbcrConversion_VkResult_return;
1903}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001904static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1905 VkDevice device,
1906 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1907 const VkAllocationCallbacks* pAllocator,
1908 VkSamplerYcbcrConversion* pYcbcrConversion)
1909{
1910 auto resources = ResourceTracker::get();
1911 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1912 {
1913 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1914 }
1915 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1916 auto vkEnc = HostConnection::get()->vkEncoder();
1917 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1918 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1919 return vkCreateSamplerYcbcrConversion_VkResult_return;
1920}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001921static void entry_vkDestroySamplerYcbcrConversion(
1922 VkDevice device,
1923 VkSamplerYcbcrConversion ycbcrConversion,
1924 const VkAllocationCallbacks* pAllocator)
1925{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001926 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001927 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001928 auto resources = ResourceTracker::get();
1929 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001930}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001931static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1932 VkDevice device,
1933 VkSamplerYcbcrConversion ycbcrConversion,
1934 const VkAllocationCallbacks* pAllocator)
1935{
1936 auto resources = ResourceTracker::get();
1937 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1938 {
1939 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1940 }
1941 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1942 auto vkEnc = HostConnection::get()->vkEncoder();
1943 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1944}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001945static VkResult entry_vkCreateDescriptorUpdateTemplate(
1946 VkDevice device,
1947 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1948 const VkAllocationCallbacks* pAllocator,
1949 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1950{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001951 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001952 auto vkEnc = HostConnection::get()->vkEncoder();
1953 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1954 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1955 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1956}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001957static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1958 VkDevice device,
1959 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1960 const VkAllocationCallbacks* pAllocator,
1961 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1962{
1963 auto resources = ResourceTracker::get();
1964 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1965 {
1966 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1967 }
1968 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1969 auto vkEnc = HostConnection::get()->vkEncoder();
1970 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1971 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1972 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1973}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001974static void entry_vkDestroyDescriptorUpdateTemplate(
1975 VkDevice device,
1976 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1977 const VkAllocationCallbacks* pAllocator)
1978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001979 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001980 auto vkEnc = HostConnection::get()->vkEncoder();
1981 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1982}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001983static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1984 VkDevice device,
1985 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1986 const VkAllocationCallbacks* pAllocator)
1987{
1988 auto resources = ResourceTracker::get();
1989 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1990 {
1991 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1992 }
1993 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1994 auto vkEnc = HostConnection::get()->vkEncoder();
1995 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1996}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001997static void entry_vkUpdateDescriptorSetWithTemplate(
1998 VkDevice device,
1999 VkDescriptorSet descriptorSet,
2000 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2001 const void* pData)
2002{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002003 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002004 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07002005 auto resources = ResourceTracker::get();
2006 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002007}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002008static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
2009 VkDevice device,
2010 VkDescriptorSet descriptorSet,
2011 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2012 const void* pData)
2013{
2014 auto resources = ResourceTracker::get();
2015 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2016 {
2017 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
2018 }
2019 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
2020 auto vkEnc = HostConnection::get()->vkEncoder();
2021 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2022}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002023static void entry_vkGetPhysicalDeviceExternalBufferProperties(
2024 VkPhysicalDevice physicalDevice,
2025 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2026 VkExternalBufferProperties* pExternalBufferProperties)
2027{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002028 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002029 auto vkEnc = HostConnection::get()->vkEncoder();
2030 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2031}
2032static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2033 VkPhysicalDevice physicalDevice,
2034 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2035 VkExternalFenceProperties* pExternalFenceProperties)
2036{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002037 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002038 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002039 auto resources = ResourceTracker::get();
2040 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002041}
2042static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2043 VkPhysicalDevice physicalDevice,
2044 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2045 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002047 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002048 auto vkEnc = HostConnection::get()->vkEncoder();
2049 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2050}
2051static void entry_vkGetDescriptorSetLayoutSupport(
2052 VkDevice device,
2053 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2054 VkDescriptorSetLayoutSupport* pSupport)
2055{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002056 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002057 auto vkEnc = HostConnection::get()->vkEncoder();
2058 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2059}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002060static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2061 VkDevice device,
2062 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2063 VkDescriptorSetLayoutSupport* pSupport)
2064{
2065 auto resources = ResourceTracker::get();
2066 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2067 {
2068 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2069 }
2070 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2071 auto vkEnc = HostConnection::get()->vkEncoder();
2072 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2073}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002074#endif
2075#ifdef VK_KHR_surface
2076static void entry_vkDestroySurfaceKHR(
2077 VkInstance instance,
2078 VkSurfaceKHR surface,
2079 const VkAllocationCallbacks* pAllocator)
2080{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002081 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002082 auto vkEnc = HostConnection::get()->vkEncoder();
2083 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator);
2084}
2085static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2086 VkPhysicalDevice physicalDevice,
2087 uint32_t queueFamilyIndex,
2088 VkSurfaceKHR surface,
2089 VkBool32* pSupported)
2090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002091 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002092 auto vkEnc = HostConnection::get()->vkEncoder();
2093 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2094 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
2095 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2096}
2097static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2098 VkPhysicalDevice physicalDevice,
2099 VkSurfaceKHR surface,
2100 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2101{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002102 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002103 auto vkEnc = HostConnection::get()->vkEncoder();
2104 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2105 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
2106 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2107}
2108static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2109 VkPhysicalDevice physicalDevice,
2110 VkSurfaceKHR surface,
2111 uint32_t* pSurfaceFormatCount,
2112 VkSurfaceFormatKHR* pSurfaceFormats)
2113{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002114 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002115 auto vkEnc = HostConnection::get()->vkEncoder();
2116 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2117 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
2118 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2119}
2120static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2121 VkPhysicalDevice physicalDevice,
2122 VkSurfaceKHR surface,
2123 uint32_t* pPresentModeCount,
2124 VkPresentModeKHR* pPresentModes)
2125{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002126 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002127 auto vkEnc = HostConnection::get()->vkEncoder();
2128 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2129 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
2130 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2131}
2132#endif
2133#ifdef VK_KHR_swapchain
2134static VkResult entry_vkCreateSwapchainKHR(
2135 VkDevice device,
2136 const VkSwapchainCreateInfoKHR* pCreateInfo,
2137 const VkAllocationCallbacks* pAllocator,
2138 VkSwapchainKHR* pSwapchain)
2139{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002140 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002141 auto vkEnc = HostConnection::get()->vkEncoder();
2142 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2143 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2144 return vkCreateSwapchainKHR_VkResult_return;
2145}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002146static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2147 VkDevice device,
2148 const VkSwapchainCreateInfoKHR* pCreateInfo,
2149 const VkAllocationCallbacks* pAllocator,
2150 VkSwapchainKHR* pSwapchain)
2151{
2152 auto resources = ResourceTracker::get();
2153 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2154 {
2155 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2156 }
2157 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2158 auto vkEnc = HostConnection::get()->vkEncoder();
2159 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2160 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2161 return vkCreateSwapchainKHR_VkResult_return;
2162}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002163static void entry_vkDestroySwapchainKHR(
2164 VkDevice device,
2165 VkSwapchainKHR swapchain,
2166 const VkAllocationCallbacks* pAllocator)
2167{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002168 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002169 auto vkEnc = HostConnection::get()->vkEncoder();
2170 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2171}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002172static void dynCheck_entry_vkDestroySwapchainKHR(
2173 VkDevice device,
2174 VkSwapchainKHR swapchain,
2175 const VkAllocationCallbacks* pAllocator)
2176{
2177 auto resources = ResourceTracker::get();
2178 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2179 {
2180 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2181 }
2182 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2183 auto vkEnc = HostConnection::get()->vkEncoder();
2184 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2185}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002186static VkResult entry_vkGetSwapchainImagesKHR(
2187 VkDevice device,
2188 VkSwapchainKHR swapchain,
2189 uint32_t* pSwapchainImageCount,
2190 VkImage* pSwapchainImages)
2191{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002192 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002193 auto vkEnc = HostConnection::get()->vkEncoder();
2194 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2195 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2196 return vkGetSwapchainImagesKHR_VkResult_return;
2197}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002198static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2199 VkDevice device,
2200 VkSwapchainKHR swapchain,
2201 uint32_t* pSwapchainImageCount,
2202 VkImage* pSwapchainImages)
2203{
2204 auto resources = ResourceTracker::get();
2205 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2206 {
2207 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2208 }
2209 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2210 auto vkEnc = HostConnection::get()->vkEncoder();
2211 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2212 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2213 return vkGetSwapchainImagesKHR_VkResult_return;
2214}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002215static VkResult entry_vkAcquireNextImageKHR(
2216 VkDevice device,
2217 VkSwapchainKHR swapchain,
2218 uint64_t timeout,
2219 VkSemaphore semaphore,
2220 VkFence fence,
2221 uint32_t* pImageIndex)
2222{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002223 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002224 auto vkEnc = HostConnection::get()->vkEncoder();
2225 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2226 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2227 return vkAcquireNextImageKHR_VkResult_return;
2228}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002229static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2230 VkDevice device,
2231 VkSwapchainKHR swapchain,
2232 uint64_t timeout,
2233 VkSemaphore semaphore,
2234 VkFence fence,
2235 uint32_t* pImageIndex)
2236{
2237 auto resources = ResourceTracker::get();
2238 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2239 {
2240 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2241 }
2242 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2243 auto vkEnc = HostConnection::get()->vkEncoder();
2244 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2245 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2246 return vkAcquireNextImageKHR_VkResult_return;
2247}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002248static VkResult entry_vkQueuePresentKHR(
2249 VkQueue queue,
2250 const VkPresentInfoKHR* pPresentInfo)
2251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002252 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002253 auto vkEnc = HostConnection::get()->vkEncoder();
2254 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2255 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo);
2256 return vkQueuePresentKHR_VkResult_return;
2257}
2258static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2259 VkDevice device,
2260 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2261{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002262 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002263 auto vkEnc = HostConnection::get()->vkEncoder();
2264 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2265 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2266 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2267}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002268static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2269 VkDevice device,
2270 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2271{
2272 auto resources = ResourceTracker::get();
2273 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2274 {
2275 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2276 }
2277 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2278 auto vkEnc = HostConnection::get()->vkEncoder();
2279 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2280 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2281 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2282}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002283static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2284 VkDevice device,
2285 VkSurfaceKHR surface,
2286 VkDeviceGroupPresentModeFlagsKHR* pModes)
2287{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002288 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002289 auto vkEnc = HostConnection::get()->vkEncoder();
2290 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2291 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2292 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2293}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002294static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2295 VkDevice device,
2296 VkSurfaceKHR surface,
2297 VkDeviceGroupPresentModeFlagsKHR* pModes)
2298{
2299 auto resources = ResourceTracker::get();
2300 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2301 {
2302 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2303 }
2304 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2305 auto vkEnc = HostConnection::get()->vkEncoder();
2306 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2307 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2308 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2309}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002310static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2311 VkPhysicalDevice physicalDevice,
2312 VkSurfaceKHR surface,
2313 uint32_t* pRectCount,
2314 VkRect2D* pRects)
2315{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002316 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002317 auto vkEnc = HostConnection::get()->vkEncoder();
2318 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2319 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
2320 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2321}
2322static VkResult entry_vkAcquireNextImage2KHR(
2323 VkDevice device,
2324 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2325 uint32_t* pImageIndex)
2326{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002327 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002328 auto vkEnc = HostConnection::get()->vkEncoder();
2329 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2330 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2331 return vkAcquireNextImage2KHR_VkResult_return;
2332}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002333static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2334 VkDevice device,
2335 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2336 uint32_t* pImageIndex)
2337{
2338 auto resources = ResourceTracker::get();
2339 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2340 {
2341 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2342 }
2343 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2344 auto vkEnc = HostConnection::get()->vkEncoder();
2345 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2346 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2347 return vkAcquireNextImage2KHR_VkResult_return;
2348}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002349#endif
2350#ifdef VK_KHR_display
2351static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2352 VkPhysicalDevice physicalDevice,
2353 uint32_t* pPropertyCount,
2354 VkDisplayPropertiesKHR* pProperties)
2355{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002356 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002357 auto vkEnc = HostConnection::get()->vkEncoder();
2358 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2359 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2360 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2361}
2362static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2363 VkPhysicalDevice physicalDevice,
2364 uint32_t* pPropertyCount,
2365 VkDisplayPlanePropertiesKHR* pProperties)
2366{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002367 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002368 auto vkEnc = HostConnection::get()->vkEncoder();
2369 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2370 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2371 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2372}
2373static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2374 VkPhysicalDevice physicalDevice,
2375 uint32_t planeIndex,
2376 uint32_t* pDisplayCount,
2377 VkDisplayKHR* pDisplays)
2378{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002379 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002380 auto vkEnc = HostConnection::get()->vkEncoder();
2381 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2382 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
2383 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2384}
2385static VkResult entry_vkGetDisplayModePropertiesKHR(
2386 VkPhysicalDevice physicalDevice,
2387 VkDisplayKHR display,
2388 uint32_t* pPropertyCount,
2389 VkDisplayModePropertiesKHR* pProperties)
2390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002391 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002392 auto vkEnc = HostConnection::get()->vkEncoder();
2393 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2394 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
2395 return vkGetDisplayModePropertiesKHR_VkResult_return;
2396}
2397static VkResult entry_vkCreateDisplayModeKHR(
2398 VkPhysicalDevice physicalDevice,
2399 VkDisplayKHR display,
2400 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2401 const VkAllocationCallbacks* pAllocator,
2402 VkDisplayModeKHR* pMode)
2403{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002404 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002405 auto vkEnc = HostConnection::get()->vkEncoder();
2406 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2407 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
2408 return vkCreateDisplayModeKHR_VkResult_return;
2409}
2410static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2411 VkPhysicalDevice physicalDevice,
2412 VkDisplayModeKHR mode,
2413 uint32_t planeIndex,
2414 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2415{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002416 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002417 auto vkEnc = HostConnection::get()->vkEncoder();
2418 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2419 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
2420 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2421}
2422static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2423 VkInstance instance,
2424 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2425 const VkAllocationCallbacks* pAllocator,
2426 VkSurfaceKHR* pSurface)
2427{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002428 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002429 auto vkEnc = HostConnection::get()->vkEncoder();
2430 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2431 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2432 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2433}
2434#endif
2435#ifdef VK_KHR_display_swapchain
2436static VkResult entry_vkCreateSharedSwapchainsKHR(
2437 VkDevice device,
2438 uint32_t swapchainCount,
2439 const VkSwapchainCreateInfoKHR* pCreateInfos,
2440 const VkAllocationCallbacks* pAllocator,
2441 VkSwapchainKHR* pSwapchains)
2442{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002443 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002444 auto vkEnc = HostConnection::get()->vkEncoder();
2445 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2446 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2447 return vkCreateSharedSwapchainsKHR_VkResult_return;
2448}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002449static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2450 VkDevice device,
2451 uint32_t swapchainCount,
2452 const VkSwapchainCreateInfoKHR* pCreateInfos,
2453 const VkAllocationCallbacks* pAllocator,
2454 VkSwapchainKHR* pSwapchains)
2455{
2456 auto resources = ResourceTracker::get();
2457 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2458 {
2459 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2460 }
2461 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2462 auto vkEnc = HostConnection::get()->vkEncoder();
2463 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2464 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2465 return vkCreateSharedSwapchainsKHR_VkResult_return;
2466}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002467#endif
2468#ifdef VK_KHR_xlib_surface
2469static VkResult entry_vkCreateXlibSurfaceKHR(
2470 VkInstance instance,
2471 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2472 const VkAllocationCallbacks* pAllocator,
2473 VkSurfaceKHR* pSurface)
2474{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002475 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002476 auto vkEnc = HostConnection::get()->vkEncoder();
2477 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2478 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2479 return vkCreateXlibSurfaceKHR_VkResult_return;
2480}
2481static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2482 VkPhysicalDevice physicalDevice,
2483 uint32_t queueFamilyIndex,
2484 Display* dpy,
2485 VisualID visualID)
2486{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002487 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002488 auto vkEnc = HostConnection::get()->vkEncoder();
2489 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2490 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
2491 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2492}
2493#endif
2494#ifdef VK_KHR_xcb_surface
2495static VkResult entry_vkCreateXcbSurfaceKHR(
2496 VkInstance instance,
2497 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2498 const VkAllocationCallbacks* pAllocator,
2499 VkSurfaceKHR* pSurface)
2500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002501 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002502 auto vkEnc = HostConnection::get()->vkEncoder();
2503 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2504 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2505 return vkCreateXcbSurfaceKHR_VkResult_return;
2506}
2507static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2508 VkPhysicalDevice physicalDevice,
2509 uint32_t queueFamilyIndex,
2510 xcb_connection_t* connection,
2511 xcb_visualid_t visual_id)
2512{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002513 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002514 auto vkEnc = HostConnection::get()->vkEncoder();
2515 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2516 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
2517 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2518}
2519#endif
2520#ifdef VK_KHR_wayland_surface
2521static VkResult entry_vkCreateWaylandSurfaceKHR(
2522 VkInstance instance,
2523 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2524 const VkAllocationCallbacks* pAllocator,
2525 VkSurfaceKHR* pSurface)
2526{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002527 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002528 auto vkEnc = HostConnection::get()->vkEncoder();
2529 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2530 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2531 return vkCreateWaylandSurfaceKHR_VkResult_return;
2532}
2533static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2534 VkPhysicalDevice physicalDevice,
2535 uint32_t queueFamilyIndex,
2536 wl_display* display)
2537{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002538 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002539 auto vkEnc = HostConnection::get()->vkEncoder();
2540 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2541 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
2542 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2543}
2544#endif
2545#ifdef VK_KHR_mir_surface
2546static VkResult entry_vkCreateMirSurfaceKHR(
2547 VkInstance instance,
2548 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2549 const VkAllocationCallbacks* pAllocator,
2550 VkSurfaceKHR* pSurface)
2551{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002552 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002553 auto vkEnc = HostConnection::get()->vkEncoder();
2554 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
2555 vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2556 return vkCreateMirSurfaceKHR_VkResult_return;
2557}
2558static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2559 VkPhysicalDevice physicalDevice,
2560 uint32_t queueFamilyIndex,
2561 MirConnection* connection)
2562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002563 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002564 auto vkEnc = HostConnection::get()->vkEncoder();
2565 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2566 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection);
2567 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2568}
2569#endif
2570#ifdef VK_KHR_android_surface
2571static VkResult entry_vkCreateAndroidSurfaceKHR(
2572 VkInstance instance,
2573 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2574 const VkAllocationCallbacks* pAllocator,
2575 VkSurfaceKHR* pSurface)
2576{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002577 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002578 auto vkEnc = HostConnection::get()->vkEncoder();
2579 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2580 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2581 return vkCreateAndroidSurfaceKHR_VkResult_return;
2582}
2583#endif
2584#ifdef VK_KHR_win32_surface
2585static VkResult entry_vkCreateWin32SurfaceKHR(
2586 VkInstance instance,
2587 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2588 const VkAllocationCallbacks* pAllocator,
2589 VkSurfaceKHR* pSurface)
2590{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002591 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002592 auto vkEnc = HostConnection::get()->vkEncoder();
2593 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2594 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2595 return vkCreateWin32SurfaceKHR_VkResult_return;
2596}
2597static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2598 VkPhysicalDevice physicalDevice,
2599 uint32_t queueFamilyIndex)
2600{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002601 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002602 auto vkEnc = HostConnection::get()->vkEncoder();
2603 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2604 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
2605 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2606}
2607#endif
2608#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2609#endif
2610#ifdef VK_KHR_multiview
2611#endif
2612#ifdef VK_KHR_get_physical_device_properties2
2613static void entry_vkGetPhysicalDeviceFeatures2KHR(
2614 VkPhysicalDevice physicalDevice,
2615 VkPhysicalDeviceFeatures2* pFeatures)
2616{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002617 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002618 auto vkEnc = HostConnection::get()->vkEncoder();
2619 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
2620}
2621static void entry_vkGetPhysicalDeviceProperties2KHR(
2622 VkPhysicalDevice physicalDevice,
2623 VkPhysicalDeviceProperties2* pProperties)
2624{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002625 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002626 auto vkEnc = HostConnection::get()->vkEncoder();
2627 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
2628}
2629static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2630 VkPhysicalDevice physicalDevice,
2631 VkFormat format,
2632 VkFormatProperties2* pFormatProperties)
2633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002634 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002635 auto vkEnc = HostConnection::get()->vkEncoder();
2636 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
2637}
2638static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2639 VkPhysicalDevice physicalDevice,
2640 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2641 VkImageFormatProperties2* pImageFormatProperties)
2642{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002643 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002644 auto vkEnc = HostConnection::get()->vkEncoder();
2645 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002646 auto resources = ResourceTracker::get();
2647 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002648 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2649}
2650static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2651 VkPhysicalDevice physicalDevice,
2652 uint32_t* pQueueFamilyPropertyCount,
2653 VkQueueFamilyProperties2* pQueueFamilyProperties)
2654{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002655 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002656 auto vkEnc = HostConnection::get()->vkEncoder();
2657 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2658}
2659static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2660 VkPhysicalDevice physicalDevice,
2661 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2662{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002663 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002664 auto vkEnc = HostConnection::get()->vkEncoder();
2665 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
2666}
2667static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2668 VkPhysicalDevice physicalDevice,
2669 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2670 uint32_t* pPropertyCount,
2671 VkSparseImageFormatProperties2* pProperties)
2672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002673 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002674 auto vkEnc = HostConnection::get()->vkEncoder();
2675 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2676}
2677#endif
2678#ifdef VK_KHR_device_group
2679static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2680 VkDevice device,
2681 uint32_t heapIndex,
2682 uint32_t localDeviceIndex,
2683 uint32_t remoteDeviceIndex,
2684 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2685{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002686 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002687 auto vkEnc = HostConnection::get()->vkEncoder();
2688 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2689}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002690static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2691 VkDevice device,
2692 uint32_t heapIndex,
2693 uint32_t localDeviceIndex,
2694 uint32_t remoteDeviceIndex,
2695 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2696{
2697 auto resources = ResourceTracker::get();
2698 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2699 {
2700 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2701 }
2702 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2703 auto vkEnc = HostConnection::get()->vkEncoder();
2704 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2705}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002706static void entry_vkCmdSetDeviceMaskKHR(
2707 VkCommandBuffer commandBuffer,
2708 uint32_t deviceMask)
2709{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002710 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002711 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002712 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002713 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2714}
2715static void entry_vkCmdDispatchBaseKHR(
2716 VkCommandBuffer commandBuffer,
2717 uint32_t baseGroupX,
2718 uint32_t baseGroupY,
2719 uint32_t baseGroupZ,
2720 uint32_t groupCountX,
2721 uint32_t groupCountY,
2722 uint32_t groupCountZ)
2723{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002724 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002725 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002726 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002727 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2728}
2729#endif
2730#ifdef VK_KHR_shader_draw_parameters
2731#endif
2732#ifdef VK_KHR_maintenance1
2733static void entry_vkTrimCommandPoolKHR(
2734 VkDevice device,
2735 VkCommandPool commandPool,
2736 VkCommandPoolTrimFlags flags)
2737{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002738 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002739 auto vkEnc = HostConnection::get()->vkEncoder();
2740 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2741}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002742static void dynCheck_entry_vkTrimCommandPoolKHR(
2743 VkDevice device,
2744 VkCommandPool commandPool,
2745 VkCommandPoolTrimFlags flags)
2746{
2747 auto resources = ResourceTracker::get();
2748 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2749 {
2750 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2751 }
2752 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2753 auto vkEnc = HostConnection::get()->vkEncoder();
2754 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2755}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002756#endif
2757#ifdef VK_KHR_device_group_creation
2758static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2759 VkInstance instance,
2760 uint32_t* pPhysicalDeviceGroupCount,
2761 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2762{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002763 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002764 auto vkEnc = HostConnection::get()->vkEncoder();
2765 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2766 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
2767 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2768}
2769#endif
2770#ifdef VK_KHR_external_memory_capabilities
2771static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2772 VkPhysicalDevice physicalDevice,
2773 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2774 VkExternalBufferProperties* pExternalBufferProperties)
2775{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002776 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002777 auto vkEnc = HostConnection::get()->vkEncoder();
2778 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2779}
2780#endif
2781#ifdef VK_KHR_external_memory
2782#endif
2783#ifdef VK_KHR_external_memory_win32
2784static VkResult entry_vkGetMemoryWin32HandleKHR(
2785 VkDevice device,
2786 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2787 HANDLE* pHandle)
2788{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002789 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002790 auto vkEnc = HostConnection::get()->vkEncoder();
2791 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2792 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2793 return vkGetMemoryWin32HandleKHR_VkResult_return;
2794}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002795static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2796 VkDevice device,
2797 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2798 HANDLE* pHandle)
2799{
2800 auto resources = ResourceTracker::get();
2801 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2802 {
2803 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
2804 }
2805 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2806 auto vkEnc = HostConnection::get()->vkEncoder();
2807 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2808 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2809 return vkGetMemoryWin32HandleKHR_VkResult_return;
2810}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002811static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2812 VkDevice device,
2813 VkExternalMemoryHandleTypeFlagBits handleType,
2814 HANDLE handle,
2815 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2816{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002817 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002818 auto vkEnc = HostConnection::get()->vkEncoder();
2819 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2820 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2821 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2822}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002823static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
2824 VkDevice device,
2825 VkExternalMemoryHandleTypeFlagBits handleType,
2826 HANDLE handle,
2827 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2828{
2829 auto resources = ResourceTracker::get();
2830 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2831 {
2832 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
2833 }
2834 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
2835 auto vkEnc = HostConnection::get()->vkEncoder();
2836 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2837 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2838 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2839}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002840#endif
2841#ifdef VK_KHR_external_memory_fd
2842static VkResult entry_vkGetMemoryFdKHR(
2843 VkDevice device,
2844 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2845 int* pFd)
2846{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002847 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002848 auto vkEnc = HostConnection::get()->vkEncoder();
2849 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2850 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2851 return vkGetMemoryFdKHR_VkResult_return;
2852}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002853static VkResult dynCheck_entry_vkGetMemoryFdKHR(
2854 VkDevice device,
2855 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2856 int* pFd)
2857{
2858 auto resources = ResourceTracker::get();
2859 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2860 {
2861 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
2862 }
2863 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
2864 auto vkEnc = HostConnection::get()->vkEncoder();
2865 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2866 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2867 return vkGetMemoryFdKHR_VkResult_return;
2868}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002869static VkResult entry_vkGetMemoryFdPropertiesKHR(
2870 VkDevice device,
2871 VkExternalMemoryHandleTypeFlagBits handleType,
2872 int fd,
2873 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2874{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002875 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002876 auto vkEnc = HostConnection::get()->vkEncoder();
2877 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2878 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2879 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2880}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002881static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
2882 VkDevice device,
2883 VkExternalMemoryHandleTypeFlagBits handleType,
2884 int fd,
2885 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2886{
2887 auto resources = ResourceTracker::get();
2888 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2889 {
2890 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
2891 }
2892 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
2893 auto vkEnc = HostConnection::get()->vkEncoder();
2894 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2895 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2896 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2897}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002898#endif
2899#ifdef VK_KHR_win32_keyed_mutex
2900#endif
2901#ifdef VK_KHR_external_semaphore_capabilities
2902static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2903 VkPhysicalDevice physicalDevice,
2904 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2905 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2906{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002907 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002908 auto vkEnc = HostConnection::get()->vkEncoder();
2909 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2910}
2911#endif
2912#ifdef VK_KHR_external_semaphore
2913#endif
2914#ifdef VK_KHR_external_semaphore_win32
2915static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2916 VkDevice device,
2917 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2918{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002919 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002920 auto vkEnc = HostConnection::get()->vkEncoder();
2921 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2922 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2923 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2924}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002925static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
2926 VkDevice device,
2927 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2928{
2929 auto resources = ResourceTracker::get();
2930 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2931 {
2932 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2933 }
2934 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
2935 auto vkEnc = HostConnection::get()->vkEncoder();
2936 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2937 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2938 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2939}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002940static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2941 VkDevice device,
2942 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2943 HANDLE* pHandle)
2944{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002945 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002946 auto vkEnc = HostConnection::get()->vkEncoder();
2947 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2948 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2949 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2950}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002951static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
2952 VkDevice device,
2953 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2954 HANDLE* pHandle)
2955{
2956 auto resources = ResourceTracker::get();
2957 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2958 {
2959 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2960 }
2961 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
2962 auto vkEnc = HostConnection::get()->vkEncoder();
2963 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2964 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2965 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2966}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002967#endif
2968#ifdef VK_KHR_external_semaphore_fd
2969static VkResult entry_vkImportSemaphoreFdKHR(
2970 VkDevice device,
2971 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2972{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002973 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002974 auto vkEnc = HostConnection::get()->vkEncoder();
2975 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002976 auto resources = ResourceTracker::get();
2977 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002978 return vkImportSemaphoreFdKHR_VkResult_return;
2979}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002980static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
2981 VkDevice device,
2982 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2983{
2984 auto resources = ResourceTracker::get();
2985 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2986 {
2987 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2988 }
2989 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
2990 auto vkEnc = HostConnection::get()->vkEncoder();
2991 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
2992 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
2993 return vkImportSemaphoreFdKHR_VkResult_return;
2994}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002995static VkResult entry_vkGetSemaphoreFdKHR(
2996 VkDevice device,
2997 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
2998 int* pFd)
2999{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003000 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003001 auto vkEnc = HostConnection::get()->vkEncoder();
3002 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003003 auto resources = ResourceTracker::get();
3004 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003005 return vkGetSemaphoreFdKHR_VkResult_return;
3006}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003007static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3008 VkDevice device,
3009 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3010 int* pFd)
3011{
3012 auto resources = ResourceTracker::get();
3013 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3014 {
3015 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3016 }
3017 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3018 auto vkEnc = HostConnection::get()->vkEncoder();
3019 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3020 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3021 return vkGetSemaphoreFdKHR_VkResult_return;
3022}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003023#endif
3024#ifdef VK_KHR_push_descriptor
3025static void entry_vkCmdPushDescriptorSetKHR(
3026 VkCommandBuffer commandBuffer,
3027 VkPipelineBindPoint pipelineBindPoint,
3028 VkPipelineLayout layout,
3029 uint32_t set,
3030 uint32_t descriptorWriteCount,
3031 const VkWriteDescriptorSet* pDescriptorWrites)
3032{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003033 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003034 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003035 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003036 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3037}
3038static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3039 VkCommandBuffer commandBuffer,
3040 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3041 VkPipelineLayout layout,
3042 uint32_t set,
3043 const void* pData)
3044{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003045 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003046 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003047 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003048 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3049}
3050#endif
3051#ifdef VK_KHR_16bit_storage
3052#endif
3053#ifdef VK_KHR_incremental_present
3054#endif
3055#ifdef VK_KHR_descriptor_update_template
3056static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3057 VkDevice device,
3058 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3059 const VkAllocationCallbacks* pAllocator,
3060 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3061{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003062 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003063 auto vkEnc = HostConnection::get()->vkEncoder();
3064 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3065 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3066 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3067}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003068static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3069 VkDevice device,
3070 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3071 const VkAllocationCallbacks* pAllocator,
3072 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3073{
3074 auto resources = ResourceTracker::get();
3075 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3076 {
3077 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3078 }
3079 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3080 auto vkEnc = HostConnection::get()->vkEncoder();
3081 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3082 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3083 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3084}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003085static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3086 VkDevice device,
3087 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3088 const VkAllocationCallbacks* pAllocator)
3089{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003090 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003091 auto vkEnc = HostConnection::get()->vkEncoder();
3092 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3093}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003094static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3095 VkDevice device,
3096 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3097 const VkAllocationCallbacks* pAllocator)
3098{
3099 auto resources = ResourceTracker::get();
3100 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3101 {
3102 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3103 }
3104 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3105 auto vkEnc = HostConnection::get()->vkEncoder();
3106 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3107}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003108static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3109 VkDevice device,
3110 VkDescriptorSet descriptorSet,
3111 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3112 const void* pData)
3113{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003114 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003115 auto vkEnc = HostConnection::get()->vkEncoder();
3116 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3117}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003118static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3119 VkDevice device,
3120 VkDescriptorSet descriptorSet,
3121 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3122 const void* pData)
3123{
3124 auto resources = ResourceTracker::get();
3125 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3126 {
3127 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3128 }
3129 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3130 auto vkEnc = HostConnection::get()->vkEncoder();
3131 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3132}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003133#endif
3134#ifdef VK_KHR_create_renderpass2
3135static VkResult entry_vkCreateRenderPass2KHR(
3136 VkDevice device,
3137 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3138 const VkAllocationCallbacks* pAllocator,
3139 VkRenderPass* pRenderPass)
3140{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003141 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003142 auto vkEnc = HostConnection::get()->vkEncoder();
3143 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3144 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3145 return vkCreateRenderPass2KHR_VkResult_return;
3146}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003147static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3148 VkDevice device,
3149 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3150 const VkAllocationCallbacks* pAllocator,
3151 VkRenderPass* pRenderPass)
3152{
3153 auto resources = ResourceTracker::get();
3154 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3155 {
3156 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3157 }
3158 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3159 auto vkEnc = HostConnection::get()->vkEncoder();
3160 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3161 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3162 return vkCreateRenderPass2KHR_VkResult_return;
3163}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003164static void entry_vkCmdBeginRenderPass2KHR(
3165 VkCommandBuffer commandBuffer,
3166 const VkRenderPassBeginInfo* pRenderPassBegin,
3167 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
3168{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003169 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003170 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003171 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003172 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3173}
3174static void entry_vkCmdNextSubpass2KHR(
3175 VkCommandBuffer commandBuffer,
3176 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3177 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3178{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003179 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003180 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003181 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003182 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3183}
3184static void entry_vkCmdEndRenderPass2KHR(
3185 VkCommandBuffer commandBuffer,
3186 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3187{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003188 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003189 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003190 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003191 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3192}
3193#endif
3194#ifdef VK_KHR_shared_presentable_image
3195static VkResult entry_vkGetSwapchainStatusKHR(
3196 VkDevice device,
3197 VkSwapchainKHR swapchain)
3198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003199 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003200 auto vkEnc = HostConnection::get()->vkEncoder();
3201 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3202 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3203 return vkGetSwapchainStatusKHR_VkResult_return;
3204}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003205static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3206 VkDevice device,
3207 VkSwapchainKHR swapchain)
3208{
3209 auto resources = ResourceTracker::get();
3210 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3211 {
3212 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3213 }
3214 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3215 auto vkEnc = HostConnection::get()->vkEncoder();
3216 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3217 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3218 return vkGetSwapchainStatusKHR_VkResult_return;
3219}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003220#endif
3221#ifdef VK_KHR_external_fence_capabilities
3222static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3223 VkPhysicalDevice physicalDevice,
3224 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3225 VkExternalFenceProperties* pExternalFenceProperties)
3226{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003227 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003228 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003229 auto resources = ResourceTracker::get();
3230 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003231}
3232#endif
3233#ifdef VK_KHR_external_fence
3234#endif
3235#ifdef VK_KHR_external_fence_win32
3236static VkResult entry_vkImportFenceWin32HandleKHR(
3237 VkDevice device,
3238 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3239{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003240 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003241 auto vkEnc = HostConnection::get()->vkEncoder();
3242 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3243 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3244 return vkImportFenceWin32HandleKHR_VkResult_return;
3245}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003246static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3247 VkDevice device,
3248 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3249{
3250 auto resources = ResourceTracker::get();
3251 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3252 {
3253 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3254 }
3255 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3256 auto vkEnc = HostConnection::get()->vkEncoder();
3257 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3258 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3259 return vkImportFenceWin32HandleKHR_VkResult_return;
3260}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003261static VkResult entry_vkGetFenceWin32HandleKHR(
3262 VkDevice device,
3263 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3264 HANDLE* pHandle)
3265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003266 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003267 auto vkEnc = HostConnection::get()->vkEncoder();
3268 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3269 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3270 return vkGetFenceWin32HandleKHR_VkResult_return;
3271}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003272static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3273 VkDevice device,
3274 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3275 HANDLE* pHandle)
3276{
3277 auto resources = ResourceTracker::get();
3278 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3279 {
3280 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3281 }
3282 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3283 auto vkEnc = HostConnection::get()->vkEncoder();
3284 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3285 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3286 return vkGetFenceWin32HandleKHR_VkResult_return;
3287}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003288#endif
3289#ifdef VK_KHR_external_fence_fd
3290static VkResult entry_vkImportFenceFdKHR(
3291 VkDevice device,
3292 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3293{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003294 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003295 auto vkEnc = HostConnection::get()->vkEncoder();
3296 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003297 auto resources = ResourceTracker::get();
3298 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003299 return vkImportFenceFdKHR_VkResult_return;
3300}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003301static VkResult dynCheck_entry_vkImportFenceFdKHR(
3302 VkDevice device,
3303 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3304{
3305 auto resources = ResourceTracker::get();
3306 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3307 {
3308 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3309 }
3310 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3311 auto vkEnc = HostConnection::get()->vkEncoder();
3312 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3313 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3314 return vkImportFenceFdKHR_VkResult_return;
3315}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003316static VkResult entry_vkGetFenceFdKHR(
3317 VkDevice device,
3318 const VkFenceGetFdInfoKHR* pGetFdInfo,
3319 int* pFd)
3320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003321 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003322 auto vkEnc = HostConnection::get()->vkEncoder();
3323 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003324 auto resources = ResourceTracker::get();
3325 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003326 return vkGetFenceFdKHR_VkResult_return;
3327}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003328static VkResult dynCheck_entry_vkGetFenceFdKHR(
3329 VkDevice device,
3330 const VkFenceGetFdInfoKHR* pGetFdInfo,
3331 int* pFd)
3332{
3333 auto resources = ResourceTracker::get();
3334 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3335 {
3336 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3337 }
3338 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3339 auto vkEnc = HostConnection::get()->vkEncoder();
3340 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3341 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3342 return vkGetFenceFdKHR_VkResult_return;
3343}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003344#endif
3345#ifdef VK_KHR_maintenance2
3346#endif
3347#ifdef VK_KHR_get_surface_capabilities2
3348static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3349 VkPhysicalDevice physicalDevice,
3350 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3351 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3352{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003353 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003354 auto vkEnc = HostConnection::get()->vkEncoder();
3355 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3356 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
3357 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3358}
3359static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3360 VkPhysicalDevice physicalDevice,
3361 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3362 uint32_t* pSurfaceFormatCount,
3363 VkSurfaceFormat2KHR* pSurfaceFormats)
3364{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003365 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003366 auto vkEnc = HostConnection::get()->vkEncoder();
3367 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3368 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
3369 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3370}
3371#endif
3372#ifdef VK_KHR_variable_pointers
3373#endif
3374#ifdef VK_KHR_get_display_properties2
3375static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3376 VkPhysicalDevice physicalDevice,
3377 uint32_t* pPropertyCount,
3378 VkDisplayProperties2KHR* pProperties)
3379{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003380 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003381 auto vkEnc = HostConnection::get()->vkEncoder();
3382 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3383 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3384 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3385}
3386static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3387 VkPhysicalDevice physicalDevice,
3388 uint32_t* pPropertyCount,
3389 VkDisplayPlaneProperties2KHR* pProperties)
3390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003391 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003392 auto vkEnc = HostConnection::get()->vkEncoder();
3393 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3394 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3395 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3396}
3397static VkResult entry_vkGetDisplayModeProperties2KHR(
3398 VkPhysicalDevice physicalDevice,
3399 VkDisplayKHR display,
3400 uint32_t* pPropertyCount,
3401 VkDisplayModeProperties2KHR* pProperties)
3402{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003403 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003404 auto vkEnc = HostConnection::get()->vkEncoder();
3405 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3406 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
3407 return vkGetDisplayModeProperties2KHR_VkResult_return;
3408}
3409static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3410 VkPhysicalDevice physicalDevice,
3411 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3412 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3413{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003414 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003415 auto vkEnc = HostConnection::get()->vkEncoder();
3416 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3417 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
3418 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3419}
3420#endif
3421#ifdef VK_KHR_dedicated_allocation
3422#endif
3423#ifdef VK_KHR_storage_buffer_storage_class
3424#endif
3425#ifdef VK_KHR_relaxed_block_layout
3426#endif
3427#ifdef VK_KHR_get_memory_requirements2
3428static void entry_vkGetImageMemoryRequirements2KHR(
3429 VkDevice device,
3430 const VkImageMemoryRequirementsInfo2* pInfo,
3431 VkMemoryRequirements2* pMemoryRequirements)
3432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003433 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003434 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003435 auto resources = ResourceTracker::get();
3436 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003437}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003438static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3439 VkDevice device,
3440 const VkImageMemoryRequirementsInfo2* pInfo,
3441 VkMemoryRequirements2* pMemoryRequirements)
3442{
3443 auto resources = ResourceTracker::get();
3444 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3445 {
3446 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3447 }
3448 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3449 auto vkEnc = HostConnection::get()->vkEncoder();
3450 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3451}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003452static void entry_vkGetBufferMemoryRequirements2KHR(
3453 VkDevice device,
3454 const VkBufferMemoryRequirementsInfo2* pInfo,
3455 VkMemoryRequirements2* pMemoryRequirements)
3456{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003457 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003458 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003459 auto resources = ResourceTracker::get();
3460 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003461}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003462static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3463 VkDevice device,
3464 const VkBufferMemoryRequirementsInfo2* pInfo,
3465 VkMemoryRequirements2* pMemoryRequirements)
3466{
3467 auto resources = ResourceTracker::get();
3468 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3469 {
3470 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3471 }
3472 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3473 auto vkEnc = HostConnection::get()->vkEncoder();
3474 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3475}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003476static void entry_vkGetImageSparseMemoryRequirements2KHR(
3477 VkDevice device,
3478 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3479 uint32_t* pSparseMemoryRequirementCount,
3480 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3481{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003482 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003483 auto vkEnc = HostConnection::get()->vkEncoder();
3484 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3485}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003486static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3487 VkDevice device,
3488 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3489 uint32_t* pSparseMemoryRequirementCount,
3490 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3491{
3492 auto resources = ResourceTracker::get();
3493 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3494 {
3495 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3496 }
3497 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3498 auto vkEnc = HostConnection::get()->vkEncoder();
3499 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3500}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003501#endif
3502#ifdef VK_KHR_image_format_list
3503#endif
3504#ifdef VK_KHR_sampler_ycbcr_conversion
3505static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3506 VkDevice device,
3507 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3508 const VkAllocationCallbacks* pAllocator,
3509 VkSamplerYcbcrConversion* pYcbcrConversion)
3510{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003511 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003512 auto vkEnc = HostConnection::get()->vkEncoder();
3513 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003514 auto resources = ResourceTracker::get();
3515 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003516 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3517}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003518static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3519 VkDevice device,
3520 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3521 const VkAllocationCallbacks* pAllocator,
3522 VkSamplerYcbcrConversion* pYcbcrConversion)
3523{
3524 auto resources = ResourceTracker::get();
3525 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3526 {
3527 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3528 }
3529 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3530 auto vkEnc = HostConnection::get()->vkEncoder();
3531 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3532 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3533 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3534}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003535static void entry_vkDestroySamplerYcbcrConversionKHR(
3536 VkDevice device,
3537 VkSamplerYcbcrConversion ycbcrConversion,
3538 const VkAllocationCallbacks* pAllocator)
3539{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003540 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003541 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003542 auto resources = ResourceTracker::get();
3543 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003544}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003545static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3546 VkDevice device,
3547 VkSamplerYcbcrConversion ycbcrConversion,
3548 const VkAllocationCallbacks* pAllocator)
3549{
3550 auto resources = ResourceTracker::get();
3551 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3552 {
3553 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3554 }
3555 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3556 auto vkEnc = HostConnection::get()->vkEncoder();
3557 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3558}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003559#endif
3560#ifdef VK_KHR_bind_memory2
3561static VkResult entry_vkBindBufferMemory2KHR(
3562 VkDevice device,
3563 uint32_t bindInfoCount,
3564 const VkBindBufferMemoryInfo* pBindInfos)
3565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003566 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003567 auto vkEnc = HostConnection::get()->vkEncoder();
3568 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003569 auto resources = ResourceTracker::get();
3570 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003571 return vkBindBufferMemory2KHR_VkResult_return;
3572}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003573static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3574 VkDevice device,
3575 uint32_t bindInfoCount,
3576 const VkBindBufferMemoryInfo* pBindInfos)
3577{
3578 auto resources = ResourceTracker::get();
3579 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3580 {
3581 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3582 }
3583 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3584 auto vkEnc = HostConnection::get()->vkEncoder();
3585 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3586 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3587 return vkBindBufferMemory2KHR_VkResult_return;
3588}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003589static VkResult entry_vkBindImageMemory2KHR(
3590 VkDevice device,
3591 uint32_t bindInfoCount,
3592 const VkBindImageMemoryInfo* pBindInfos)
3593{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003594 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003595 auto vkEnc = HostConnection::get()->vkEncoder();
3596 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003597 auto resources = ResourceTracker::get();
3598 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003599 return vkBindImageMemory2KHR_VkResult_return;
3600}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003601static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3602 VkDevice device,
3603 uint32_t bindInfoCount,
3604 const VkBindImageMemoryInfo* pBindInfos)
3605{
3606 auto resources = ResourceTracker::get();
3607 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3608 {
3609 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3610 }
3611 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3612 auto vkEnc = HostConnection::get()->vkEncoder();
3613 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3614 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3615 return vkBindImageMemory2KHR_VkResult_return;
3616}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003617#endif
3618#ifdef VK_KHR_maintenance3
3619static void entry_vkGetDescriptorSetLayoutSupportKHR(
3620 VkDevice device,
3621 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3622 VkDescriptorSetLayoutSupport* pSupport)
3623{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003624 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003625 auto vkEnc = HostConnection::get()->vkEncoder();
3626 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3627}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003628static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3629 VkDevice device,
3630 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3631 VkDescriptorSetLayoutSupport* pSupport)
3632{
3633 auto resources = ResourceTracker::get();
3634 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3635 {
3636 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3637 }
3638 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3639 auto vkEnc = HostConnection::get()->vkEncoder();
3640 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3641}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003642#endif
3643#ifdef VK_KHR_draw_indirect_count
3644static void entry_vkCmdDrawIndirectCountKHR(
3645 VkCommandBuffer commandBuffer,
3646 VkBuffer buffer,
3647 VkDeviceSize offset,
3648 VkBuffer countBuffer,
3649 VkDeviceSize countBufferOffset,
3650 uint32_t maxDrawCount,
3651 uint32_t stride)
3652{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003653 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003654 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003655 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003656 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3657}
3658static void entry_vkCmdDrawIndexedIndirectCountKHR(
3659 VkCommandBuffer commandBuffer,
3660 VkBuffer buffer,
3661 VkDeviceSize offset,
3662 VkBuffer countBuffer,
3663 VkDeviceSize countBufferOffset,
3664 uint32_t maxDrawCount,
3665 uint32_t stride)
3666{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003667 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003668 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003669 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003670 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3671}
3672#endif
3673#ifdef VK_KHR_8bit_storage
3674#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08003675#ifdef VK_ANDROID_native_buffer
3676static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3677 VkDevice device,
3678 VkFormat format,
3679 VkImageUsageFlags imageUsage,
3680 int* grallocUsage)
3681{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003682 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003683 auto vkEnc = HostConnection::get()->vkEncoder();
3684 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3685 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3686 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3687}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003688static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3689 VkDevice device,
3690 VkFormat format,
3691 VkImageUsageFlags imageUsage,
3692 int* grallocUsage)
3693{
3694 auto resources = ResourceTracker::get();
3695 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3696 {
3697 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3698 }
3699 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3700 auto vkEnc = HostConnection::get()->vkEncoder();
3701 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3702 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3703 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3704}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003705static VkResult entry_vkAcquireImageANDROID(
3706 VkDevice device,
3707 VkImage image,
3708 int nativeFenceFd,
3709 VkSemaphore semaphore,
3710 VkFence fence)
3711{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003712 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003713 auto vkEnc = HostConnection::get()->vkEncoder();
3714 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3715 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3716 return vkAcquireImageANDROID_VkResult_return;
3717}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003718static VkResult dynCheck_entry_vkAcquireImageANDROID(
3719 VkDevice device,
3720 VkImage image,
3721 int nativeFenceFd,
3722 VkSemaphore semaphore,
3723 VkFence fence)
3724{
3725 auto resources = ResourceTracker::get();
3726 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3727 {
3728 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3729 }
3730 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3731 auto vkEnc = HostConnection::get()->vkEncoder();
3732 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3733 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3734 return vkAcquireImageANDROID_VkResult_return;
3735}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003736static VkResult entry_vkQueueSignalReleaseImageANDROID(
3737 VkQueue queue,
3738 uint32_t waitSemaphoreCount,
3739 const VkSemaphore* pWaitSemaphores,
3740 VkImage image,
3741 int* pNativeFenceFd)
3742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003743 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003744 auto vkEnc = HostConnection::get()->vkEncoder();
3745 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3746 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
3747 return vkQueueSignalReleaseImageANDROID_VkResult_return;
3748}
3749#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003750#ifdef VK_EXT_debug_report
3751static VkResult entry_vkCreateDebugReportCallbackEXT(
3752 VkInstance instance,
3753 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3754 const VkAllocationCallbacks* pAllocator,
3755 VkDebugReportCallbackEXT* pCallback)
3756{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003757 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003758 auto vkEnc = HostConnection::get()->vkEncoder();
3759 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
3760 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
3761 return vkCreateDebugReportCallbackEXT_VkResult_return;
3762}
3763static void entry_vkDestroyDebugReportCallbackEXT(
3764 VkInstance instance,
3765 VkDebugReportCallbackEXT callback,
3766 const VkAllocationCallbacks* pAllocator)
3767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003768 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003769 auto vkEnc = HostConnection::get()->vkEncoder();
3770 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
3771}
3772static void entry_vkDebugReportMessageEXT(
3773 VkInstance instance,
3774 VkDebugReportFlagsEXT flags,
3775 VkDebugReportObjectTypeEXT objectType,
3776 uint64_t object,
3777 size_t location,
3778 int32_t messageCode,
3779 const char* pLayerPrefix,
3780 const char* pMessage)
3781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003782 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783 auto vkEnc = HostConnection::get()->vkEncoder();
3784 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
3785}
3786#endif
3787#ifdef VK_NV_glsl_shader
3788#endif
3789#ifdef VK_EXT_depth_range_unrestricted
3790#endif
3791#ifdef VK_IMG_filter_cubic
3792#endif
3793#ifdef VK_AMD_rasterization_order
3794#endif
3795#ifdef VK_AMD_shader_trinary_minmax
3796#endif
3797#ifdef VK_AMD_shader_explicit_vertex_parameter
3798#endif
3799#ifdef VK_EXT_debug_marker
3800static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3801 VkDevice device,
3802 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3803{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003804 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003805 auto vkEnc = HostConnection::get()->vkEncoder();
3806 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3807 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3808 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3809}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003810static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3811 VkDevice device,
3812 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3813{
3814 auto resources = ResourceTracker::get();
3815 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3816 {
3817 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3818 }
3819 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3820 auto vkEnc = HostConnection::get()->vkEncoder();
3821 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3822 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3823 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3824}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003825static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3826 VkDevice device,
3827 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3828{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003829 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003830 auto vkEnc = HostConnection::get()->vkEncoder();
3831 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3832 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3833 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3834}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003835static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3836 VkDevice device,
3837 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3838{
3839 auto resources = ResourceTracker::get();
3840 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3841 {
3842 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3843 }
3844 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3845 auto vkEnc = HostConnection::get()->vkEncoder();
3846 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3847 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3848 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3849}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003850static void entry_vkCmdDebugMarkerBeginEXT(
3851 VkCommandBuffer commandBuffer,
3852 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3853{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003854 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003855 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003856 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003857 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3858}
3859static void entry_vkCmdDebugMarkerEndEXT(
3860 VkCommandBuffer commandBuffer)
3861{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003862 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003863 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003864 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003865 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer);
3866}
3867static void entry_vkCmdDebugMarkerInsertEXT(
3868 VkCommandBuffer commandBuffer,
3869 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3870{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003871 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003872 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003873 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003874 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3875}
3876#endif
3877#ifdef VK_AMD_gcn_shader
3878#endif
3879#ifdef VK_NV_dedicated_allocation
3880#endif
3881#ifdef VK_AMD_draw_indirect_count
3882static void entry_vkCmdDrawIndirectCountAMD(
3883 VkCommandBuffer commandBuffer,
3884 VkBuffer buffer,
3885 VkDeviceSize offset,
3886 VkBuffer countBuffer,
3887 VkDeviceSize countBufferOffset,
3888 uint32_t maxDrawCount,
3889 uint32_t stride)
3890{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003891 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003892 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003893 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003894 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3895}
3896static void entry_vkCmdDrawIndexedIndirectCountAMD(
3897 VkCommandBuffer commandBuffer,
3898 VkBuffer buffer,
3899 VkDeviceSize offset,
3900 VkBuffer countBuffer,
3901 VkDeviceSize countBufferOffset,
3902 uint32_t maxDrawCount,
3903 uint32_t stride)
3904{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003905 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003906 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003907 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003908 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3909}
3910#endif
3911#ifdef VK_AMD_negative_viewport_height
3912#endif
3913#ifdef VK_AMD_gpu_shader_half_float
3914#endif
3915#ifdef VK_AMD_shader_ballot
3916#endif
3917#ifdef VK_AMD_texture_gather_bias_lod
3918#endif
3919#ifdef VK_AMD_shader_info
3920static VkResult entry_vkGetShaderInfoAMD(
3921 VkDevice device,
3922 VkPipeline pipeline,
3923 VkShaderStageFlagBits shaderStage,
3924 VkShaderInfoTypeAMD infoType,
3925 size_t* pInfoSize,
3926 void* pInfo)
3927{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003928 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003929 auto vkEnc = HostConnection::get()->vkEncoder();
3930 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3931 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3932 return vkGetShaderInfoAMD_VkResult_return;
3933}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003934static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3935 VkDevice device,
3936 VkPipeline pipeline,
3937 VkShaderStageFlagBits shaderStage,
3938 VkShaderInfoTypeAMD infoType,
3939 size_t* pInfoSize,
3940 void* pInfo)
3941{
3942 auto resources = ResourceTracker::get();
3943 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3944 {
3945 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3946 }
3947 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3948 auto vkEnc = HostConnection::get()->vkEncoder();
3949 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3950 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3951 return vkGetShaderInfoAMD_VkResult_return;
3952}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003953#endif
3954#ifdef VK_AMD_shader_image_load_store_lod
3955#endif
3956#ifdef VK_IMG_format_pvrtc
3957#endif
3958#ifdef VK_NV_external_memory_capabilities
3959static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3960 VkPhysicalDevice physicalDevice,
3961 VkFormat format,
3962 VkImageType type,
3963 VkImageTiling tiling,
3964 VkImageUsageFlags usage,
3965 VkImageCreateFlags flags,
3966 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3967 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3968{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003969 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003970 auto vkEnc = HostConnection::get()->vkEncoder();
3971 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3972 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3973 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3974}
3975#endif
3976#ifdef VK_NV_external_memory
3977#endif
3978#ifdef VK_NV_external_memory_win32
3979static VkResult entry_vkGetMemoryWin32HandleNV(
3980 VkDevice device,
3981 VkDeviceMemory memory,
3982 VkExternalMemoryHandleTypeFlagsNV handleType,
3983 HANDLE* pHandle)
3984{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003985 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003986 auto vkEnc = HostConnection::get()->vkEncoder();
3987 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
3988 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
3989 return vkGetMemoryWin32HandleNV_VkResult_return;
3990}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003991static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
3992 VkDevice device,
3993 VkDeviceMemory memory,
3994 VkExternalMemoryHandleTypeFlagsNV handleType,
3995 HANDLE* pHandle)
3996{
3997 auto resources = ResourceTracker::get();
3998 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
3999 {
4000 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4001 }
4002 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4003 auto vkEnc = HostConnection::get()->vkEncoder();
4004 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4005 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4006 return vkGetMemoryWin32HandleNV_VkResult_return;
4007}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004008#endif
4009#ifdef VK_NV_win32_keyed_mutex
4010#endif
4011#ifdef VK_EXT_validation_flags
4012#endif
4013#ifdef VK_NN_vi_surface
4014static VkResult entry_vkCreateViSurfaceNN(
4015 VkInstance instance,
4016 const VkViSurfaceCreateInfoNN* pCreateInfo,
4017 const VkAllocationCallbacks* pAllocator,
4018 VkSurfaceKHR* pSurface)
4019{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004020 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004021 auto vkEnc = HostConnection::get()->vkEncoder();
4022 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4023 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
4024 return vkCreateViSurfaceNN_VkResult_return;
4025}
4026#endif
4027#ifdef VK_EXT_shader_subgroup_ballot
4028#endif
4029#ifdef VK_EXT_shader_subgroup_vote
4030#endif
4031#ifdef VK_EXT_conditional_rendering
4032static void entry_vkCmdBeginConditionalRenderingEXT(
4033 VkCommandBuffer commandBuffer,
4034 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4035{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004036 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004037 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004038 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004039 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4040}
4041static void entry_vkCmdEndConditionalRenderingEXT(
4042 VkCommandBuffer commandBuffer)
4043{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004044 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004045 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004046 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004047 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
4048}
4049#endif
4050#ifdef VK_NVX_device_generated_commands
4051static void entry_vkCmdProcessCommandsNVX(
4052 VkCommandBuffer commandBuffer,
4053 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4054{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004055 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004056 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004057 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004058 vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
4059}
4060static void entry_vkCmdReserveSpaceForCommandsNVX(
4061 VkCommandBuffer commandBuffer,
4062 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4063{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004064 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004065 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004066 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004067 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
4068}
4069static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4070 VkDevice device,
4071 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4072 const VkAllocationCallbacks* pAllocator,
4073 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4074{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004075 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004076 auto vkEnc = HostConnection::get()->vkEncoder();
4077 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4078 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4079 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4080}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004081static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4082 VkDevice device,
4083 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4084 const VkAllocationCallbacks* pAllocator,
4085 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4086{
4087 auto resources = ResourceTracker::get();
4088 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4089 {
4090 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4091 }
4092 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4093 auto vkEnc = HostConnection::get()->vkEncoder();
4094 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4095 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4096 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4097}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004098static void entry_vkDestroyIndirectCommandsLayoutNVX(
4099 VkDevice device,
4100 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4101 const VkAllocationCallbacks* pAllocator)
4102{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004103 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004104 auto vkEnc = HostConnection::get()->vkEncoder();
4105 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4106}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004107static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4108 VkDevice device,
4109 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4110 const VkAllocationCallbacks* pAllocator)
4111{
4112 auto resources = ResourceTracker::get();
4113 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4114 {
4115 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4116 }
4117 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4118 auto vkEnc = HostConnection::get()->vkEncoder();
4119 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4120}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004121static VkResult entry_vkCreateObjectTableNVX(
4122 VkDevice device,
4123 const VkObjectTableCreateInfoNVX* pCreateInfo,
4124 const VkAllocationCallbacks* pAllocator,
4125 VkObjectTableNVX* pObjectTable)
4126{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004127 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004128 auto vkEnc = HostConnection::get()->vkEncoder();
4129 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4130 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4131 return vkCreateObjectTableNVX_VkResult_return;
4132}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004133static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4134 VkDevice device,
4135 const VkObjectTableCreateInfoNVX* pCreateInfo,
4136 const VkAllocationCallbacks* pAllocator,
4137 VkObjectTableNVX* pObjectTable)
4138{
4139 auto resources = ResourceTracker::get();
4140 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4141 {
4142 sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4143 }
4144 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4145 auto vkEnc = HostConnection::get()->vkEncoder();
4146 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4147 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4148 return vkCreateObjectTableNVX_VkResult_return;
4149}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004150static void entry_vkDestroyObjectTableNVX(
4151 VkDevice device,
4152 VkObjectTableNVX objectTable,
4153 const VkAllocationCallbacks* pAllocator)
4154{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004155 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004156 auto vkEnc = HostConnection::get()->vkEncoder();
4157 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4158}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004159static void dynCheck_entry_vkDestroyObjectTableNVX(
4160 VkDevice device,
4161 VkObjectTableNVX objectTable,
4162 const VkAllocationCallbacks* pAllocator)
4163{
4164 auto resources = ResourceTracker::get();
4165 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4166 {
4167 sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4168 }
4169 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4170 auto vkEnc = HostConnection::get()->vkEncoder();
4171 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4172}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004173static VkResult entry_vkRegisterObjectsNVX(
4174 VkDevice device,
4175 VkObjectTableNVX objectTable,
4176 uint32_t objectCount,
4177 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4178 const uint32_t* pObjectIndices)
4179{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004180 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004181 auto vkEnc = HostConnection::get()->vkEncoder();
4182 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4183 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4184 return vkRegisterObjectsNVX_VkResult_return;
4185}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004186static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4187 VkDevice device,
4188 VkObjectTableNVX objectTable,
4189 uint32_t objectCount,
4190 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4191 const uint32_t* pObjectIndices)
4192{
4193 auto resources = ResourceTracker::get();
4194 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4195 {
4196 sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4197 }
4198 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4199 auto vkEnc = HostConnection::get()->vkEncoder();
4200 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4201 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4202 return vkRegisterObjectsNVX_VkResult_return;
4203}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004204static VkResult entry_vkUnregisterObjectsNVX(
4205 VkDevice device,
4206 VkObjectTableNVX objectTable,
4207 uint32_t objectCount,
4208 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4209 const uint32_t* pObjectIndices)
4210{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004211 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004212 auto vkEnc = HostConnection::get()->vkEncoder();
4213 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4214 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4215 return vkUnregisterObjectsNVX_VkResult_return;
4216}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004217static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4218 VkDevice device,
4219 VkObjectTableNVX objectTable,
4220 uint32_t objectCount,
4221 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4222 const uint32_t* pObjectIndices)
4223{
4224 auto resources = ResourceTracker::get();
4225 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4226 {
4227 sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4228 }
4229 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4230 auto vkEnc = HostConnection::get()->vkEncoder();
4231 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4232 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4233 return vkUnregisterObjectsNVX_VkResult_return;
4234}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004235static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4236 VkPhysicalDevice physicalDevice,
4237 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4238 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4239{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004240 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004241 auto vkEnc = HostConnection::get()->vkEncoder();
4242 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
4243}
4244#endif
4245#ifdef VK_NV_clip_space_w_scaling
4246static void entry_vkCmdSetViewportWScalingNV(
4247 VkCommandBuffer commandBuffer,
4248 uint32_t firstViewport,
4249 uint32_t viewportCount,
4250 const VkViewportWScalingNV* pViewportWScalings)
4251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004252 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004253 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004254 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004255 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4256}
4257#endif
4258#ifdef VK_EXT_direct_mode_display
4259static VkResult entry_vkReleaseDisplayEXT(
4260 VkPhysicalDevice physicalDevice,
4261 VkDisplayKHR display)
4262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004263 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004264 auto vkEnc = HostConnection::get()->vkEncoder();
4265 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4266 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
4267 return vkReleaseDisplayEXT_VkResult_return;
4268}
4269#endif
4270#ifdef VK_EXT_acquire_xlib_display
4271static VkResult entry_vkAcquireXlibDisplayEXT(
4272 VkPhysicalDevice physicalDevice,
4273 Display* dpy,
4274 VkDisplayKHR display)
4275{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004276 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004277 auto vkEnc = HostConnection::get()->vkEncoder();
4278 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4279 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
4280 return vkAcquireXlibDisplayEXT_VkResult_return;
4281}
4282static VkResult entry_vkGetRandROutputDisplayEXT(
4283 VkPhysicalDevice physicalDevice,
4284 Display* dpy,
4285 RROutput rrOutput,
4286 VkDisplayKHR* pDisplay)
4287{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004288 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004289 auto vkEnc = HostConnection::get()->vkEncoder();
4290 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4291 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
4292 return vkGetRandROutputDisplayEXT_VkResult_return;
4293}
4294#endif
4295#ifdef VK_EXT_display_surface_counter
4296static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4297 VkPhysicalDevice physicalDevice,
4298 VkSurfaceKHR surface,
4299 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4300{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004301 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004302 auto vkEnc = HostConnection::get()->vkEncoder();
4303 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4304 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
4305 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4306}
4307#endif
4308#ifdef VK_EXT_display_control
4309static VkResult entry_vkDisplayPowerControlEXT(
4310 VkDevice device,
4311 VkDisplayKHR display,
4312 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4313{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004314 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004315 auto vkEnc = HostConnection::get()->vkEncoder();
4316 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4317 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4318 return vkDisplayPowerControlEXT_VkResult_return;
4319}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004320static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4321 VkDevice device,
4322 VkDisplayKHR display,
4323 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4324{
4325 auto resources = ResourceTracker::get();
4326 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4327 {
4328 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4329 }
4330 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4331 auto vkEnc = HostConnection::get()->vkEncoder();
4332 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4333 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4334 return vkDisplayPowerControlEXT_VkResult_return;
4335}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004336static VkResult entry_vkRegisterDeviceEventEXT(
4337 VkDevice device,
4338 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4339 const VkAllocationCallbacks* pAllocator,
4340 VkFence* pFence)
4341{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004342 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004343 auto vkEnc = HostConnection::get()->vkEncoder();
4344 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4345 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4346 return vkRegisterDeviceEventEXT_VkResult_return;
4347}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004348static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4349 VkDevice device,
4350 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4351 const VkAllocationCallbacks* pAllocator,
4352 VkFence* pFence)
4353{
4354 auto resources = ResourceTracker::get();
4355 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4356 {
4357 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4358 }
4359 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4360 auto vkEnc = HostConnection::get()->vkEncoder();
4361 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4362 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4363 return vkRegisterDeviceEventEXT_VkResult_return;
4364}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004365static VkResult entry_vkRegisterDisplayEventEXT(
4366 VkDevice device,
4367 VkDisplayKHR display,
4368 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4369 const VkAllocationCallbacks* pAllocator,
4370 VkFence* pFence)
4371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004372 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004373 auto vkEnc = HostConnection::get()->vkEncoder();
4374 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4375 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4376 return vkRegisterDisplayEventEXT_VkResult_return;
4377}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004378static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4379 VkDevice device,
4380 VkDisplayKHR display,
4381 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4382 const VkAllocationCallbacks* pAllocator,
4383 VkFence* pFence)
4384{
4385 auto resources = ResourceTracker::get();
4386 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4387 {
4388 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4389 }
4390 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4391 auto vkEnc = HostConnection::get()->vkEncoder();
4392 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4393 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4394 return vkRegisterDisplayEventEXT_VkResult_return;
4395}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004396static VkResult entry_vkGetSwapchainCounterEXT(
4397 VkDevice device,
4398 VkSwapchainKHR swapchain,
4399 VkSurfaceCounterFlagBitsEXT counter,
4400 uint64_t* pCounterValue)
4401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004402 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004403 auto vkEnc = HostConnection::get()->vkEncoder();
4404 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4405 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4406 return vkGetSwapchainCounterEXT_VkResult_return;
4407}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004408static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4409 VkDevice device,
4410 VkSwapchainKHR swapchain,
4411 VkSurfaceCounterFlagBitsEXT counter,
4412 uint64_t* pCounterValue)
4413{
4414 auto resources = ResourceTracker::get();
4415 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4416 {
4417 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4418 }
4419 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4420 auto vkEnc = HostConnection::get()->vkEncoder();
4421 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4422 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4423 return vkGetSwapchainCounterEXT_VkResult_return;
4424}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004425#endif
4426#ifdef VK_GOOGLE_display_timing
4427static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4428 VkDevice device,
4429 VkSwapchainKHR swapchain,
4430 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004432 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004433 auto vkEnc = HostConnection::get()->vkEncoder();
4434 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4435 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4436 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4437}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004438static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4439 VkDevice device,
4440 VkSwapchainKHR swapchain,
4441 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4442{
4443 auto resources = ResourceTracker::get();
4444 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4445 {
4446 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4447 }
4448 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4449 auto vkEnc = HostConnection::get()->vkEncoder();
4450 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4451 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4452 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4453}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004454static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4455 VkDevice device,
4456 VkSwapchainKHR swapchain,
4457 uint32_t* pPresentationTimingCount,
4458 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4459{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004460 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004461 auto vkEnc = HostConnection::get()->vkEncoder();
4462 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4463 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4464 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4465}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004466static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4467 VkDevice device,
4468 VkSwapchainKHR swapchain,
4469 uint32_t* pPresentationTimingCount,
4470 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4471{
4472 auto resources = ResourceTracker::get();
4473 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4474 {
4475 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4476 }
4477 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4478 auto vkEnc = HostConnection::get()->vkEncoder();
4479 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4480 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4481 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4482}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004483#endif
4484#ifdef VK_NV_sample_mask_override_coverage
4485#endif
4486#ifdef VK_NV_geometry_shader_passthrough
4487#endif
4488#ifdef VK_NV_viewport_array2
4489#endif
4490#ifdef VK_NVX_multiview_per_view_attributes
4491#endif
4492#ifdef VK_NV_viewport_swizzle
4493#endif
4494#ifdef VK_EXT_discard_rectangles
4495static void entry_vkCmdSetDiscardRectangleEXT(
4496 VkCommandBuffer commandBuffer,
4497 uint32_t firstDiscardRectangle,
4498 uint32_t discardRectangleCount,
4499 const VkRect2D* pDiscardRectangles)
4500{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004501 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004502 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004503 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004504 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4505}
4506#endif
4507#ifdef VK_EXT_conservative_rasterization
4508#endif
4509#ifdef VK_EXT_swapchain_colorspace
4510#endif
4511#ifdef VK_EXT_hdr_metadata
4512static void entry_vkSetHdrMetadataEXT(
4513 VkDevice device,
4514 uint32_t swapchainCount,
4515 const VkSwapchainKHR* pSwapchains,
4516 const VkHdrMetadataEXT* pMetadata)
4517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004518 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004519 auto vkEnc = HostConnection::get()->vkEncoder();
4520 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4521}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004522static void dynCheck_entry_vkSetHdrMetadataEXT(
4523 VkDevice device,
4524 uint32_t swapchainCount,
4525 const VkSwapchainKHR* pSwapchains,
4526 const VkHdrMetadataEXT* pMetadata)
4527{
4528 auto resources = ResourceTracker::get();
4529 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4530 {
4531 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4532 }
4533 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4534 auto vkEnc = HostConnection::get()->vkEncoder();
4535 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4536}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004537#endif
4538#ifdef VK_MVK_ios_surface
4539static VkResult entry_vkCreateIOSSurfaceMVK(
4540 VkInstance instance,
4541 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4542 const VkAllocationCallbacks* pAllocator,
4543 VkSurfaceKHR* pSurface)
4544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004545 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004546 auto vkEnc = HostConnection::get()->vkEncoder();
4547 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
4548 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4549 return vkCreateIOSSurfaceMVK_VkResult_return;
4550}
4551#endif
4552#ifdef VK_MVK_macos_surface
4553static VkResult entry_vkCreateMacOSSurfaceMVK(
4554 VkInstance instance,
4555 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4556 const VkAllocationCallbacks* pAllocator,
4557 VkSurfaceKHR* pSurface)
4558{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004559 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004560 auto vkEnc = HostConnection::get()->vkEncoder();
4561 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
4562 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4563 return vkCreateMacOSSurfaceMVK_VkResult_return;
4564}
4565#endif
4566#ifdef VK_EXT_external_memory_dma_buf
4567#endif
4568#ifdef VK_EXT_queue_family_foreign
4569#endif
4570#ifdef VK_EXT_debug_utils
4571static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4572 VkDevice device,
4573 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4574{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004575 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004576 auto vkEnc = HostConnection::get()->vkEncoder();
4577 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4578 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4579 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4580}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004581static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4582 VkDevice device,
4583 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4584{
4585 auto resources = ResourceTracker::get();
4586 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4587 {
4588 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4589 }
4590 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4591 auto vkEnc = HostConnection::get()->vkEncoder();
4592 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4593 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4594 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4595}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004596static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4597 VkDevice device,
4598 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4599{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004600 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004601 auto vkEnc = HostConnection::get()->vkEncoder();
4602 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4603 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4604 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4605}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004606static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4607 VkDevice device,
4608 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4609{
4610 auto resources = ResourceTracker::get();
4611 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4612 {
4613 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4614 }
4615 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4616 auto vkEnc = HostConnection::get()->vkEncoder();
4617 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4618 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4619 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4620}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004621static void entry_vkQueueBeginDebugUtilsLabelEXT(
4622 VkQueue queue,
4623 const VkDebugUtilsLabelEXT* pLabelInfo)
4624{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004625 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004626 auto vkEnc = HostConnection::get()->vkEncoder();
4627 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4628}
4629static void entry_vkQueueEndDebugUtilsLabelEXT(
4630 VkQueue queue)
4631{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004632 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004633 auto vkEnc = HostConnection::get()->vkEncoder();
4634 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
4635}
4636static void entry_vkQueueInsertDebugUtilsLabelEXT(
4637 VkQueue queue,
4638 const VkDebugUtilsLabelEXT* pLabelInfo)
4639{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004640 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004641 auto vkEnc = HostConnection::get()->vkEncoder();
4642 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4643}
4644static void entry_vkCmdBeginDebugUtilsLabelEXT(
4645 VkCommandBuffer commandBuffer,
4646 const VkDebugUtilsLabelEXT* pLabelInfo)
4647{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004648 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004649 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004650 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004651 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4652}
4653static void entry_vkCmdEndDebugUtilsLabelEXT(
4654 VkCommandBuffer commandBuffer)
4655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004656 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004657 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004658 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004659 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
4660}
4661static void entry_vkCmdInsertDebugUtilsLabelEXT(
4662 VkCommandBuffer commandBuffer,
4663 const VkDebugUtilsLabelEXT* pLabelInfo)
4664{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004665 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004666 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004667 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004668 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4669}
4670static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4671 VkInstance instance,
4672 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4673 const VkAllocationCallbacks* pAllocator,
4674 VkDebugUtilsMessengerEXT* pMessenger)
4675{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004676 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004677 auto vkEnc = HostConnection::get()->vkEncoder();
4678 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
4679 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
4680 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4681}
4682static void entry_vkDestroyDebugUtilsMessengerEXT(
4683 VkInstance instance,
4684 VkDebugUtilsMessengerEXT messenger,
4685 const VkAllocationCallbacks* pAllocator)
4686{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004687 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004688 auto vkEnc = HostConnection::get()->vkEncoder();
4689 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
4690}
4691static void entry_vkSubmitDebugUtilsMessageEXT(
4692 VkInstance instance,
4693 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4694 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4695 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4696{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004697 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004698 auto vkEnc = HostConnection::get()->vkEncoder();
4699 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
4700}
4701#endif
4702#ifdef VK_ANDROID_external_memory_android_hardware_buffer
4703static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4704 VkDevice device,
4705 const AHardwareBuffer* buffer,
4706 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4707{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004708 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004709 auto vkEnc = HostConnection::get()->vkEncoder();
4710 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004711 auto resources = ResourceTracker::get();
4712 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004713 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4714}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004715static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4716 VkDevice device,
4717 const AHardwareBuffer* buffer,
4718 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4719{
4720 auto resources = ResourceTracker::get();
4721 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4722 {
4723 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4724 }
4725 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4726 auto vkEnc = HostConnection::get()->vkEncoder();
4727 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4728 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4729 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4730}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004731static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4732 VkDevice device,
4733 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4734 AHardwareBuffer** pBuffer)
4735{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004736 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004737 auto vkEnc = HostConnection::get()->vkEncoder();
4738 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004739 auto resources = ResourceTracker::get();
4740 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004741 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4742}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004743static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4744 VkDevice device,
4745 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4746 AHardwareBuffer** pBuffer)
4747{
4748 auto resources = ResourceTracker::get();
4749 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4750 {
4751 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4752 }
4753 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4754 auto vkEnc = HostConnection::get()->vkEncoder();
4755 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4756 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4757 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4758}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004759#endif
4760#ifdef VK_EXT_sampler_filter_minmax
4761#endif
4762#ifdef VK_AMD_gpu_shader_int16
4763#endif
4764#ifdef VK_AMD_mixed_attachment_samples
4765#endif
4766#ifdef VK_AMD_shader_fragment_mask
4767#endif
4768#ifdef VK_EXT_shader_stencil_export
4769#endif
4770#ifdef VK_EXT_sample_locations
4771static void entry_vkCmdSetSampleLocationsEXT(
4772 VkCommandBuffer commandBuffer,
4773 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4774{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004775 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004776 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004777 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004778 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4779}
4780static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4781 VkPhysicalDevice physicalDevice,
4782 VkSampleCountFlagBits samples,
4783 VkMultisamplePropertiesEXT* pMultisampleProperties)
4784{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004785 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004786 auto vkEnc = HostConnection::get()->vkEncoder();
4787 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
4788}
4789#endif
4790#ifdef VK_EXT_blend_operation_advanced
4791#endif
4792#ifdef VK_NV_fragment_coverage_to_color
4793#endif
4794#ifdef VK_NV_framebuffer_mixed_samples
4795#endif
4796#ifdef VK_NV_fill_rectangle
4797#endif
4798#ifdef VK_EXT_post_depth_coverage
4799#endif
4800#ifdef VK_EXT_validation_cache
4801static VkResult entry_vkCreateValidationCacheEXT(
4802 VkDevice device,
4803 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4804 const VkAllocationCallbacks* pAllocator,
4805 VkValidationCacheEXT* pValidationCache)
4806{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004807 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004808 auto vkEnc = HostConnection::get()->vkEncoder();
4809 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4810 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4811 return vkCreateValidationCacheEXT_VkResult_return;
4812}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004813static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4814 VkDevice device,
4815 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4816 const VkAllocationCallbacks* pAllocator,
4817 VkValidationCacheEXT* pValidationCache)
4818{
4819 auto resources = ResourceTracker::get();
4820 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4821 {
4822 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4823 }
4824 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4825 auto vkEnc = HostConnection::get()->vkEncoder();
4826 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4827 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4828 return vkCreateValidationCacheEXT_VkResult_return;
4829}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004830static void entry_vkDestroyValidationCacheEXT(
4831 VkDevice device,
4832 VkValidationCacheEXT validationCache,
4833 const VkAllocationCallbacks* pAllocator)
4834{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004835 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004836 auto vkEnc = HostConnection::get()->vkEncoder();
4837 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4838}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004839static void dynCheck_entry_vkDestroyValidationCacheEXT(
4840 VkDevice device,
4841 VkValidationCacheEXT validationCache,
4842 const VkAllocationCallbacks* pAllocator)
4843{
4844 auto resources = ResourceTracker::get();
4845 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4846 {
4847 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4848 }
4849 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4850 auto vkEnc = HostConnection::get()->vkEncoder();
4851 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4852}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004853static VkResult entry_vkMergeValidationCachesEXT(
4854 VkDevice device,
4855 VkValidationCacheEXT dstCache,
4856 uint32_t srcCacheCount,
4857 const VkValidationCacheEXT* pSrcCaches)
4858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004859 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004860 auto vkEnc = HostConnection::get()->vkEncoder();
4861 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4862 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4863 return vkMergeValidationCachesEXT_VkResult_return;
4864}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004865static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4866 VkDevice device,
4867 VkValidationCacheEXT dstCache,
4868 uint32_t srcCacheCount,
4869 const VkValidationCacheEXT* pSrcCaches)
4870{
4871 auto resources = ResourceTracker::get();
4872 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4873 {
4874 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4875 }
4876 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4877 auto vkEnc = HostConnection::get()->vkEncoder();
4878 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4879 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4880 return vkMergeValidationCachesEXT_VkResult_return;
4881}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004882static VkResult entry_vkGetValidationCacheDataEXT(
4883 VkDevice device,
4884 VkValidationCacheEXT validationCache,
4885 size_t* pDataSize,
4886 void* pData)
4887{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004888 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004889 auto vkEnc = HostConnection::get()->vkEncoder();
4890 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4891 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4892 return vkGetValidationCacheDataEXT_VkResult_return;
4893}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004894static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4895 VkDevice device,
4896 VkValidationCacheEXT validationCache,
4897 size_t* pDataSize,
4898 void* pData)
4899{
4900 auto resources = ResourceTracker::get();
4901 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4902 {
4903 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4904 }
4905 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4906 auto vkEnc = HostConnection::get()->vkEncoder();
4907 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4908 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4909 return vkGetValidationCacheDataEXT_VkResult_return;
4910}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004911#endif
4912#ifdef VK_EXT_descriptor_indexing
4913#endif
4914#ifdef VK_EXT_shader_viewport_index_layer
4915#endif
4916#ifdef VK_EXT_global_priority
4917#endif
4918#ifdef VK_EXT_external_memory_host
4919static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4920 VkDevice device,
4921 VkExternalMemoryHandleTypeFlagBits handleType,
4922 const void* pHostPointer,
4923 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4924{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004925 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004926 auto vkEnc = HostConnection::get()->vkEncoder();
4927 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4928 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4929 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4930}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004931static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4932 VkDevice device,
4933 VkExternalMemoryHandleTypeFlagBits handleType,
4934 const void* pHostPointer,
4935 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4936{
4937 auto resources = ResourceTracker::get();
4938 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4939 {
4940 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4941 }
4942 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4943 auto vkEnc = HostConnection::get()->vkEncoder();
4944 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4945 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4946 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4947}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004948#endif
4949#ifdef VK_AMD_buffer_marker
4950static void entry_vkCmdWriteBufferMarkerAMD(
4951 VkCommandBuffer commandBuffer,
4952 VkPipelineStageFlagBits pipelineStage,
4953 VkBuffer dstBuffer,
4954 VkDeviceSize dstOffset,
4955 uint32_t marker)
4956{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004957 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004958 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004959 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004960 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
4961}
4962#endif
4963#ifdef VK_AMD_shader_core_properties
4964#endif
4965#ifdef VK_EXT_vertex_attribute_divisor
4966#endif
4967#ifdef VK_NV_shader_subgroup_partitioned
4968#endif
4969#ifdef VK_NV_device_diagnostic_checkpoints
4970static void entry_vkCmdSetCheckpointNV(
4971 VkCommandBuffer commandBuffer,
4972 const void* pCheckpointMarker)
4973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004974 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004975 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004976 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004977 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
4978}
4979static void entry_vkGetQueueCheckpointDataNV(
4980 VkQueue queue,
4981 uint32_t* pCheckpointDataCount,
4982 VkCheckpointDataNV* pCheckpointData)
4983{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004984 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004985 auto vkEnc = HostConnection::get()->vkEncoder();
4986 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
4987}
4988#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004989#ifdef VK_GOOGLE_address_space
4990static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
4991 VkDevice device,
4992 VkDeviceMemory memory,
4993 uint64_t* pAddress)
4994{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004995 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004996 auto vkEnc = HostConnection::get()->vkEncoder();
4997 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
4998 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
4999 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5000}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005001static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5002 VkDevice device,
5003 VkDeviceMemory memory,
5004 uint64_t* pAddress)
5005{
5006 auto resources = ResourceTracker::get();
5007 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
5008 {
5009 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
5010 }
5011 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5012 auto vkEnc = HostConnection::get()->vkEncoder();
5013 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5014 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5015 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5016}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005017#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005018#ifdef VK_GOOGLE_color_buffer
5019static VkResult entry_vkRegisterImageColorBufferGOOGLE(
5020 VkDevice device,
5021 VkImage image,
5022 uint32_t colorBuffer)
5023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005024 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005025 auto vkEnc = HostConnection::get()->vkEncoder();
5026 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5027 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5028 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5029}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005030static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
5031 VkDevice device,
5032 VkImage image,
5033 uint32_t colorBuffer)
5034{
5035 auto resources = ResourceTracker::get();
5036 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5037 {
5038 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5039 }
5040 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5041 auto vkEnc = HostConnection::get()->vkEncoder();
5042 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5043 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5044 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5045}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005046static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
5047 VkDevice device,
5048 VkBuffer buffer,
5049 uint32_t colorBuffer)
5050{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005051 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005052 auto vkEnc = HostConnection::get()->vkEncoder();
5053 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5054 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5055 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5056}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005057static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
5058 VkDevice device,
5059 VkBuffer buffer,
5060 uint32_t colorBuffer)
5061{
5062 auto resources = ResourceTracker::get();
5063 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5064 {
5065 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5066 }
5067 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5068 auto vkEnc = HostConnection::get()->vkEncoder();
5069 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5070 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5071 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5072}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005073#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005074#ifdef VK_GOOGLE_sized_descriptor_update_template
5075static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5076 VkDevice device,
5077 VkDescriptorSet descriptorSet,
5078 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5079 uint32_t imageInfoCount,
5080 uint32_t bufferInfoCount,
5081 uint32_t bufferViewCount,
5082 const uint32_t* pImageInfoEntryIndices,
5083 const uint32_t* pBufferInfoEntryIndices,
5084 const uint32_t* pBufferViewEntryIndices,
5085 const VkDescriptorImageInfo* pImageInfos,
5086 const VkDescriptorBufferInfo* pBufferInfos,
5087 const VkBufferView* pBufferViews)
5088{
5089 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5090 auto vkEnc = HostConnection::get()->vkEncoder();
5091 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5092}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005093static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5094 VkDevice device,
5095 VkDescriptorSet descriptorSet,
5096 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5097 uint32_t imageInfoCount,
5098 uint32_t bufferInfoCount,
5099 uint32_t bufferViewCount,
5100 const uint32_t* pImageInfoEntryIndices,
5101 const uint32_t* pBufferInfoEntryIndices,
5102 const uint32_t* pBufferViewEntryIndices,
5103 const VkDescriptorImageInfo* pImageInfos,
5104 const VkDescriptorBufferInfo* pBufferInfos,
5105 const VkBufferView* pBufferViews)
5106{
5107 auto resources = ResourceTracker::get();
5108 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5109 {
5110 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5111 }
5112 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5113 auto vkEnc = HostConnection::get()->vkEncoder();
5114 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5115}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005116#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005117#ifdef VK_GOOGLE_async_command_buffers
5118static void entry_vkBeginCommandBufferAsyncGOOGLE(
5119 VkCommandBuffer commandBuffer,
5120 const VkCommandBufferBeginInfo* pBeginInfo)
5121{
5122 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
5123 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005124 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005125 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
5126}
5127static void entry_vkEndCommandBufferAsyncGOOGLE(
5128 VkCommandBuffer commandBuffer)
5129{
5130 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
5131 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005132 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005133 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
5134}
5135static void entry_vkResetCommandBufferAsyncGOOGLE(
5136 VkCommandBuffer commandBuffer,
5137 VkCommandBufferResetFlags flags)
5138{
5139 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
5140 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005141 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005142 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
5143}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005144static void entry_vkCommandBufferHostSyncGOOGLE(
5145 VkCommandBuffer commandBuffer,
5146 uint32_t needHostSync,
5147 uint32_t sequenceNumber)
5148{
5149 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
5150 auto vkEnc = HostConnection::get()->vkEncoder();
5151 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5152 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
5153}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005154#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005155#ifdef VK_GOOGLE_create_resources_with_requirements
5156static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5157 VkDevice device,
5158 const VkImageCreateInfo* pCreateInfo,
5159 const VkAllocationCallbacks* pAllocator,
5160 VkImage* pImage,
5161 VkMemoryRequirements* pMemoryRequirements)
5162{
5163 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5164 auto vkEnc = HostConnection::get()->vkEncoder();
5165 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5166 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5167 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5168}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005169static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5170 VkDevice device,
5171 const VkImageCreateInfo* pCreateInfo,
5172 const VkAllocationCallbacks* pAllocator,
5173 VkImage* pImage,
5174 VkMemoryRequirements* pMemoryRequirements)
5175{
5176 auto resources = ResourceTracker::get();
5177 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5178 {
5179 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5180 }
5181 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5182 auto vkEnc = HostConnection::get()->vkEncoder();
5183 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5184 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5185 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5186}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005187static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5188 VkDevice device,
5189 const VkBufferCreateInfo* pCreateInfo,
5190 const VkAllocationCallbacks* pAllocator,
5191 VkBuffer* pBuffer,
5192 VkMemoryRequirements* pMemoryRequirements)
5193{
5194 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5195 auto vkEnc = HostConnection::get()->vkEncoder();
5196 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5197 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5198 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5199}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005200static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5201 VkDevice device,
5202 const VkBufferCreateInfo* pCreateInfo,
5203 const VkAllocationCallbacks* pAllocator,
5204 VkBuffer* pBuffer,
5205 VkMemoryRequirements* pMemoryRequirements)
5206{
5207 auto resources = ResourceTracker::get();
5208 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5209 {
5210 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5211 }
5212 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5213 auto vkEnc = HostConnection::get()->vkEncoder();
5214 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5215 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5216 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5217}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005218#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005219void* goldfish_vulkan_get_proc_address(const char* name){
5220#ifdef VK_VERSION_1_0
5221 if (!strcmp(name, "vkCreateInstance"))
5222 {
5223 return (void*)entry_vkCreateInstance;
5224 }
5225 if (!strcmp(name, "vkDestroyInstance"))
5226 {
5227 return (void*)entry_vkDestroyInstance;
5228 }
5229 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5230 {
5231 return (void*)entry_vkEnumeratePhysicalDevices;
5232 }
5233 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5234 {
5235 return (void*)entry_vkGetPhysicalDeviceFeatures;
5236 }
5237 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5238 {
5239 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5240 }
5241 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5242 {
5243 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5244 }
5245 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5246 {
5247 return (void*)entry_vkGetPhysicalDeviceProperties;
5248 }
5249 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5250 {
5251 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5252 }
5253 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5254 {
5255 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5256 }
5257 if (!strcmp(name, "vkGetInstanceProcAddr"))
5258 {
5259 return (void*)entry_vkGetInstanceProcAddr;
5260 }
5261 if (!strcmp(name, "vkGetDeviceProcAddr"))
5262 {
5263 return (void*)entry_vkGetDeviceProcAddr;
5264 }
5265 if (!strcmp(name, "vkCreateDevice"))
5266 {
5267 return (void*)entry_vkCreateDevice;
5268 }
5269 if (!strcmp(name, "vkDestroyDevice"))
5270 {
5271 return (void*)entry_vkDestroyDevice;
5272 }
5273 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5274 {
5275 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5276 }
5277 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5278 {
5279 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5280 }
5281 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5282 {
5283 return (void*)entry_vkEnumerateInstanceLayerProperties;
5284 }
5285 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5286 {
5287 return (void*)entry_vkEnumerateDeviceLayerProperties;
5288 }
5289 if (!strcmp(name, "vkGetDeviceQueue"))
5290 {
5291 return (void*)entry_vkGetDeviceQueue;
5292 }
5293 if (!strcmp(name, "vkQueueSubmit"))
5294 {
5295 return (void*)entry_vkQueueSubmit;
5296 }
5297 if (!strcmp(name, "vkQueueWaitIdle"))
5298 {
5299 return (void*)entry_vkQueueWaitIdle;
5300 }
5301 if (!strcmp(name, "vkDeviceWaitIdle"))
5302 {
5303 return (void*)entry_vkDeviceWaitIdle;
5304 }
5305 if (!strcmp(name, "vkAllocateMemory"))
5306 {
5307 return (void*)entry_vkAllocateMemory;
5308 }
5309 if (!strcmp(name, "vkFreeMemory"))
5310 {
5311 return (void*)entry_vkFreeMemory;
5312 }
5313 if (!strcmp(name, "vkMapMemory"))
5314 {
5315 return (void*)entry_vkMapMemory;
5316 }
5317 if (!strcmp(name, "vkUnmapMemory"))
5318 {
5319 return (void*)entry_vkUnmapMemory;
5320 }
5321 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5322 {
5323 return (void*)entry_vkFlushMappedMemoryRanges;
5324 }
5325 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5326 {
5327 return (void*)entry_vkInvalidateMappedMemoryRanges;
5328 }
5329 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5330 {
5331 return (void*)entry_vkGetDeviceMemoryCommitment;
5332 }
5333 if (!strcmp(name, "vkBindBufferMemory"))
5334 {
5335 return (void*)entry_vkBindBufferMemory;
5336 }
5337 if (!strcmp(name, "vkBindImageMemory"))
5338 {
5339 return (void*)entry_vkBindImageMemory;
5340 }
5341 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5342 {
5343 return (void*)entry_vkGetBufferMemoryRequirements;
5344 }
5345 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5346 {
5347 return (void*)entry_vkGetImageMemoryRequirements;
5348 }
5349 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5350 {
5351 return (void*)entry_vkGetImageSparseMemoryRequirements;
5352 }
5353 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5354 {
5355 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5356 }
5357 if (!strcmp(name, "vkQueueBindSparse"))
5358 {
5359 return (void*)entry_vkQueueBindSparse;
5360 }
5361 if (!strcmp(name, "vkCreateFence"))
5362 {
5363 return (void*)entry_vkCreateFence;
5364 }
5365 if (!strcmp(name, "vkDestroyFence"))
5366 {
5367 return (void*)entry_vkDestroyFence;
5368 }
5369 if (!strcmp(name, "vkResetFences"))
5370 {
5371 return (void*)entry_vkResetFences;
5372 }
5373 if (!strcmp(name, "vkGetFenceStatus"))
5374 {
5375 return (void*)entry_vkGetFenceStatus;
5376 }
5377 if (!strcmp(name, "vkWaitForFences"))
5378 {
5379 return (void*)entry_vkWaitForFences;
5380 }
5381 if (!strcmp(name, "vkCreateSemaphore"))
5382 {
5383 return (void*)entry_vkCreateSemaphore;
5384 }
5385 if (!strcmp(name, "vkDestroySemaphore"))
5386 {
5387 return (void*)entry_vkDestroySemaphore;
5388 }
5389 if (!strcmp(name, "vkCreateEvent"))
5390 {
5391 return (void*)entry_vkCreateEvent;
5392 }
5393 if (!strcmp(name, "vkDestroyEvent"))
5394 {
5395 return (void*)entry_vkDestroyEvent;
5396 }
5397 if (!strcmp(name, "vkGetEventStatus"))
5398 {
5399 return (void*)entry_vkGetEventStatus;
5400 }
5401 if (!strcmp(name, "vkSetEvent"))
5402 {
5403 return (void*)entry_vkSetEvent;
5404 }
5405 if (!strcmp(name, "vkResetEvent"))
5406 {
5407 return (void*)entry_vkResetEvent;
5408 }
5409 if (!strcmp(name, "vkCreateQueryPool"))
5410 {
5411 return (void*)entry_vkCreateQueryPool;
5412 }
5413 if (!strcmp(name, "vkDestroyQueryPool"))
5414 {
5415 return (void*)entry_vkDestroyQueryPool;
5416 }
5417 if (!strcmp(name, "vkGetQueryPoolResults"))
5418 {
5419 return (void*)entry_vkGetQueryPoolResults;
5420 }
5421 if (!strcmp(name, "vkCreateBuffer"))
5422 {
5423 return (void*)entry_vkCreateBuffer;
5424 }
5425 if (!strcmp(name, "vkDestroyBuffer"))
5426 {
5427 return (void*)entry_vkDestroyBuffer;
5428 }
5429 if (!strcmp(name, "vkCreateBufferView"))
5430 {
5431 return (void*)entry_vkCreateBufferView;
5432 }
5433 if (!strcmp(name, "vkDestroyBufferView"))
5434 {
5435 return (void*)entry_vkDestroyBufferView;
5436 }
5437 if (!strcmp(name, "vkCreateImage"))
5438 {
5439 return (void*)entry_vkCreateImage;
5440 }
5441 if (!strcmp(name, "vkDestroyImage"))
5442 {
5443 return (void*)entry_vkDestroyImage;
5444 }
5445 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5446 {
5447 return (void*)entry_vkGetImageSubresourceLayout;
5448 }
5449 if (!strcmp(name, "vkCreateImageView"))
5450 {
5451 return (void*)entry_vkCreateImageView;
5452 }
5453 if (!strcmp(name, "vkDestroyImageView"))
5454 {
5455 return (void*)entry_vkDestroyImageView;
5456 }
5457 if (!strcmp(name, "vkCreateShaderModule"))
5458 {
5459 return (void*)entry_vkCreateShaderModule;
5460 }
5461 if (!strcmp(name, "vkDestroyShaderModule"))
5462 {
5463 return (void*)entry_vkDestroyShaderModule;
5464 }
5465 if (!strcmp(name, "vkCreatePipelineCache"))
5466 {
5467 return (void*)entry_vkCreatePipelineCache;
5468 }
5469 if (!strcmp(name, "vkDestroyPipelineCache"))
5470 {
5471 return (void*)entry_vkDestroyPipelineCache;
5472 }
5473 if (!strcmp(name, "vkGetPipelineCacheData"))
5474 {
5475 return (void*)entry_vkGetPipelineCacheData;
5476 }
5477 if (!strcmp(name, "vkMergePipelineCaches"))
5478 {
5479 return (void*)entry_vkMergePipelineCaches;
5480 }
5481 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5482 {
5483 return (void*)entry_vkCreateGraphicsPipelines;
5484 }
5485 if (!strcmp(name, "vkCreateComputePipelines"))
5486 {
5487 return (void*)entry_vkCreateComputePipelines;
5488 }
5489 if (!strcmp(name, "vkDestroyPipeline"))
5490 {
5491 return (void*)entry_vkDestroyPipeline;
5492 }
5493 if (!strcmp(name, "vkCreatePipelineLayout"))
5494 {
5495 return (void*)entry_vkCreatePipelineLayout;
5496 }
5497 if (!strcmp(name, "vkDestroyPipelineLayout"))
5498 {
5499 return (void*)entry_vkDestroyPipelineLayout;
5500 }
5501 if (!strcmp(name, "vkCreateSampler"))
5502 {
5503 return (void*)entry_vkCreateSampler;
5504 }
5505 if (!strcmp(name, "vkDestroySampler"))
5506 {
5507 return (void*)entry_vkDestroySampler;
5508 }
5509 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5510 {
5511 return (void*)entry_vkCreateDescriptorSetLayout;
5512 }
5513 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5514 {
5515 return (void*)entry_vkDestroyDescriptorSetLayout;
5516 }
5517 if (!strcmp(name, "vkCreateDescriptorPool"))
5518 {
5519 return (void*)entry_vkCreateDescriptorPool;
5520 }
5521 if (!strcmp(name, "vkDestroyDescriptorPool"))
5522 {
5523 return (void*)entry_vkDestroyDescriptorPool;
5524 }
5525 if (!strcmp(name, "vkResetDescriptorPool"))
5526 {
5527 return (void*)entry_vkResetDescriptorPool;
5528 }
5529 if (!strcmp(name, "vkAllocateDescriptorSets"))
5530 {
5531 return (void*)entry_vkAllocateDescriptorSets;
5532 }
5533 if (!strcmp(name, "vkFreeDescriptorSets"))
5534 {
5535 return (void*)entry_vkFreeDescriptorSets;
5536 }
5537 if (!strcmp(name, "vkUpdateDescriptorSets"))
5538 {
5539 return (void*)entry_vkUpdateDescriptorSets;
5540 }
5541 if (!strcmp(name, "vkCreateFramebuffer"))
5542 {
5543 return (void*)entry_vkCreateFramebuffer;
5544 }
5545 if (!strcmp(name, "vkDestroyFramebuffer"))
5546 {
5547 return (void*)entry_vkDestroyFramebuffer;
5548 }
5549 if (!strcmp(name, "vkCreateRenderPass"))
5550 {
5551 return (void*)entry_vkCreateRenderPass;
5552 }
5553 if (!strcmp(name, "vkDestroyRenderPass"))
5554 {
5555 return (void*)entry_vkDestroyRenderPass;
5556 }
5557 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5558 {
5559 return (void*)entry_vkGetRenderAreaGranularity;
5560 }
5561 if (!strcmp(name, "vkCreateCommandPool"))
5562 {
5563 return (void*)entry_vkCreateCommandPool;
5564 }
5565 if (!strcmp(name, "vkDestroyCommandPool"))
5566 {
5567 return (void*)entry_vkDestroyCommandPool;
5568 }
5569 if (!strcmp(name, "vkResetCommandPool"))
5570 {
5571 return (void*)entry_vkResetCommandPool;
5572 }
5573 if (!strcmp(name, "vkAllocateCommandBuffers"))
5574 {
5575 return (void*)entry_vkAllocateCommandBuffers;
5576 }
5577 if (!strcmp(name, "vkFreeCommandBuffers"))
5578 {
5579 return (void*)entry_vkFreeCommandBuffers;
5580 }
5581 if (!strcmp(name, "vkBeginCommandBuffer"))
5582 {
5583 return (void*)entry_vkBeginCommandBuffer;
5584 }
5585 if (!strcmp(name, "vkEndCommandBuffer"))
5586 {
5587 return (void*)entry_vkEndCommandBuffer;
5588 }
5589 if (!strcmp(name, "vkResetCommandBuffer"))
5590 {
5591 return (void*)entry_vkResetCommandBuffer;
5592 }
5593 if (!strcmp(name, "vkCmdBindPipeline"))
5594 {
5595 return (void*)entry_vkCmdBindPipeline;
5596 }
5597 if (!strcmp(name, "vkCmdSetViewport"))
5598 {
5599 return (void*)entry_vkCmdSetViewport;
5600 }
5601 if (!strcmp(name, "vkCmdSetScissor"))
5602 {
5603 return (void*)entry_vkCmdSetScissor;
5604 }
5605 if (!strcmp(name, "vkCmdSetLineWidth"))
5606 {
5607 return (void*)entry_vkCmdSetLineWidth;
5608 }
5609 if (!strcmp(name, "vkCmdSetDepthBias"))
5610 {
5611 return (void*)entry_vkCmdSetDepthBias;
5612 }
5613 if (!strcmp(name, "vkCmdSetBlendConstants"))
5614 {
5615 return (void*)entry_vkCmdSetBlendConstants;
5616 }
5617 if (!strcmp(name, "vkCmdSetDepthBounds"))
5618 {
5619 return (void*)entry_vkCmdSetDepthBounds;
5620 }
5621 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5622 {
5623 return (void*)entry_vkCmdSetStencilCompareMask;
5624 }
5625 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5626 {
5627 return (void*)entry_vkCmdSetStencilWriteMask;
5628 }
5629 if (!strcmp(name, "vkCmdSetStencilReference"))
5630 {
5631 return (void*)entry_vkCmdSetStencilReference;
5632 }
5633 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5634 {
5635 return (void*)entry_vkCmdBindDescriptorSets;
5636 }
5637 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5638 {
5639 return (void*)entry_vkCmdBindIndexBuffer;
5640 }
5641 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5642 {
5643 return (void*)entry_vkCmdBindVertexBuffers;
5644 }
5645 if (!strcmp(name, "vkCmdDraw"))
5646 {
5647 return (void*)entry_vkCmdDraw;
5648 }
5649 if (!strcmp(name, "vkCmdDrawIndexed"))
5650 {
5651 return (void*)entry_vkCmdDrawIndexed;
5652 }
5653 if (!strcmp(name, "vkCmdDrawIndirect"))
5654 {
5655 return (void*)entry_vkCmdDrawIndirect;
5656 }
5657 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5658 {
5659 return (void*)entry_vkCmdDrawIndexedIndirect;
5660 }
5661 if (!strcmp(name, "vkCmdDispatch"))
5662 {
5663 return (void*)entry_vkCmdDispatch;
5664 }
5665 if (!strcmp(name, "vkCmdDispatchIndirect"))
5666 {
5667 return (void*)entry_vkCmdDispatchIndirect;
5668 }
5669 if (!strcmp(name, "vkCmdCopyBuffer"))
5670 {
5671 return (void*)entry_vkCmdCopyBuffer;
5672 }
5673 if (!strcmp(name, "vkCmdCopyImage"))
5674 {
5675 return (void*)entry_vkCmdCopyImage;
5676 }
5677 if (!strcmp(name, "vkCmdBlitImage"))
5678 {
5679 return (void*)entry_vkCmdBlitImage;
5680 }
5681 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5682 {
5683 return (void*)entry_vkCmdCopyBufferToImage;
5684 }
5685 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5686 {
5687 return (void*)entry_vkCmdCopyImageToBuffer;
5688 }
5689 if (!strcmp(name, "vkCmdUpdateBuffer"))
5690 {
5691 return (void*)entry_vkCmdUpdateBuffer;
5692 }
5693 if (!strcmp(name, "vkCmdFillBuffer"))
5694 {
5695 return (void*)entry_vkCmdFillBuffer;
5696 }
5697 if (!strcmp(name, "vkCmdClearColorImage"))
5698 {
5699 return (void*)entry_vkCmdClearColorImage;
5700 }
5701 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5702 {
5703 return (void*)entry_vkCmdClearDepthStencilImage;
5704 }
5705 if (!strcmp(name, "vkCmdClearAttachments"))
5706 {
5707 return (void*)entry_vkCmdClearAttachments;
5708 }
5709 if (!strcmp(name, "vkCmdResolveImage"))
5710 {
5711 return (void*)entry_vkCmdResolveImage;
5712 }
5713 if (!strcmp(name, "vkCmdSetEvent"))
5714 {
5715 return (void*)entry_vkCmdSetEvent;
5716 }
5717 if (!strcmp(name, "vkCmdResetEvent"))
5718 {
5719 return (void*)entry_vkCmdResetEvent;
5720 }
5721 if (!strcmp(name, "vkCmdWaitEvents"))
5722 {
5723 return (void*)entry_vkCmdWaitEvents;
5724 }
5725 if (!strcmp(name, "vkCmdPipelineBarrier"))
5726 {
5727 return (void*)entry_vkCmdPipelineBarrier;
5728 }
5729 if (!strcmp(name, "vkCmdBeginQuery"))
5730 {
5731 return (void*)entry_vkCmdBeginQuery;
5732 }
5733 if (!strcmp(name, "vkCmdEndQuery"))
5734 {
5735 return (void*)entry_vkCmdEndQuery;
5736 }
5737 if (!strcmp(name, "vkCmdResetQueryPool"))
5738 {
5739 return (void*)entry_vkCmdResetQueryPool;
5740 }
5741 if (!strcmp(name, "vkCmdWriteTimestamp"))
5742 {
5743 return (void*)entry_vkCmdWriteTimestamp;
5744 }
5745 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5746 {
5747 return (void*)entry_vkCmdCopyQueryPoolResults;
5748 }
5749 if (!strcmp(name, "vkCmdPushConstants"))
5750 {
5751 return (void*)entry_vkCmdPushConstants;
5752 }
5753 if (!strcmp(name, "vkCmdBeginRenderPass"))
5754 {
5755 return (void*)entry_vkCmdBeginRenderPass;
5756 }
5757 if (!strcmp(name, "vkCmdNextSubpass"))
5758 {
5759 return (void*)entry_vkCmdNextSubpass;
5760 }
5761 if (!strcmp(name, "vkCmdEndRenderPass"))
5762 {
5763 return (void*)entry_vkCmdEndRenderPass;
5764 }
5765 if (!strcmp(name, "vkCmdExecuteCommands"))
5766 {
5767 return (void*)entry_vkCmdExecuteCommands;
5768 }
5769#endif
5770#ifdef VK_VERSION_1_1
5771 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5772 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005773 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005774 }
5775 if (!strcmp(name, "vkBindBufferMemory2"))
5776 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005777 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005778 }
5779 if (!strcmp(name, "vkBindImageMemory2"))
5780 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005781 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005782 }
5783 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5784 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005785 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005786 }
5787 if (!strcmp(name, "vkCmdSetDeviceMask"))
5788 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005789 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005790 }
5791 if (!strcmp(name, "vkCmdDispatchBase"))
5792 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005793 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005794 }
5795 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5796 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005797 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005798 }
5799 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5800 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005801 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005802 }
5803 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5804 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005805 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005806 }
5807 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5808 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005809 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005810 }
5811 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5812 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005813 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005814 }
5815 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5816 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005817 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005818 }
5819 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5820 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005821 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005822 }
5823 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5824 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005825 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005826 }
5827 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5828 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005829 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005830 }
5831 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5832 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005833 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005834 }
5835 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5836 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005837 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005838 }
5839 if (!strcmp(name, "vkTrimCommandPool"))
5840 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005841 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005842 }
5843 if (!strcmp(name, "vkGetDeviceQueue2"))
5844 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005845 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005846 }
5847 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5848 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005849 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005850 }
5851 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5852 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005853 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005854 }
5855 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5856 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005857 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005858 }
5859 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5860 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005861 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005862 }
5863 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5864 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005865 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005866 }
5867 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5868 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005869 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005870 }
5871 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5872 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005873 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005874 }
5875 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5876 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005877 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005878 }
5879 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5880 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005881 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005882 }
5883#endif
5884#ifdef VK_KHR_surface
5885 if (!strcmp(name, "vkDestroySurfaceKHR"))
5886 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005887 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005888 }
5889 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
5890 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005891 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005892 }
5893 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
5894 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005895 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005896 }
5897 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
5898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005900 }
5901 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
5902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005904 }
5905#endif
5906#ifdef VK_KHR_swapchain
5907 if (!strcmp(name, "vkCreateSwapchainKHR"))
5908 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005909 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005910 }
5911 if (!strcmp(name, "vkDestroySwapchainKHR"))
5912 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005913 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005914 }
5915 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
5916 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005917 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005918 }
5919 if (!strcmp(name, "vkAcquireNextImageKHR"))
5920 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005921 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005922 }
5923 if (!strcmp(name, "vkQueuePresentKHR"))
5924 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005925 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005926 }
5927 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
5928 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005929 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005930 }
5931 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
5932 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005933 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005934 }
5935 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
5936 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005937 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005938 }
5939 if (!strcmp(name, "vkAcquireNextImage2KHR"))
5940 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005941 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005942 }
5943#endif
5944#ifdef VK_KHR_display
5945 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
5946 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005947 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005948 }
5949 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
5950 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005951 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005952 }
5953 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
5954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005956 }
5957 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
5958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005959 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005960 }
5961 if (!strcmp(name, "vkCreateDisplayModeKHR"))
5962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005963 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005964 }
5965 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
5966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005968 }
5969 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
5970 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005971 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005972 }
5973#endif
5974#ifdef VK_KHR_display_swapchain
5975 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
5976 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005977 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005978 }
5979#endif
5980#ifdef VK_KHR_xlib_surface
5981 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
5982 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005983 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005984 }
5985 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
5986 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005987 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005988 }
5989#endif
5990#ifdef VK_KHR_xcb_surface
5991 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
5992 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005993 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005994 }
5995 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
5996 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005997 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005998 }
5999#endif
6000#ifdef VK_KHR_wayland_surface
6001 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6002 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006003 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006004 }
6005 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6006 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006007 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006008 }
6009#endif
6010#ifdef VK_KHR_mir_surface
6011 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6012 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006013 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006014 }
6015 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
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_android_surface
6021 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6022 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006023 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006024 }
6025#endif
6026#ifdef VK_KHR_win32_surface
6027 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6028 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006029 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006030 }
6031 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6032 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006033 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006034 }
6035#endif
6036#ifdef VK_KHR_get_physical_device_properties2
6037 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006040 }
6041 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6042 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006043 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006044 }
6045 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6046 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006047 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006048 }
6049 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006052 }
6053 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6054 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006055 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006056 }
6057 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6058 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006059 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006060 }
6061 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
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_device_group
6067 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6068 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006069 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006070 }
6071 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6072 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006073 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006074 }
6075 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006078 }
6079#endif
6080#ifdef VK_KHR_maintenance1
6081 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6082 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006083 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006084 }
6085#endif
6086#ifdef VK_KHR_device_group_creation
6087 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6088 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006089 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006090 }
6091#endif
6092#ifdef VK_KHR_external_memory_capabilities
6093 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6094 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006095 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006096 }
6097#endif
6098#ifdef VK_KHR_external_memory_win32
6099 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6100 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006101 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006102 }
6103 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6104 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006105 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006106 }
6107#endif
6108#ifdef VK_KHR_external_memory_fd
6109 if (!strcmp(name, "vkGetMemoryFdKHR"))
6110 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006111 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006112 }
6113 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6114 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006115 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006116 }
6117#endif
6118#ifdef VK_KHR_external_semaphore_capabilities
6119 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6120 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006121 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006122 }
6123#endif
6124#ifdef VK_KHR_external_semaphore_win32
6125 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6126 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006127 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006128 }
6129 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6130 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006131 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006132 }
6133#endif
6134#ifdef VK_KHR_external_semaphore_fd
6135 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6136 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006137 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006138 }
6139 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6140 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006141 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006142 }
6143#endif
6144#ifdef VK_KHR_push_descriptor
6145 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6146 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006147 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006148 }
6149 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6150 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006151 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006152 }
6153#endif
6154#ifdef VK_KHR_descriptor_update_template
6155 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6156 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006157 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006158 }
6159 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6160 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006161 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006162 }
6163 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6164 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006165 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006166 }
6167#endif
6168#ifdef VK_KHR_create_renderpass2
6169 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6170 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006171 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006172 }
6173 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6174 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006175 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006176 }
6177 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6178 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006179 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006180 }
6181 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6182 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006183 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006184 }
6185#endif
6186#ifdef VK_KHR_shared_presentable_image
6187 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6188 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006189 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006190 }
6191#endif
6192#ifdef VK_KHR_external_fence_capabilities
6193 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6194 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006195 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006196 }
6197#endif
6198#ifdef VK_KHR_external_fence_win32
6199 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6200 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006201 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006202 }
6203 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
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_external_fence_fd
6209 if (!strcmp(name, "vkImportFenceFdKHR"))
6210 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006211 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006212 }
6213 if (!strcmp(name, "vkGetFenceFdKHR"))
6214 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006215 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006216 }
6217#endif
6218#ifdef VK_KHR_get_surface_capabilities2
6219 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6220 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006221 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006222 }
6223 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6224 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006225 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006226 }
6227#endif
6228#ifdef VK_KHR_get_display_properties2
6229 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6230 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006231 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006232 }
6233 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6234 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006235 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006236 }
6237 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6238 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006239 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006240 }
6241 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6242 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006243 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006244 }
6245#endif
6246#ifdef VK_KHR_get_memory_requirements2
6247 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6248 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006249 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006250 }
6251 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6252 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006253 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006254 }
6255 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6256 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006257 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006258 }
6259#endif
6260#ifdef VK_KHR_sampler_ycbcr_conversion
6261 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6262 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006263 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006264 }
6265 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6266 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006267 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006268 }
6269#endif
6270#ifdef VK_KHR_bind_memory2
6271 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006273 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006274 }
6275 if (!strcmp(name, "vkBindImageMemory2KHR"))
6276 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006277 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006278 }
6279#endif
6280#ifdef VK_KHR_maintenance3
6281 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
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_draw_indirect_count
6287 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6288 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006289 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006290 }
6291 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6292 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006293 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006294 }
6295#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006296#ifdef VK_ANDROID_native_buffer
6297 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6298 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006299 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006300 }
6301 if (!strcmp(name, "vkAcquireImageANDROID"))
6302 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006303 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006304 }
6305 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6306 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006307 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006308 }
6309#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006310#ifdef VK_EXT_debug_report
6311 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6312 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006313 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006314 }
6315 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6316 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006317 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006318 }
6319 if (!strcmp(name, "vkDebugReportMessageEXT"))
6320 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006321 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006322 }
6323#endif
6324#ifdef VK_EXT_debug_marker
6325 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6326 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006327 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006328 }
6329 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6330 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006331 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006332 }
6333 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6334 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006335 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006336 }
6337 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6338 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006339 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006340 }
6341 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6342 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006343 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006344 }
6345#endif
6346#ifdef VK_AMD_draw_indirect_count
6347 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6348 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006349 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006350 }
6351 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6352 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006353 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006354 }
6355#endif
6356#ifdef VK_AMD_shader_info
6357 if (!strcmp(name, "vkGetShaderInfoAMD"))
6358 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006359 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006360 }
6361#endif
6362#ifdef VK_NV_external_memory_capabilities
6363 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6364 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006365 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006366 }
6367#endif
6368#ifdef VK_NV_external_memory_win32
6369 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6370 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006371 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006372 }
6373#endif
6374#ifdef VK_NN_vi_surface
6375 if (!strcmp(name, "vkCreateViSurfaceNN"))
6376 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006377 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006378 }
6379#endif
6380#ifdef VK_EXT_conditional_rendering
6381 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6382 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006383 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006384 }
6385 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6386 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006387 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006388 }
6389#endif
6390#ifdef VK_NVX_device_generated_commands
6391 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6392 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006393 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006394 }
6395 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6396 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006397 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006398 }
6399 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6400 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006401 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006402 }
6403 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6404 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006405 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006406 }
6407 if (!strcmp(name, "vkCreateObjectTableNVX"))
6408 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006409 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006410 }
6411 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6412 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006413 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006414 }
6415 if (!strcmp(name, "vkRegisterObjectsNVX"))
6416 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006417 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006418 }
6419 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6420 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006421 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006422 }
6423 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6424 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006425 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006426 }
6427#endif
6428#ifdef VK_NV_clip_space_w_scaling
6429 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6430 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006431 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006432 }
6433#endif
6434#ifdef VK_EXT_direct_mode_display
6435 if (!strcmp(name, "vkReleaseDisplayEXT"))
6436 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006437 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006438 }
6439#endif
6440#ifdef VK_EXT_acquire_xlib_display
6441 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006443 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006444 }
6445 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6446 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006447 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006448 }
6449#endif
6450#ifdef VK_EXT_display_surface_counter
6451 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6452 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006454 }
6455#endif
6456#ifdef VK_EXT_display_control
6457 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6458 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006459 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006460 }
6461 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6462 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006463 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006464 }
6465 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6466 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006467 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006468 }
6469 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6470 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006471 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006472 }
6473#endif
6474#ifdef VK_GOOGLE_display_timing
6475 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6476 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006477 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006478 }
6479 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6480 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006481 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006482 }
6483#endif
6484#ifdef VK_EXT_discard_rectangles
6485 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
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_hdr_metadata
6491 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6492 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006493 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006494 }
6495#endif
6496#ifdef VK_MVK_ios_surface
6497 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6498 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006499 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006500 }
6501#endif
6502#ifdef VK_MVK_macos_surface
6503 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006506 }
6507#endif
6508#ifdef VK_EXT_debug_utils
6509 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6510 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006511 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006512 }
6513 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006516 }
6517 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6518 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006520 }
6521 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006524 }
6525 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6526 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006527 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006528 }
6529 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006532 }
6533 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6534 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006535 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006536 }
6537 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006540 }
6541 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006544 }
6545 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006548 }
6549 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6550 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006551 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006552 }
6553#endif
6554#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6555 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6556 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006557 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006558 }
6559 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6560 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006561 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006562 }
6563#endif
6564#ifdef VK_EXT_sample_locations
6565 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6566 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006567 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006568 }
6569 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6570 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006571 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006572 }
6573#endif
6574#ifdef VK_EXT_validation_cache
6575 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006578 }
6579 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6580 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006581 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006582 }
6583 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6584 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006585 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006586 }
6587 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006590 }
6591#endif
6592#ifdef VK_EXT_external_memory_host
6593 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6594 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006595 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006596 }
6597#endif
6598#ifdef VK_AMD_buffer_marker
6599 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6600 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006601 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006602 }
6603#endif
6604#ifdef VK_NV_device_diagnostic_checkpoints
6605 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6606 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006607 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006608 }
6609 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6610 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006611 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006612 }
6613#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006614#ifdef VK_GOOGLE_address_space
6615 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6616 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006617 return nullptr;
6618 }
6619#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006620#ifdef VK_GOOGLE_color_buffer
6621 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6622 {
6623 return nullptr;
6624 }
6625 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6626 {
6627 return nullptr;
6628 }
6629#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006630#ifdef VK_GOOGLE_sized_descriptor_update_template
6631 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6632 {
6633 return nullptr;
6634 }
6635#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006636#ifdef VK_GOOGLE_async_command_buffers
6637 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6638 {
6639 return nullptr;
6640 }
6641 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6642 {
6643 return nullptr;
6644 }
6645 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6646 {
6647 return nullptr;
6648 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006649 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6650 {
6651 return nullptr;
6652 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006653#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006654#ifdef VK_GOOGLE_create_resources_with_requirements
6655 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6656 {
6657 return nullptr;
6658 }
6659 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6660 {
6661 return nullptr;
6662 }
6663#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006664 return nullptr;
6665}
6666void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6667 auto resources = ResourceTracker::get();
6668 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6669#ifdef VK_VERSION_1_0
6670 if (!strcmp(name, "vkCreateInstance"))
6671 {
6672 return (void*)entry_vkCreateInstance;
6673 }
6674 if (!strcmp(name, "vkDestroyInstance"))
6675 {
6676 return (void*)entry_vkDestroyInstance;
6677 }
6678 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6679 {
6680 return (void*)entry_vkEnumeratePhysicalDevices;
6681 }
6682 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6683 {
6684 return (void*)entry_vkGetPhysicalDeviceFeatures;
6685 }
6686 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6687 {
6688 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6689 }
6690 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6691 {
6692 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6693 }
6694 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6695 {
6696 return (void*)entry_vkGetPhysicalDeviceProperties;
6697 }
6698 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6699 {
6700 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6701 }
6702 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6703 {
6704 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6705 }
6706 if (!strcmp(name, "vkGetInstanceProcAddr"))
6707 {
6708 return (void*)entry_vkGetInstanceProcAddr;
6709 }
6710 if (!strcmp(name, "vkGetDeviceProcAddr"))
6711 {
6712 return (void*)entry_vkGetDeviceProcAddr;
6713 }
6714 if (!strcmp(name, "vkCreateDevice"))
6715 {
6716 return (void*)entry_vkCreateDevice;
6717 }
6718 if (!strcmp(name, "vkDestroyDevice"))
6719 {
6720 return (void*)entry_vkDestroyDevice;
6721 }
6722 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6723 {
6724 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6725 }
6726 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6727 {
6728 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6729 }
6730 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6731 {
6732 return (void*)entry_vkEnumerateInstanceLayerProperties;
6733 }
6734 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6735 {
6736 return (void*)entry_vkEnumerateDeviceLayerProperties;
6737 }
6738 if (!strcmp(name, "vkGetDeviceQueue"))
6739 {
6740 return (void*)entry_vkGetDeviceQueue;
6741 }
6742 if (!strcmp(name, "vkQueueSubmit"))
6743 {
6744 return (void*)entry_vkQueueSubmit;
6745 }
6746 if (!strcmp(name, "vkQueueWaitIdle"))
6747 {
6748 return (void*)entry_vkQueueWaitIdle;
6749 }
6750 if (!strcmp(name, "vkDeviceWaitIdle"))
6751 {
6752 return (void*)entry_vkDeviceWaitIdle;
6753 }
6754 if (!strcmp(name, "vkAllocateMemory"))
6755 {
6756 return (void*)entry_vkAllocateMemory;
6757 }
6758 if (!strcmp(name, "vkFreeMemory"))
6759 {
6760 return (void*)entry_vkFreeMemory;
6761 }
6762 if (!strcmp(name, "vkMapMemory"))
6763 {
6764 return (void*)entry_vkMapMemory;
6765 }
6766 if (!strcmp(name, "vkUnmapMemory"))
6767 {
6768 return (void*)entry_vkUnmapMemory;
6769 }
6770 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6771 {
6772 return (void*)entry_vkFlushMappedMemoryRanges;
6773 }
6774 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6775 {
6776 return (void*)entry_vkInvalidateMappedMemoryRanges;
6777 }
6778 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6779 {
6780 return (void*)entry_vkGetDeviceMemoryCommitment;
6781 }
6782 if (!strcmp(name, "vkBindBufferMemory"))
6783 {
6784 return (void*)entry_vkBindBufferMemory;
6785 }
6786 if (!strcmp(name, "vkBindImageMemory"))
6787 {
6788 return (void*)entry_vkBindImageMemory;
6789 }
6790 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6791 {
6792 return (void*)entry_vkGetBufferMemoryRequirements;
6793 }
6794 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6795 {
6796 return (void*)entry_vkGetImageMemoryRequirements;
6797 }
6798 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6799 {
6800 return (void*)entry_vkGetImageSparseMemoryRequirements;
6801 }
6802 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6803 {
6804 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6805 }
6806 if (!strcmp(name, "vkQueueBindSparse"))
6807 {
6808 return (void*)entry_vkQueueBindSparse;
6809 }
6810 if (!strcmp(name, "vkCreateFence"))
6811 {
6812 return (void*)entry_vkCreateFence;
6813 }
6814 if (!strcmp(name, "vkDestroyFence"))
6815 {
6816 return (void*)entry_vkDestroyFence;
6817 }
6818 if (!strcmp(name, "vkResetFences"))
6819 {
6820 return (void*)entry_vkResetFences;
6821 }
6822 if (!strcmp(name, "vkGetFenceStatus"))
6823 {
6824 return (void*)entry_vkGetFenceStatus;
6825 }
6826 if (!strcmp(name, "vkWaitForFences"))
6827 {
6828 return (void*)entry_vkWaitForFences;
6829 }
6830 if (!strcmp(name, "vkCreateSemaphore"))
6831 {
6832 return (void*)entry_vkCreateSemaphore;
6833 }
6834 if (!strcmp(name, "vkDestroySemaphore"))
6835 {
6836 return (void*)entry_vkDestroySemaphore;
6837 }
6838 if (!strcmp(name, "vkCreateEvent"))
6839 {
6840 return (void*)entry_vkCreateEvent;
6841 }
6842 if (!strcmp(name, "vkDestroyEvent"))
6843 {
6844 return (void*)entry_vkDestroyEvent;
6845 }
6846 if (!strcmp(name, "vkGetEventStatus"))
6847 {
6848 return (void*)entry_vkGetEventStatus;
6849 }
6850 if (!strcmp(name, "vkSetEvent"))
6851 {
6852 return (void*)entry_vkSetEvent;
6853 }
6854 if (!strcmp(name, "vkResetEvent"))
6855 {
6856 return (void*)entry_vkResetEvent;
6857 }
6858 if (!strcmp(name, "vkCreateQueryPool"))
6859 {
6860 return (void*)entry_vkCreateQueryPool;
6861 }
6862 if (!strcmp(name, "vkDestroyQueryPool"))
6863 {
6864 return (void*)entry_vkDestroyQueryPool;
6865 }
6866 if (!strcmp(name, "vkGetQueryPoolResults"))
6867 {
6868 return (void*)entry_vkGetQueryPoolResults;
6869 }
6870 if (!strcmp(name, "vkCreateBuffer"))
6871 {
6872 return (void*)entry_vkCreateBuffer;
6873 }
6874 if (!strcmp(name, "vkDestroyBuffer"))
6875 {
6876 return (void*)entry_vkDestroyBuffer;
6877 }
6878 if (!strcmp(name, "vkCreateBufferView"))
6879 {
6880 return (void*)entry_vkCreateBufferView;
6881 }
6882 if (!strcmp(name, "vkDestroyBufferView"))
6883 {
6884 return (void*)entry_vkDestroyBufferView;
6885 }
6886 if (!strcmp(name, "vkCreateImage"))
6887 {
6888 return (void*)entry_vkCreateImage;
6889 }
6890 if (!strcmp(name, "vkDestroyImage"))
6891 {
6892 return (void*)entry_vkDestroyImage;
6893 }
6894 if (!strcmp(name, "vkGetImageSubresourceLayout"))
6895 {
6896 return (void*)entry_vkGetImageSubresourceLayout;
6897 }
6898 if (!strcmp(name, "vkCreateImageView"))
6899 {
6900 return (void*)entry_vkCreateImageView;
6901 }
6902 if (!strcmp(name, "vkDestroyImageView"))
6903 {
6904 return (void*)entry_vkDestroyImageView;
6905 }
6906 if (!strcmp(name, "vkCreateShaderModule"))
6907 {
6908 return (void*)entry_vkCreateShaderModule;
6909 }
6910 if (!strcmp(name, "vkDestroyShaderModule"))
6911 {
6912 return (void*)entry_vkDestroyShaderModule;
6913 }
6914 if (!strcmp(name, "vkCreatePipelineCache"))
6915 {
6916 return (void*)entry_vkCreatePipelineCache;
6917 }
6918 if (!strcmp(name, "vkDestroyPipelineCache"))
6919 {
6920 return (void*)entry_vkDestroyPipelineCache;
6921 }
6922 if (!strcmp(name, "vkGetPipelineCacheData"))
6923 {
6924 return (void*)entry_vkGetPipelineCacheData;
6925 }
6926 if (!strcmp(name, "vkMergePipelineCaches"))
6927 {
6928 return (void*)entry_vkMergePipelineCaches;
6929 }
6930 if (!strcmp(name, "vkCreateGraphicsPipelines"))
6931 {
6932 return (void*)entry_vkCreateGraphicsPipelines;
6933 }
6934 if (!strcmp(name, "vkCreateComputePipelines"))
6935 {
6936 return (void*)entry_vkCreateComputePipelines;
6937 }
6938 if (!strcmp(name, "vkDestroyPipeline"))
6939 {
6940 return (void*)entry_vkDestroyPipeline;
6941 }
6942 if (!strcmp(name, "vkCreatePipelineLayout"))
6943 {
6944 return (void*)entry_vkCreatePipelineLayout;
6945 }
6946 if (!strcmp(name, "vkDestroyPipelineLayout"))
6947 {
6948 return (void*)entry_vkDestroyPipelineLayout;
6949 }
6950 if (!strcmp(name, "vkCreateSampler"))
6951 {
6952 return (void*)entry_vkCreateSampler;
6953 }
6954 if (!strcmp(name, "vkDestroySampler"))
6955 {
6956 return (void*)entry_vkDestroySampler;
6957 }
6958 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
6959 {
6960 return (void*)entry_vkCreateDescriptorSetLayout;
6961 }
6962 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
6963 {
6964 return (void*)entry_vkDestroyDescriptorSetLayout;
6965 }
6966 if (!strcmp(name, "vkCreateDescriptorPool"))
6967 {
6968 return (void*)entry_vkCreateDescriptorPool;
6969 }
6970 if (!strcmp(name, "vkDestroyDescriptorPool"))
6971 {
6972 return (void*)entry_vkDestroyDescriptorPool;
6973 }
6974 if (!strcmp(name, "vkResetDescriptorPool"))
6975 {
6976 return (void*)entry_vkResetDescriptorPool;
6977 }
6978 if (!strcmp(name, "vkAllocateDescriptorSets"))
6979 {
6980 return (void*)entry_vkAllocateDescriptorSets;
6981 }
6982 if (!strcmp(name, "vkFreeDescriptorSets"))
6983 {
6984 return (void*)entry_vkFreeDescriptorSets;
6985 }
6986 if (!strcmp(name, "vkUpdateDescriptorSets"))
6987 {
6988 return (void*)entry_vkUpdateDescriptorSets;
6989 }
6990 if (!strcmp(name, "vkCreateFramebuffer"))
6991 {
6992 return (void*)entry_vkCreateFramebuffer;
6993 }
6994 if (!strcmp(name, "vkDestroyFramebuffer"))
6995 {
6996 return (void*)entry_vkDestroyFramebuffer;
6997 }
6998 if (!strcmp(name, "vkCreateRenderPass"))
6999 {
7000 return (void*)entry_vkCreateRenderPass;
7001 }
7002 if (!strcmp(name, "vkDestroyRenderPass"))
7003 {
7004 return (void*)entry_vkDestroyRenderPass;
7005 }
7006 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7007 {
7008 return (void*)entry_vkGetRenderAreaGranularity;
7009 }
7010 if (!strcmp(name, "vkCreateCommandPool"))
7011 {
7012 return (void*)entry_vkCreateCommandPool;
7013 }
7014 if (!strcmp(name, "vkDestroyCommandPool"))
7015 {
7016 return (void*)entry_vkDestroyCommandPool;
7017 }
7018 if (!strcmp(name, "vkResetCommandPool"))
7019 {
7020 return (void*)entry_vkResetCommandPool;
7021 }
7022 if (!strcmp(name, "vkAllocateCommandBuffers"))
7023 {
7024 return (void*)entry_vkAllocateCommandBuffers;
7025 }
7026 if (!strcmp(name, "vkFreeCommandBuffers"))
7027 {
7028 return (void*)entry_vkFreeCommandBuffers;
7029 }
7030 if (!strcmp(name, "vkBeginCommandBuffer"))
7031 {
7032 return (void*)entry_vkBeginCommandBuffer;
7033 }
7034 if (!strcmp(name, "vkEndCommandBuffer"))
7035 {
7036 return (void*)entry_vkEndCommandBuffer;
7037 }
7038 if (!strcmp(name, "vkResetCommandBuffer"))
7039 {
7040 return (void*)entry_vkResetCommandBuffer;
7041 }
7042 if (!strcmp(name, "vkCmdBindPipeline"))
7043 {
7044 return (void*)entry_vkCmdBindPipeline;
7045 }
7046 if (!strcmp(name, "vkCmdSetViewport"))
7047 {
7048 return (void*)entry_vkCmdSetViewport;
7049 }
7050 if (!strcmp(name, "vkCmdSetScissor"))
7051 {
7052 return (void*)entry_vkCmdSetScissor;
7053 }
7054 if (!strcmp(name, "vkCmdSetLineWidth"))
7055 {
7056 return (void*)entry_vkCmdSetLineWidth;
7057 }
7058 if (!strcmp(name, "vkCmdSetDepthBias"))
7059 {
7060 return (void*)entry_vkCmdSetDepthBias;
7061 }
7062 if (!strcmp(name, "vkCmdSetBlendConstants"))
7063 {
7064 return (void*)entry_vkCmdSetBlendConstants;
7065 }
7066 if (!strcmp(name, "vkCmdSetDepthBounds"))
7067 {
7068 return (void*)entry_vkCmdSetDepthBounds;
7069 }
7070 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7071 {
7072 return (void*)entry_vkCmdSetStencilCompareMask;
7073 }
7074 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7075 {
7076 return (void*)entry_vkCmdSetStencilWriteMask;
7077 }
7078 if (!strcmp(name, "vkCmdSetStencilReference"))
7079 {
7080 return (void*)entry_vkCmdSetStencilReference;
7081 }
7082 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7083 {
7084 return (void*)entry_vkCmdBindDescriptorSets;
7085 }
7086 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7087 {
7088 return (void*)entry_vkCmdBindIndexBuffer;
7089 }
7090 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7091 {
7092 return (void*)entry_vkCmdBindVertexBuffers;
7093 }
7094 if (!strcmp(name, "vkCmdDraw"))
7095 {
7096 return (void*)entry_vkCmdDraw;
7097 }
7098 if (!strcmp(name, "vkCmdDrawIndexed"))
7099 {
7100 return (void*)entry_vkCmdDrawIndexed;
7101 }
7102 if (!strcmp(name, "vkCmdDrawIndirect"))
7103 {
7104 return (void*)entry_vkCmdDrawIndirect;
7105 }
7106 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7107 {
7108 return (void*)entry_vkCmdDrawIndexedIndirect;
7109 }
7110 if (!strcmp(name, "vkCmdDispatch"))
7111 {
7112 return (void*)entry_vkCmdDispatch;
7113 }
7114 if (!strcmp(name, "vkCmdDispatchIndirect"))
7115 {
7116 return (void*)entry_vkCmdDispatchIndirect;
7117 }
7118 if (!strcmp(name, "vkCmdCopyBuffer"))
7119 {
7120 return (void*)entry_vkCmdCopyBuffer;
7121 }
7122 if (!strcmp(name, "vkCmdCopyImage"))
7123 {
7124 return (void*)entry_vkCmdCopyImage;
7125 }
7126 if (!strcmp(name, "vkCmdBlitImage"))
7127 {
7128 return (void*)entry_vkCmdBlitImage;
7129 }
7130 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7131 {
7132 return (void*)entry_vkCmdCopyBufferToImage;
7133 }
7134 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7135 {
7136 return (void*)entry_vkCmdCopyImageToBuffer;
7137 }
7138 if (!strcmp(name, "vkCmdUpdateBuffer"))
7139 {
7140 return (void*)entry_vkCmdUpdateBuffer;
7141 }
7142 if (!strcmp(name, "vkCmdFillBuffer"))
7143 {
7144 return (void*)entry_vkCmdFillBuffer;
7145 }
7146 if (!strcmp(name, "vkCmdClearColorImage"))
7147 {
7148 return (void*)entry_vkCmdClearColorImage;
7149 }
7150 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7151 {
7152 return (void*)entry_vkCmdClearDepthStencilImage;
7153 }
7154 if (!strcmp(name, "vkCmdClearAttachments"))
7155 {
7156 return (void*)entry_vkCmdClearAttachments;
7157 }
7158 if (!strcmp(name, "vkCmdResolveImage"))
7159 {
7160 return (void*)entry_vkCmdResolveImage;
7161 }
7162 if (!strcmp(name, "vkCmdSetEvent"))
7163 {
7164 return (void*)entry_vkCmdSetEvent;
7165 }
7166 if (!strcmp(name, "vkCmdResetEvent"))
7167 {
7168 return (void*)entry_vkCmdResetEvent;
7169 }
7170 if (!strcmp(name, "vkCmdWaitEvents"))
7171 {
7172 return (void*)entry_vkCmdWaitEvents;
7173 }
7174 if (!strcmp(name, "vkCmdPipelineBarrier"))
7175 {
7176 return (void*)entry_vkCmdPipelineBarrier;
7177 }
7178 if (!strcmp(name, "vkCmdBeginQuery"))
7179 {
7180 return (void*)entry_vkCmdBeginQuery;
7181 }
7182 if (!strcmp(name, "vkCmdEndQuery"))
7183 {
7184 return (void*)entry_vkCmdEndQuery;
7185 }
7186 if (!strcmp(name, "vkCmdResetQueryPool"))
7187 {
7188 return (void*)entry_vkCmdResetQueryPool;
7189 }
7190 if (!strcmp(name, "vkCmdWriteTimestamp"))
7191 {
7192 return (void*)entry_vkCmdWriteTimestamp;
7193 }
7194 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7195 {
7196 return (void*)entry_vkCmdCopyQueryPoolResults;
7197 }
7198 if (!strcmp(name, "vkCmdPushConstants"))
7199 {
7200 return (void*)entry_vkCmdPushConstants;
7201 }
7202 if (!strcmp(name, "vkCmdBeginRenderPass"))
7203 {
7204 return (void*)entry_vkCmdBeginRenderPass;
7205 }
7206 if (!strcmp(name, "vkCmdNextSubpass"))
7207 {
7208 return (void*)entry_vkCmdNextSubpass;
7209 }
7210 if (!strcmp(name, "vkCmdEndRenderPass"))
7211 {
7212 return (void*)entry_vkCmdEndRenderPass;
7213 }
7214 if (!strcmp(name, "vkCmdExecuteCommands"))
7215 {
7216 return (void*)entry_vkCmdExecuteCommands;
7217 }
7218#endif
7219#ifdef VK_VERSION_1_1
7220 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7221 {
7222 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7223 }
7224 if (!strcmp(name, "vkBindBufferMemory2"))
7225 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007226 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007227 }
7228 if (!strcmp(name, "vkBindImageMemory2"))
7229 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007230 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007231 }
7232 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7233 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007234 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007235 }
7236 if (!strcmp(name, "vkCmdSetDeviceMask"))
7237 {
7238 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7239 }
7240 if (!strcmp(name, "vkCmdDispatchBase"))
7241 {
7242 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7243 }
7244 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7245 {
7246 return nullptr;
7247 }
7248 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7249 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007250 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007251 }
7252 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7253 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007254 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007255 }
7256 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7257 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007258 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007259 }
7260 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7261 {
7262 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7263 }
7264 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7265 {
7266 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7267 }
7268 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7269 {
7270 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7271 }
7272 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7273 {
7274 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7275 }
7276 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7277 {
7278 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7279 }
7280 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7281 {
7282 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7283 }
7284 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7285 {
7286 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7287 }
7288 if (!strcmp(name, "vkTrimCommandPool"))
7289 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007290 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007291 }
7292 if (!strcmp(name, "vkGetDeviceQueue2"))
7293 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007294 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007295 }
7296 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7297 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007298 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007299 }
7300 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7301 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007302 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007303 }
7304 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7305 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007306 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007307 }
7308 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7309 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007310 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007311 }
7312 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7313 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007314 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007315 }
7316 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7317 {
7318 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7319 }
7320 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7321 {
7322 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7323 }
7324 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7325 {
7326 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7327 }
7328 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7329 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007330 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007331 }
7332#endif
7333#ifdef VK_KHR_surface
7334 if (!strcmp(name, "vkDestroySurfaceKHR"))
7335 {
7336 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7337 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7338 }
7339 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7340 {
7341 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7342 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7343 }
7344 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7345 {
7346 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7347 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7348 }
7349 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7350 {
7351 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7352 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7353 }
7354 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7355 {
7356 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7357 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7358 }
7359#endif
7360#ifdef VK_KHR_swapchain
7361 if (!strcmp(name, "vkCreateSwapchainKHR"))
7362 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007363 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007364 }
7365 if (!strcmp(name, "vkDestroySwapchainKHR"))
7366 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007367 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007368 }
7369 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7370 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007371 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007372 }
7373 if (!strcmp(name, "vkAcquireNextImageKHR"))
7374 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007375 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007376 }
7377 if (!strcmp(name, "vkQueuePresentKHR"))
7378 {
7379 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7380 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7381 }
7382 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7383 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007384 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007385 }
7386 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7387 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007388 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007389 }
7390 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7391 {
7392 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7393 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7394 }
7395 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7396 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007397 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007398 }
7399#endif
7400#ifdef VK_KHR_display
7401 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7402 {
7403 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7404 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7405 }
7406 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7407 {
7408 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7409 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7410 }
7411 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7412 {
7413 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7414 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7415 }
7416 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7417 {
7418 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7419 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7420 }
7421 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7422 {
7423 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7424 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7425 }
7426 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7427 {
7428 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7429 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7430 }
7431 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7432 {
7433 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7434 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7435 }
7436#endif
7437#ifdef VK_KHR_display_swapchain
7438 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7439 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007440 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007441 }
7442#endif
7443#ifdef VK_KHR_xlib_surface
7444 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7445 {
7446 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7447 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7448 }
7449 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7450 {
7451 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7452 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7453 }
7454#endif
7455#ifdef VK_KHR_xcb_surface
7456 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7457 {
7458 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7459 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7460 }
7461 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7462 {
7463 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7464 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7465 }
7466#endif
7467#ifdef VK_KHR_wayland_surface
7468 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7469 {
7470 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7471 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7472 }
7473 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7474 {
7475 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7476 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7477 }
7478#endif
7479#ifdef VK_KHR_mir_surface
7480 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7481 {
7482 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7483 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7484 }
7485 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7486 {
7487 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7488 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7489 }
7490#endif
7491#ifdef VK_KHR_android_surface
7492 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7493 {
7494 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7495 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7496 }
7497#endif
7498#ifdef VK_KHR_win32_surface
7499 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7500 {
7501 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7502 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7503 }
7504 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7505 {
7506 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7507 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7508 }
7509#endif
7510#ifdef VK_KHR_get_physical_device_properties2
7511 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7512 {
7513 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7514 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7515 }
7516 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7517 {
7518 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7519 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7520 }
7521 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7522 {
7523 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7524 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7525 }
7526 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7527 {
7528 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7529 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7530 }
7531 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7532 {
7533 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7534 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7535 }
7536 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7537 {
7538 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7539 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7540 }
7541 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7542 {
7543 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7544 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7545 }
7546#endif
7547#ifdef VK_KHR_device_group
7548 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7549 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007550 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007551 }
7552 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7553 {
7554 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7555 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7556 }
7557 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7558 {
7559 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7560 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7561 }
7562#endif
7563#ifdef VK_KHR_maintenance1
7564 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7565 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007566 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007567 }
7568#endif
7569#ifdef VK_KHR_device_group_creation
7570 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7571 {
7572 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7573 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7574 }
7575#endif
7576#ifdef VK_KHR_external_memory_capabilities
7577 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7578 {
7579 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7580 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7581 }
7582#endif
7583#ifdef VK_KHR_external_memory_win32
7584 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7585 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007586 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007587 }
7588 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7589 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007590 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007591 }
7592#endif
7593#ifdef VK_KHR_external_memory_fd
7594 if (!strcmp(name, "vkGetMemoryFdKHR"))
7595 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007596 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007597 }
7598 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7599 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007600 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007601 }
7602#endif
7603#ifdef VK_KHR_external_semaphore_capabilities
7604 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7605 {
7606 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7607 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7608 }
7609#endif
7610#ifdef VK_KHR_external_semaphore_win32
7611 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7612 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007613 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007614 }
7615 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7616 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007617 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007618 }
7619#endif
7620#ifdef VK_KHR_external_semaphore_fd
7621 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7622 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007623 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007624 }
7625 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7626 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007627 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007628 }
7629#endif
7630#ifdef VK_KHR_push_descriptor
7631 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7632 {
7633 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7634 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7635 }
7636 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7637 {
7638 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7639 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7640 }
7641#endif
7642#ifdef VK_KHR_descriptor_update_template
7643 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7644 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007645 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007646 }
7647 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7648 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007649 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007650 }
7651 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7652 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007653 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007654 }
7655#endif
7656#ifdef VK_KHR_create_renderpass2
7657 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7658 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007659 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007660 }
7661 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7662 {
7663 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7664 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7665 }
7666 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7667 {
7668 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7669 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7670 }
7671 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7672 {
7673 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7674 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7675 }
7676#endif
7677#ifdef VK_KHR_shared_presentable_image
7678 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7679 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007680 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007681 }
7682#endif
7683#ifdef VK_KHR_external_fence_capabilities
7684 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7685 {
7686 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7687 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7688 }
7689#endif
7690#ifdef VK_KHR_external_fence_win32
7691 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7692 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007693 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007694 }
7695 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7696 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007697 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007698 }
7699#endif
7700#ifdef VK_KHR_external_fence_fd
7701 if (!strcmp(name, "vkImportFenceFdKHR"))
7702 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007703 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007704 }
7705 if (!strcmp(name, "vkGetFenceFdKHR"))
7706 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007707 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007708 }
7709#endif
7710#ifdef VK_KHR_get_surface_capabilities2
7711 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7712 {
7713 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7714 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7715 }
7716 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7717 {
7718 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7719 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7720 }
7721#endif
7722#ifdef VK_KHR_get_display_properties2
7723 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7724 {
7725 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7726 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7727 }
7728 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7729 {
7730 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7731 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7732 }
7733 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7734 {
7735 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7736 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7737 }
7738 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7739 {
7740 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7741 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7742 }
7743#endif
7744#ifdef VK_KHR_get_memory_requirements2
7745 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7746 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007747 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007748 }
7749 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7750 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007751 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007752 }
7753 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7754 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007755 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007756 }
7757#endif
7758#ifdef VK_KHR_sampler_ycbcr_conversion
7759 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7760 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007761 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007762 }
7763 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7764 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007765 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007766 }
7767#endif
7768#ifdef VK_KHR_bind_memory2
7769 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7770 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007771 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007772 }
7773 if (!strcmp(name, "vkBindImageMemory2KHR"))
7774 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007775 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007776 }
7777#endif
7778#ifdef VK_KHR_maintenance3
7779 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7780 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007781 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007782 }
7783#endif
7784#ifdef VK_KHR_draw_indirect_count
7785 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7786 {
7787 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7788 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7789 }
7790 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7791 {
7792 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7793 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7794 }
7795#endif
7796#ifdef VK_ANDROID_native_buffer
7797 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7798 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007799 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007800 }
7801 if (!strcmp(name, "vkAcquireImageANDROID"))
7802 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007803 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007804 }
7805 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7806 {
7807 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7808 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7809 }
7810#endif
7811#ifdef VK_EXT_debug_report
7812 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7813 {
7814 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7815 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7816 }
7817 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7818 {
7819 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7820 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7821 }
7822 if (!strcmp(name, "vkDebugReportMessageEXT"))
7823 {
7824 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7825 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7826 }
7827#endif
7828#ifdef VK_EXT_debug_marker
7829 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7830 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007831 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007832 }
7833 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7834 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007835 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007836 }
7837 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7838 {
7839 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7840 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7841 }
7842 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7843 {
7844 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7845 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7846 }
7847 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
7848 {
7849 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7850 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
7851 }
7852#endif
7853#ifdef VK_AMD_draw_indirect_count
7854 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
7855 {
7856 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7857 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
7858 }
7859 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
7860 {
7861 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7862 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
7863 }
7864#endif
7865#ifdef VK_AMD_shader_info
7866 if (!strcmp(name, "vkGetShaderInfoAMD"))
7867 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007868 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007869 }
7870#endif
7871#ifdef VK_NV_external_memory_capabilities
7872 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
7873 {
7874 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
7875 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
7876 }
7877#endif
7878#ifdef VK_NV_external_memory_win32
7879 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
7880 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007881 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007882 }
7883#endif
7884#ifdef VK_NN_vi_surface
7885 if (!strcmp(name, "vkCreateViSurfaceNN"))
7886 {
7887 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
7888 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
7889 }
7890#endif
7891#ifdef VK_EXT_conditional_rendering
7892 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
7893 {
7894 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7895 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
7896 }
7897 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
7898 {
7899 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7900 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
7901 }
7902#endif
7903#ifdef VK_NVX_device_generated_commands
7904 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
7905 {
7906 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7907 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
7908 }
7909 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
7910 {
7911 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7912 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
7913 }
7914 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
7915 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007916 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007917 }
7918 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
7919 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007920 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007921 }
7922 if (!strcmp(name, "vkCreateObjectTableNVX"))
7923 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007924 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007925 }
7926 if (!strcmp(name, "vkDestroyObjectTableNVX"))
7927 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007928 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007929 }
7930 if (!strcmp(name, "vkRegisterObjectsNVX"))
7931 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007932 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007933 }
7934 if (!strcmp(name, "vkUnregisterObjectsNVX"))
7935 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007936 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007937 }
7938 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
7939 {
7940 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7941 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
7942 }
7943#endif
7944#ifdef VK_NV_clip_space_w_scaling
7945 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
7946 {
7947 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
7948 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
7949 }
7950#endif
7951#ifdef VK_EXT_direct_mode_display
7952 if (!strcmp(name, "vkReleaseDisplayEXT"))
7953 {
7954 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
7955 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
7956 }
7957#endif
7958#ifdef VK_EXT_acquire_xlib_display
7959 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
7960 {
7961 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
7962 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
7963 }
7964 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
7965 {
7966 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
7967 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
7968 }
7969#endif
7970#ifdef VK_EXT_display_surface_counter
7971 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
7972 {
7973 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
7974 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
7975 }
7976#endif
7977#ifdef VK_EXT_display_control
7978 if (!strcmp(name, "vkDisplayPowerControlEXT"))
7979 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007980 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007981 }
7982 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
7983 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007984 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007985 }
7986 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
7987 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007988 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007989 }
7990 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
7991 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007992 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007993 }
7994#endif
7995#ifdef VK_GOOGLE_display_timing
7996 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
7997 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007998 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007999 }
8000 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8001 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008002 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008003 }
8004#endif
8005#ifdef VK_EXT_discard_rectangles
8006 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8007 {
8008 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8009 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8010 }
8011#endif
8012#ifdef VK_EXT_hdr_metadata
8013 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8014 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008015 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008016 }
8017#endif
8018#ifdef VK_MVK_ios_surface
8019 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8020 {
8021 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8022 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8023 }
8024#endif
8025#ifdef VK_MVK_macos_surface
8026 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8027 {
8028 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8029 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8030 }
8031#endif
8032#ifdef VK_EXT_debug_utils
8033 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8034 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008035 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008036 }
8037 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8038 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008039 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008040 }
8041 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8042 {
8043 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8044 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8045 }
8046 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8047 {
8048 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8049 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8050 }
8051 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8052 {
8053 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8054 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8055 }
8056 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8057 {
8058 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8059 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8060 }
8061 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8062 {
8063 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8064 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8065 }
8066 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8067 {
8068 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8069 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8070 }
8071 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8072 {
8073 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8074 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8075 }
8076 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8077 {
8078 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8079 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8080 }
8081 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8082 {
8083 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8084 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8085 }
8086#endif
8087#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8088 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8089 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008090 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008091 }
8092 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8093 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008094 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008095 }
8096#endif
8097#ifdef VK_EXT_sample_locations
8098 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8099 {
8100 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8101 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8102 }
8103 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8104 {
8105 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8106 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8107 }
8108#endif
8109#ifdef VK_EXT_validation_cache
8110 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8111 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008112 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008113 }
8114 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8115 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008116 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008117 }
8118 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8119 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008120 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008121 }
8122 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8123 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008124 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008125 }
8126#endif
8127#ifdef VK_EXT_external_memory_host
8128 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8129 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008130 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008131 }
8132#endif
8133#ifdef VK_AMD_buffer_marker
8134 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8135 {
8136 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8137 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8138 }
8139#endif
8140#ifdef VK_NV_device_diagnostic_checkpoints
8141 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8142 {
8143 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8144 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8145 }
8146 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8147 {
8148 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8149 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8150 }
8151#endif
8152#ifdef VK_GOOGLE_address_space
8153 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8154 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008155 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008156 }
8157#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008158#ifdef VK_GOOGLE_color_buffer
8159 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8160 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008161 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008162 }
8163 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8164 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008165 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008166 }
8167#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008168#ifdef VK_GOOGLE_sized_descriptor_update_template
8169 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8170 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008171 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008172 }
8173#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008174#ifdef VK_GOOGLE_async_command_buffers
8175 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8176 {
8177 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8178 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8179 }
8180 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8181 {
8182 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8183 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8184 }
8185 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8186 {
8187 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8188 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8189 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008190 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8191 {
8192 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8193 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8194 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008195#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008196#ifdef VK_GOOGLE_create_resources_with_requirements
8197 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8198 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008199 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008200 }
8201 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8202 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008203 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008204 }
8205#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008206 return nullptr;
8207}
8208void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8209 auto resources = ResourceTracker::get();
8210 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8211#ifdef VK_VERSION_1_0
8212 if (!strcmp(name, "vkCreateInstance"))
8213 {
8214 return (void*)entry_vkCreateInstance;
8215 }
8216 if (!strcmp(name, "vkDestroyInstance"))
8217 {
8218 return (void*)entry_vkDestroyInstance;
8219 }
8220 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8221 {
8222 return (void*)entry_vkEnumeratePhysicalDevices;
8223 }
8224 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8225 {
8226 return (void*)entry_vkGetPhysicalDeviceFeatures;
8227 }
8228 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8229 {
8230 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8231 }
8232 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8233 {
8234 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8235 }
8236 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8237 {
8238 return (void*)entry_vkGetPhysicalDeviceProperties;
8239 }
8240 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8241 {
8242 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8243 }
8244 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8245 {
8246 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8247 }
8248 if (!strcmp(name, "vkGetInstanceProcAddr"))
8249 {
8250 return (void*)entry_vkGetInstanceProcAddr;
8251 }
8252 if (!strcmp(name, "vkGetDeviceProcAddr"))
8253 {
8254 return (void*)entry_vkGetDeviceProcAddr;
8255 }
8256 if (!strcmp(name, "vkCreateDevice"))
8257 {
8258 return (void*)entry_vkCreateDevice;
8259 }
8260 if (!strcmp(name, "vkDestroyDevice"))
8261 {
8262 return (void*)entry_vkDestroyDevice;
8263 }
8264 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8265 {
8266 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8267 }
8268 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8269 {
8270 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8271 }
8272 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8273 {
8274 return (void*)entry_vkEnumerateInstanceLayerProperties;
8275 }
8276 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8277 {
8278 return (void*)entry_vkEnumerateDeviceLayerProperties;
8279 }
8280 if (!strcmp(name, "vkGetDeviceQueue"))
8281 {
8282 return (void*)entry_vkGetDeviceQueue;
8283 }
8284 if (!strcmp(name, "vkQueueSubmit"))
8285 {
8286 return (void*)entry_vkQueueSubmit;
8287 }
8288 if (!strcmp(name, "vkQueueWaitIdle"))
8289 {
8290 return (void*)entry_vkQueueWaitIdle;
8291 }
8292 if (!strcmp(name, "vkDeviceWaitIdle"))
8293 {
8294 return (void*)entry_vkDeviceWaitIdle;
8295 }
8296 if (!strcmp(name, "vkAllocateMemory"))
8297 {
8298 return (void*)entry_vkAllocateMemory;
8299 }
8300 if (!strcmp(name, "vkFreeMemory"))
8301 {
8302 return (void*)entry_vkFreeMemory;
8303 }
8304 if (!strcmp(name, "vkMapMemory"))
8305 {
8306 return (void*)entry_vkMapMemory;
8307 }
8308 if (!strcmp(name, "vkUnmapMemory"))
8309 {
8310 return (void*)entry_vkUnmapMemory;
8311 }
8312 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8313 {
8314 return (void*)entry_vkFlushMappedMemoryRanges;
8315 }
8316 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8317 {
8318 return (void*)entry_vkInvalidateMappedMemoryRanges;
8319 }
8320 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8321 {
8322 return (void*)entry_vkGetDeviceMemoryCommitment;
8323 }
8324 if (!strcmp(name, "vkBindBufferMemory"))
8325 {
8326 return (void*)entry_vkBindBufferMemory;
8327 }
8328 if (!strcmp(name, "vkBindImageMemory"))
8329 {
8330 return (void*)entry_vkBindImageMemory;
8331 }
8332 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8333 {
8334 return (void*)entry_vkGetBufferMemoryRequirements;
8335 }
8336 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8337 {
8338 return (void*)entry_vkGetImageMemoryRequirements;
8339 }
8340 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8341 {
8342 return (void*)entry_vkGetImageSparseMemoryRequirements;
8343 }
8344 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8345 {
8346 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8347 }
8348 if (!strcmp(name, "vkQueueBindSparse"))
8349 {
8350 return (void*)entry_vkQueueBindSparse;
8351 }
8352 if (!strcmp(name, "vkCreateFence"))
8353 {
8354 return (void*)entry_vkCreateFence;
8355 }
8356 if (!strcmp(name, "vkDestroyFence"))
8357 {
8358 return (void*)entry_vkDestroyFence;
8359 }
8360 if (!strcmp(name, "vkResetFences"))
8361 {
8362 return (void*)entry_vkResetFences;
8363 }
8364 if (!strcmp(name, "vkGetFenceStatus"))
8365 {
8366 return (void*)entry_vkGetFenceStatus;
8367 }
8368 if (!strcmp(name, "vkWaitForFences"))
8369 {
8370 return (void*)entry_vkWaitForFences;
8371 }
8372 if (!strcmp(name, "vkCreateSemaphore"))
8373 {
8374 return (void*)entry_vkCreateSemaphore;
8375 }
8376 if (!strcmp(name, "vkDestroySemaphore"))
8377 {
8378 return (void*)entry_vkDestroySemaphore;
8379 }
8380 if (!strcmp(name, "vkCreateEvent"))
8381 {
8382 return (void*)entry_vkCreateEvent;
8383 }
8384 if (!strcmp(name, "vkDestroyEvent"))
8385 {
8386 return (void*)entry_vkDestroyEvent;
8387 }
8388 if (!strcmp(name, "vkGetEventStatus"))
8389 {
8390 return (void*)entry_vkGetEventStatus;
8391 }
8392 if (!strcmp(name, "vkSetEvent"))
8393 {
8394 return (void*)entry_vkSetEvent;
8395 }
8396 if (!strcmp(name, "vkResetEvent"))
8397 {
8398 return (void*)entry_vkResetEvent;
8399 }
8400 if (!strcmp(name, "vkCreateQueryPool"))
8401 {
8402 return (void*)entry_vkCreateQueryPool;
8403 }
8404 if (!strcmp(name, "vkDestroyQueryPool"))
8405 {
8406 return (void*)entry_vkDestroyQueryPool;
8407 }
8408 if (!strcmp(name, "vkGetQueryPoolResults"))
8409 {
8410 return (void*)entry_vkGetQueryPoolResults;
8411 }
8412 if (!strcmp(name, "vkCreateBuffer"))
8413 {
8414 return (void*)entry_vkCreateBuffer;
8415 }
8416 if (!strcmp(name, "vkDestroyBuffer"))
8417 {
8418 return (void*)entry_vkDestroyBuffer;
8419 }
8420 if (!strcmp(name, "vkCreateBufferView"))
8421 {
8422 return (void*)entry_vkCreateBufferView;
8423 }
8424 if (!strcmp(name, "vkDestroyBufferView"))
8425 {
8426 return (void*)entry_vkDestroyBufferView;
8427 }
8428 if (!strcmp(name, "vkCreateImage"))
8429 {
8430 return (void*)entry_vkCreateImage;
8431 }
8432 if (!strcmp(name, "vkDestroyImage"))
8433 {
8434 return (void*)entry_vkDestroyImage;
8435 }
8436 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8437 {
8438 return (void*)entry_vkGetImageSubresourceLayout;
8439 }
8440 if (!strcmp(name, "vkCreateImageView"))
8441 {
8442 return (void*)entry_vkCreateImageView;
8443 }
8444 if (!strcmp(name, "vkDestroyImageView"))
8445 {
8446 return (void*)entry_vkDestroyImageView;
8447 }
8448 if (!strcmp(name, "vkCreateShaderModule"))
8449 {
8450 return (void*)entry_vkCreateShaderModule;
8451 }
8452 if (!strcmp(name, "vkDestroyShaderModule"))
8453 {
8454 return (void*)entry_vkDestroyShaderModule;
8455 }
8456 if (!strcmp(name, "vkCreatePipelineCache"))
8457 {
8458 return (void*)entry_vkCreatePipelineCache;
8459 }
8460 if (!strcmp(name, "vkDestroyPipelineCache"))
8461 {
8462 return (void*)entry_vkDestroyPipelineCache;
8463 }
8464 if (!strcmp(name, "vkGetPipelineCacheData"))
8465 {
8466 return (void*)entry_vkGetPipelineCacheData;
8467 }
8468 if (!strcmp(name, "vkMergePipelineCaches"))
8469 {
8470 return (void*)entry_vkMergePipelineCaches;
8471 }
8472 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8473 {
8474 return (void*)entry_vkCreateGraphicsPipelines;
8475 }
8476 if (!strcmp(name, "vkCreateComputePipelines"))
8477 {
8478 return (void*)entry_vkCreateComputePipelines;
8479 }
8480 if (!strcmp(name, "vkDestroyPipeline"))
8481 {
8482 return (void*)entry_vkDestroyPipeline;
8483 }
8484 if (!strcmp(name, "vkCreatePipelineLayout"))
8485 {
8486 return (void*)entry_vkCreatePipelineLayout;
8487 }
8488 if (!strcmp(name, "vkDestroyPipelineLayout"))
8489 {
8490 return (void*)entry_vkDestroyPipelineLayout;
8491 }
8492 if (!strcmp(name, "vkCreateSampler"))
8493 {
8494 return (void*)entry_vkCreateSampler;
8495 }
8496 if (!strcmp(name, "vkDestroySampler"))
8497 {
8498 return (void*)entry_vkDestroySampler;
8499 }
8500 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8501 {
8502 return (void*)entry_vkCreateDescriptorSetLayout;
8503 }
8504 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8505 {
8506 return (void*)entry_vkDestroyDescriptorSetLayout;
8507 }
8508 if (!strcmp(name, "vkCreateDescriptorPool"))
8509 {
8510 return (void*)entry_vkCreateDescriptorPool;
8511 }
8512 if (!strcmp(name, "vkDestroyDescriptorPool"))
8513 {
8514 return (void*)entry_vkDestroyDescriptorPool;
8515 }
8516 if (!strcmp(name, "vkResetDescriptorPool"))
8517 {
8518 return (void*)entry_vkResetDescriptorPool;
8519 }
8520 if (!strcmp(name, "vkAllocateDescriptorSets"))
8521 {
8522 return (void*)entry_vkAllocateDescriptorSets;
8523 }
8524 if (!strcmp(name, "vkFreeDescriptorSets"))
8525 {
8526 return (void*)entry_vkFreeDescriptorSets;
8527 }
8528 if (!strcmp(name, "vkUpdateDescriptorSets"))
8529 {
8530 return (void*)entry_vkUpdateDescriptorSets;
8531 }
8532 if (!strcmp(name, "vkCreateFramebuffer"))
8533 {
8534 return (void*)entry_vkCreateFramebuffer;
8535 }
8536 if (!strcmp(name, "vkDestroyFramebuffer"))
8537 {
8538 return (void*)entry_vkDestroyFramebuffer;
8539 }
8540 if (!strcmp(name, "vkCreateRenderPass"))
8541 {
8542 return (void*)entry_vkCreateRenderPass;
8543 }
8544 if (!strcmp(name, "vkDestroyRenderPass"))
8545 {
8546 return (void*)entry_vkDestroyRenderPass;
8547 }
8548 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8549 {
8550 return (void*)entry_vkGetRenderAreaGranularity;
8551 }
8552 if (!strcmp(name, "vkCreateCommandPool"))
8553 {
8554 return (void*)entry_vkCreateCommandPool;
8555 }
8556 if (!strcmp(name, "vkDestroyCommandPool"))
8557 {
8558 return (void*)entry_vkDestroyCommandPool;
8559 }
8560 if (!strcmp(name, "vkResetCommandPool"))
8561 {
8562 return (void*)entry_vkResetCommandPool;
8563 }
8564 if (!strcmp(name, "vkAllocateCommandBuffers"))
8565 {
8566 return (void*)entry_vkAllocateCommandBuffers;
8567 }
8568 if (!strcmp(name, "vkFreeCommandBuffers"))
8569 {
8570 return (void*)entry_vkFreeCommandBuffers;
8571 }
8572 if (!strcmp(name, "vkBeginCommandBuffer"))
8573 {
8574 return (void*)entry_vkBeginCommandBuffer;
8575 }
8576 if (!strcmp(name, "vkEndCommandBuffer"))
8577 {
8578 return (void*)entry_vkEndCommandBuffer;
8579 }
8580 if (!strcmp(name, "vkResetCommandBuffer"))
8581 {
8582 return (void*)entry_vkResetCommandBuffer;
8583 }
8584 if (!strcmp(name, "vkCmdBindPipeline"))
8585 {
8586 return (void*)entry_vkCmdBindPipeline;
8587 }
8588 if (!strcmp(name, "vkCmdSetViewport"))
8589 {
8590 return (void*)entry_vkCmdSetViewport;
8591 }
8592 if (!strcmp(name, "vkCmdSetScissor"))
8593 {
8594 return (void*)entry_vkCmdSetScissor;
8595 }
8596 if (!strcmp(name, "vkCmdSetLineWidth"))
8597 {
8598 return (void*)entry_vkCmdSetLineWidth;
8599 }
8600 if (!strcmp(name, "vkCmdSetDepthBias"))
8601 {
8602 return (void*)entry_vkCmdSetDepthBias;
8603 }
8604 if (!strcmp(name, "vkCmdSetBlendConstants"))
8605 {
8606 return (void*)entry_vkCmdSetBlendConstants;
8607 }
8608 if (!strcmp(name, "vkCmdSetDepthBounds"))
8609 {
8610 return (void*)entry_vkCmdSetDepthBounds;
8611 }
8612 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8613 {
8614 return (void*)entry_vkCmdSetStencilCompareMask;
8615 }
8616 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8617 {
8618 return (void*)entry_vkCmdSetStencilWriteMask;
8619 }
8620 if (!strcmp(name, "vkCmdSetStencilReference"))
8621 {
8622 return (void*)entry_vkCmdSetStencilReference;
8623 }
8624 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8625 {
8626 return (void*)entry_vkCmdBindDescriptorSets;
8627 }
8628 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8629 {
8630 return (void*)entry_vkCmdBindIndexBuffer;
8631 }
8632 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8633 {
8634 return (void*)entry_vkCmdBindVertexBuffers;
8635 }
8636 if (!strcmp(name, "vkCmdDraw"))
8637 {
8638 return (void*)entry_vkCmdDraw;
8639 }
8640 if (!strcmp(name, "vkCmdDrawIndexed"))
8641 {
8642 return (void*)entry_vkCmdDrawIndexed;
8643 }
8644 if (!strcmp(name, "vkCmdDrawIndirect"))
8645 {
8646 return (void*)entry_vkCmdDrawIndirect;
8647 }
8648 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8649 {
8650 return (void*)entry_vkCmdDrawIndexedIndirect;
8651 }
8652 if (!strcmp(name, "vkCmdDispatch"))
8653 {
8654 return (void*)entry_vkCmdDispatch;
8655 }
8656 if (!strcmp(name, "vkCmdDispatchIndirect"))
8657 {
8658 return (void*)entry_vkCmdDispatchIndirect;
8659 }
8660 if (!strcmp(name, "vkCmdCopyBuffer"))
8661 {
8662 return (void*)entry_vkCmdCopyBuffer;
8663 }
8664 if (!strcmp(name, "vkCmdCopyImage"))
8665 {
8666 return (void*)entry_vkCmdCopyImage;
8667 }
8668 if (!strcmp(name, "vkCmdBlitImage"))
8669 {
8670 return (void*)entry_vkCmdBlitImage;
8671 }
8672 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8673 {
8674 return (void*)entry_vkCmdCopyBufferToImage;
8675 }
8676 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8677 {
8678 return (void*)entry_vkCmdCopyImageToBuffer;
8679 }
8680 if (!strcmp(name, "vkCmdUpdateBuffer"))
8681 {
8682 return (void*)entry_vkCmdUpdateBuffer;
8683 }
8684 if (!strcmp(name, "vkCmdFillBuffer"))
8685 {
8686 return (void*)entry_vkCmdFillBuffer;
8687 }
8688 if (!strcmp(name, "vkCmdClearColorImage"))
8689 {
8690 return (void*)entry_vkCmdClearColorImage;
8691 }
8692 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8693 {
8694 return (void*)entry_vkCmdClearDepthStencilImage;
8695 }
8696 if (!strcmp(name, "vkCmdClearAttachments"))
8697 {
8698 return (void*)entry_vkCmdClearAttachments;
8699 }
8700 if (!strcmp(name, "vkCmdResolveImage"))
8701 {
8702 return (void*)entry_vkCmdResolveImage;
8703 }
8704 if (!strcmp(name, "vkCmdSetEvent"))
8705 {
8706 return (void*)entry_vkCmdSetEvent;
8707 }
8708 if (!strcmp(name, "vkCmdResetEvent"))
8709 {
8710 return (void*)entry_vkCmdResetEvent;
8711 }
8712 if (!strcmp(name, "vkCmdWaitEvents"))
8713 {
8714 return (void*)entry_vkCmdWaitEvents;
8715 }
8716 if (!strcmp(name, "vkCmdPipelineBarrier"))
8717 {
8718 return (void*)entry_vkCmdPipelineBarrier;
8719 }
8720 if (!strcmp(name, "vkCmdBeginQuery"))
8721 {
8722 return (void*)entry_vkCmdBeginQuery;
8723 }
8724 if (!strcmp(name, "vkCmdEndQuery"))
8725 {
8726 return (void*)entry_vkCmdEndQuery;
8727 }
8728 if (!strcmp(name, "vkCmdResetQueryPool"))
8729 {
8730 return (void*)entry_vkCmdResetQueryPool;
8731 }
8732 if (!strcmp(name, "vkCmdWriteTimestamp"))
8733 {
8734 return (void*)entry_vkCmdWriteTimestamp;
8735 }
8736 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8737 {
8738 return (void*)entry_vkCmdCopyQueryPoolResults;
8739 }
8740 if (!strcmp(name, "vkCmdPushConstants"))
8741 {
8742 return (void*)entry_vkCmdPushConstants;
8743 }
8744 if (!strcmp(name, "vkCmdBeginRenderPass"))
8745 {
8746 return (void*)entry_vkCmdBeginRenderPass;
8747 }
8748 if (!strcmp(name, "vkCmdNextSubpass"))
8749 {
8750 return (void*)entry_vkCmdNextSubpass;
8751 }
8752 if (!strcmp(name, "vkCmdEndRenderPass"))
8753 {
8754 return (void*)entry_vkCmdEndRenderPass;
8755 }
8756 if (!strcmp(name, "vkCmdExecuteCommands"))
8757 {
8758 return (void*)entry_vkCmdExecuteCommands;
8759 }
8760#endif
8761#ifdef VK_VERSION_1_1
8762 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8763 {
8764 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8765 }
8766 if (!strcmp(name, "vkBindBufferMemory2"))
8767 {
8768 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8769 }
8770 if (!strcmp(name, "vkBindImageMemory2"))
8771 {
8772 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8773 }
8774 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8775 {
8776 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8777 }
8778 if (!strcmp(name, "vkCmdSetDeviceMask"))
8779 {
8780 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8781 }
8782 if (!strcmp(name, "vkCmdDispatchBase"))
8783 {
8784 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8785 }
8786 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8787 {
8788 return nullptr;
8789 }
8790 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8791 {
8792 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8793 }
8794 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8795 {
8796 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8797 }
8798 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8799 {
8800 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8801 }
8802 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8803 {
8804 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8805 }
8806 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8807 {
8808 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8809 }
8810 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8811 {
8812 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8813 }
8814 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8815 {
8816 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
8817 }
8818 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8819 {
8820 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
8821 }
8822 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8823 {
8824 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
8825 }
8826 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8827 {
8828 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
8829 }
8830 if (!strcmp(name, "vkTrimCommandPool"))
8831 {
8832 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
8833 }
8834 if (!strcmp(name, "vkGetDeviceQueue2"))
8835 {
8836 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
8837 }
8838 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8839 {
8840 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
8841 }
8842 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8843 {
8844 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
8845 }
8846 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8847 {
8848 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
8849 }
8850 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8851 {
8852 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
8853 }
8854 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8855 {
8856 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
8857 }
8858 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8859 {
8860 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
8861 }
8862 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8863 {
8864 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
8865 }
8866 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8867 {
8868 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
8869 }
8870 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8871 {
8872 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
8873 }
8874#endif
8875#ifdef VK_KHR_surface
8876 if (!strcmp(name, "vkDestroySurfaceKHR"))
8877 {
8878 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8879 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
8880 }
8881 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8882 {
8883 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8884 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
8885 }
8886 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8887 {
8888 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8889 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
8890 }
8891 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8892 {
8893 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8894 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
8895 }
8896 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8897 {
8898 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8899 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
8900 }
8901#endif
8902#ifdef VK_KHR_swapchain
8903 if (!strcmp(name, "vkCreateSwapchainKHR"))
8904 {
8905 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8906 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
8907 }
8908 if (!strcmp(name, "vkDestroySwapchainKHR"))
8909 {
8910 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8911 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
8912 }
8913 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8914 {
8915 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8916 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
8917 }
8918 if (!strcmp(name, "vkAcquireNextImageKHR"))
8919 {
8920 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8921 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
8922 }
8923 if (!strcmp(name, "vkQueuePresentKHR"))
8924 {
8925 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8926 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
8927 }
8928 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8929 {
8930 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8931 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
8932 }
8933 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8934 {
8935 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8936 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
8937 }
8938 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8939 {
8940 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8941 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
8942 }
8943 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8944 {
8945 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8946 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
8947 }
8948#endif
8949#ifdef VK_KHR_display
8950 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8951 {
8952 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8953 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
8954 }
8955 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
8956 {
8957 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8958 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
8959 }
8960 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
8961 {
8962 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8963 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
8964 }
8965 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
8966 {
8967 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8968 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
8969 }
8970 if (!strcmp(name, "vkCreateDisplayModeKHR"))
8971 {
8972 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8973 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
8974 }
8975 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
8976 {
8977 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8978 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
8979 }
8980 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
8981 {
8982 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8983 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
8984 }
8985#endif
8986#ifdef VK_KHR_display_swapchain
8987 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
8988 {
8989 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
8990 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
8991 }
8992#endif
8993#ifdef VK_KHR_xlib_surface
8994 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
8995 {
8996 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
8997 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
8998 }
8999 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9000 {
9001 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9002 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9003 }
9004#endif
9005#ifdef VK_KHR_xcb_surface
9006 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9007 {
9008 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9009 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9010 }
9011 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9012 {
9013 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9014 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9015 }
9016#endif
9017#ifdef VK_KHR_wayland_surface
9018 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9019 {
9020 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9021 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9022 }
9023 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9024 {
9025 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9026 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9027 }
9028#endif
9029#ifdef VK_KHR_mir_surface
9030 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9031 {
9032 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9033 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9034 }
9035 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9036 {
9037 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9038 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9039 }
9040#endif
9041#ifdef VK_KHR_android_surface
9042 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9043 {
9044 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9045 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9046 }
9047#endif
9048#ifdef VK_KHR_win32_surface
9049 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9050 {
9051 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9052 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9053 }
9054 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9055 {
9056 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9057 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9058 }
9059#endif
9060#ifdef VK_KHR_get_physical_device_properties2
9061 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9062 {
9063 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9064 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9065 }
9066 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9067 {
9068 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9069 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9070 }
9071 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9072 {
9073 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9074 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9075 }
9076 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9077 {
9078 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9079 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9080 }
9081 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9082 {
9083 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9084 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9085 }
9086 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9087 {
9088 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9089 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9090 }
9091 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9092 {
9093 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9094 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9095 }
9096#endif
9097#ifdef VK_KHR_device_group
9098 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9099 {
9100 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9101 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9102 }
9103 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9104 {
9105 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9106 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9107 }
9108 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9109 {
9110 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9111 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9112 }
9113#endif
9114#ifdef VK_KHR_maintenance1
9115 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9116 {
9117 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9118 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9119 }
9120#endif
9121#ifdef VK_KHR_device_group_creation
9122 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9123 {
9124 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9125 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9126 }
9127#endif
9128#ifdef VK_KHR_external_memory_capabilities
9129 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9130 {
9131 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9132 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9133 }
9134#endif
9135#ifdef VK_KHR_external_memory_win32
9136 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9137 {
9138 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9139 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9140 }
9141 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9142 {
9143 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9144 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9145 }
9146#endif
9147#ifdef VK_KHR_external_memory_fd
9148 if (!strcmp(name, "vkGetMemoryFdKHR"))
9149 {
9150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9151 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9152 }
9153 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9154 {
9155 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9156 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9157 }
9158#endif
9159#ifdef VK_KHR_external_semaphore_capabilities
9160 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9161 {
9162 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9163 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9164 }
9165#endif
9166#ifdef VK_KHR_external_semaphore_win32
9167 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9168 {
9169 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9170 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9171 }
9172 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9173 {
9174 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9175 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9176 }
9177#endif
9178#ifdef VK_KHR_external_semaphore_fd
9179 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9180 {
9181 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9182 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9183 }
9184 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9185 {
9186 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9187 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9188 }
9189#endif
9190#ifdef VK_KHR_push_descriptor
9191 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9192 {
9193 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9194 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9195 }
9196 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9197 {
9198 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9199 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9200 }
9201#endif
9202#ifdef VK_KHR_descriptor_update_template
9203 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9204 {
9205 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9206 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9207 }
9208 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9209 {
9210 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9211 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9212 }
9213 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9214 {
9215 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9216 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9217 }
9218#endif
9219#ifdef VK_KHR_create_renderpass2
9220 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9221 {
9222 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9223 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9224 }
9225 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9226 {
9227 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9228 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9229 }
9230 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9231 {
9232 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9233 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9234 }
9235 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9236 {
9237 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9238 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9239 }
9240#endif
9241#ifdef VK_KHR_shared_presentable_image
9242 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9243 {
9244 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9245 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9246 }
9247#endif
9248#ifdef VK_KHR_external_fence_capabilities
9249 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9250 {
9251 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9252 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9253 }
9254#endif
9255#ifdef VK_KHR_external_fence_win32
9256 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9257 {
9258 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9259 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9260 }
9261 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9262 {
9263 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9264 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9265 }
9266#endif
9267#ifdef VK_KHR_external_fence_fd
9268 if (!strcmp(name, "vkImportFenceFdKHR"))
9269 {
9270 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9271 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9272 }
9273 if (!strcmp(name, "vkGetFenceFdKHR"))
9274 {
9275 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9276 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9277 }
9278#endif
9279#ifdef VK_KHR_get_surface_capabilities2
9280 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9281 {
9282 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9283 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9284 }
9285 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9286 {
9287 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9288 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9289 }
9290#endif
9291#ifdef VK_KHR_get_display_properties2
9292 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9293 {
9294 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9295 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9296 }
9297 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9298 {
9299 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9300 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9301 }
9302 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9303 {
9304 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9305 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9306 }
9307 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9308 {
9309 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9310 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9311 }
9312#endif
9313#ifdef VK_KHR_get_memory_requirements2
9314 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9315 {
9316 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9317 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9318 }
9319 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9320 {
9321 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9322 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9323 }
9324 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9325 {
9326 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9327 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9328 }
9329#endif
9330#ifdef VK_KHR_sampler_ycbcr_conversion
9331 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9332 {
9333 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9334 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9335 }
9336 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9337 {
9338 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9339 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9340 }
9341#endif
9342#ifdef VK_KHR_bind_memory2
9343 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9344 {
9345 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9346 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9347 }
9348 if (!strcmp(name, "vkBindImageMemory2KHR"))
9349 {
9350 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9351 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9352 }
9353#endif
9354#ifdef VK_KHR_maintenance3
9355 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9356 {
9357 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9358 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9359 }
9360#endif
9361#ifdef VK_KHR_draw_indirect_count
9362 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9363 {
9364 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9365 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9366 }
9367 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9368 {
9369 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9370 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9371 }
9372#endif
9373#ifdef VK_ANDROID_native_buffer
9374 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9375 {
9376 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9377 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9378 }
9379 if (!strcmp(name, "vkAcquireImageANDROID"))
9380 {
9381 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9382 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9383 }
9384 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9385 {
9386 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9387 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9388 }
9389#endif
9390#ifdef VK_EXT_debug_report
9391 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9392 {
9393 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9394 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9395 }
9396 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9397 {
9398 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9399 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9400 }
9401 if (!strcmp(name, "vkDebugReportMessageEXT"))
9402 {
9403 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9404 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9405 }
9406#endif
9407#ifdef VK_EXT_debug_marker
9408 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9409 {
9410 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9411 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9412 }
9413 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9414 {
9415 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9416 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9417 }
9418 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9419 {
9420 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9421 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9422 }
9423 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9424 {
9425 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9426 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9427 }
9428 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9429 {
9430 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9431 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9432 }
9433#endif
9434#ifdef VK_AMD_draw_indirect_count
9435 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9436 {
9437 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9438 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9439 }
9440 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9441 {
9442 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9443 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9444 }
9445#endif
9446#ifdef VK_AMD_shader_info
9447 if (!strcmp(name, "vkGetShaderInfoAMD"))
9448 {
9449 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9450 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9451 }
9452#endif
9453#ifdef VK_NV_external_memory_capabilities
9454 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9455 {
9456 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9457 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9458 }
9459#endif
9460#ifdef VK_NV_external_memory_win32
9461 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9462 {
9463 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9464 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9465 }
9466#endif
9467#ifdef VK_NN_vi_surface
9468 if (!strcmp(name, "vkCreateViSurfaceNN"))
9469 {
9470 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9471 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9472 }
9473#endif
9474#ifdef VK_EXT_conditional_rendering
9475 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9476 {
9477 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9478 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9479 }
9480 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9481 {
9482 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9483 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9484 }
9485#endif
9486#ifdef VK_NVX_device_generated_commands
9487 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9488 {
9489 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9490 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9491 }
9492 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9493 {
9494 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9495 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9496 }
9497 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9498 {
9499 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9500 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9501 }
9502 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9503 {
9504 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9505 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9506 }
9507 if (!strcmp(name, "vkCreateObjectTableNVX"))
9508 {
9509 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9510 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9511 }
9512 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9513 {
9514 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9515 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9516 }
9517 if (!strcmp(name, "vkRegisterObjectsNVX"))
9518 {
9519 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9520 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9521 }
9522 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9523 {
9524 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9525 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9526 }
9527 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9528 {
9529 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9530 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9531 }
9532#endif
9533#ifdef VK_NV_clip_space_w_scaling
9534 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9535 {
9536 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9537 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9538 }
9539#endif
9540#ifdef VK_EXT_direct_mode_display
9541 if (!strcmp(name, "vkReleaseDisplayEXT"))
9542 {
9543 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9544 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9545 }
9546#endif
9547#ifdef VK_EXT_acquire_xlib_display
9548 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9549 {
9550 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9551 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9552 }
9553 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9554 {
9555 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9556 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9557 }
9558#endif
9559#ifdef VK_EXT_display_surface_counter
9560 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9561 {
9562 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9563 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9564 }
9565#endif
9566#ifdef VK_EXT_display_control
9567 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9568 {
9569 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9570 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9571 }
9572 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9573 {
9574 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9575 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9576 }
9577 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9578 {
9579 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9580 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9581 }
9582 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9583 {
9584 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9585 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9586 }
9587#endif
9588#ifdef VK_GOOGLE_display_timing
9589 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9590 {
9591 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9592 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9593 }
9594 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9595 {
9596 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9597 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9598 }
9599#endif
9600#ifdef VK_EXT_discard_rectangles
9601 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9602 {
9603 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9604 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9605 }
9606#endif
9607#ifdef VK_EXT_hdr_metadata
9608 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9609 {
9610 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9611 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9612 }
9613#endif
9614#ifdef VK_MVK_ios_surface
9615 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9616 {
9617 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9618 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9619 }
9620#endif
9621#ifdef VK_MVK_macos_surface
9622 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9623 {
9624 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9625 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9626 }
9627#endif
9628#ifdef VK_EXT_debug_utils
9629 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9630 {
9631 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9632 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9633 }
9634 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9635 {
9636 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9637 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9638 }
9639 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9640 {
9641 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9642 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9643 }
9644 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9645 {
9646 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9647 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9648 }
9649 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9650 {
9651 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9652 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9653 }
9654 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9655 {
9656 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9657 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9658 }
9659 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9660 {
9661 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9662 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9663 }
9664 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9665 {
9666 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9667 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9668 }
9669 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9670 {
9671 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9672 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9673 }
9674 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9675 {
9676 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9677 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9678 }
9679 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9680 {
9681 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9682 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9683 }
9684#endif
9685#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9686 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9687 {
9688 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9689 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9690 }
9691 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9692 {
9693 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9694 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9695 }
9696#endif
9697#ifdef VK_EXT_sample_locations
9698 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9699 {
9700 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9701 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9702 }
9703 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9704 {
9705 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9706 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9707 }
9708#endif
9709#ifdef VK_EXT_validation_cache
9710 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9711 {
9712 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9713 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9714 }
9715 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9716 {
9717 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9718 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9719 }
9720 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9721 {
9722 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9723 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9724 }
9725 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9726 {
9727 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9728 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9729 }
9730#endif
9731#ifdef VK_EXT_external_memory_host
9732 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9733 {
9734 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9735 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9736 }
9737#endif
9738#ifdef VK_AMD_buffer_marker
9739 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9740 {
9741 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9742 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9743 }
9744#endif
9745#ifdef VK_NV_device_diagnostic_checkpoints
9746 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9747 {
9748 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9749 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9750 }
9751 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9752 {
9753 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9754 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9755 }
9756#endif
9757#ifdef VK_GOOGLE_address_space
9758 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9759 {
9760 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9761 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009762 }
9763#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009764#ifdef VK_GOOGLE_color_buffer
9765 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9766 {
9767 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9768 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9769 }
9770 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9771 {
9772 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9773 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9774 }
9775#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009776#ifdef VK_GOOGLE_sized_descriptor_update_template
9777 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9778 {
9779 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9780 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9781 }
9782#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009783#ifdef VK_GOOGLE_async_command_buffers
9784 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9785 {
9786 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9787 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9788 }
9789 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9790 {
9791 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9792 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9793 }
9794 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9795 {
9796 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9797 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9798 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009799 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9800 {
9801 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9802 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9803 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009804#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009805#ifdef VK_GOOGLE_create_resources_with_requirements
9806 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9807 {
9808 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9809 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9810 }
9811 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9812 {
9813 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9814 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
9815 }
9816#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009817 return nullptr;
9818}
9819
9820} // namespace goldfish_vk