blob: 80f586ffc7d308c2758b68c87f47542f6150b9c0 [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 Yang4c542412020-02-04 18:18:32 -08005219#ifdef VK_GOOGLE_address_space_info
5220static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5221 VkDevice device,
5222 VkDeviceMemory memory,
5223 uint64_t* pAddress,
5224 uint64_t* pSize,
5225 uint64_t* pHostmemId)
5226{
5227 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5228 auto vkEnc = HostConnection::get()->vkEncoder();
5229 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5230 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5231 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5232}
5233static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5234 VkDevice device,
5235 VkDeviceMemory memory,
5236 uint64_t* pAddress,
5237 uint64_t* pSize,
5238 uint64_t* pHostmemId)
5239{
5240 auto resources = ResourceTracker::get();
5241 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5242 {
5243 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5244 }
5245 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5246 auto vkEnc = HostConnection::get()->vkEncoder();
5247 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5248 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5249 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5250}
5251#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005252void* goldfish_vulkan_get_proc_address(const char* name){
5253#ifdef VK_VERSION_1_0
5254 if (!strcmp(name, "vkCreateInstance"))
5255 {
5256 return (void*)entry_vkCreateInstance;
5257 }
5258 if (!strcmp(name, "vkDestroyInstance"))
5259 {
5260 return (void*)entry_vkDestroyInstance;
5261 }
5262 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5263 {
5264 return (void*)entry_vkEnumeratePhysicalDevices;
5265 }
5266 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5267 {
5268 return (void*)entry_vkGetPhysicalDeviceFeatures;
5269 }
5270 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5271 {
5272 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5273 }
5274 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5275 {
5276 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5277 }
5278 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5279 {
5280 return (void*)entry_vkGetPhysicalDeviceProperties;
5281 }
5282 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5283 {
5284 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5285 }
5286 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5287 {
5288 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5289 }
5290 if (!strcmp(name, "vkGetInstanceProcAddr"))
5291 {
5292 return (void*)entry_vkGetInstanceProcAddr;
5293 }
5294 if (!strcmp(name, "vkGetDeviceProcAddr"))
5295 {
5296 return (void*)entry_vkGetDeviceProcAddr;
5297 }
5298 if (!strcmp(name, "vkCreateDevice"))
5299 {
5300 return (void*)entry_vkCreateDevice;
5301 }
5302 if (!strcmp(name, "vkDestroyDevice"))
5303 {
5304 return (void*)entry_vkDestroyDevice;
5305 }
5306 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5307 {
5308 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5309 }
5310 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5311 {
5312 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5313 }
5314 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5315 {
5316 return (void*)entry_vkEnumerateInstanceLayerProperties;
5317 }
5318 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5319 {
5320 return (void*)entry_vkEnumerateDeviceLayerProperties;
5321 }
5322 if (!strcmp(name, "vkGetDeviceQueue"))
5323 {
5324 return (void*)entry_vkGetDeviceQueue;
5325 }
5326 if (!strcmp(name, "vkQueueSubmit"))
5327 {
5328 return (void*)entry_vkQueueSubmit;
5329 }
5330 if (!strcmp(name, "vkQueueWaitIdle"))
5331 {
5332 return (void*)entry_vkQueueWaitIdle;
5333 }
5334 if (!strcmp(name, "vkDeviceWaitIdle"))
5335 {
5336 return (void*)entry_vkDeviceWaitIdle;
5337 }
5338 if (!strcmp(name, "vkAllocateMemory"))
5339 {
5340 return (void*)entry_vkAllocateMemory;
5341 }
5342 if (!strcmp(name, "vkFreeMemory"))
5343 {
5344 return (void*)entry_vkFreeMemory;
5345 }
5346 if (!strcmp(name, "vkMapMemory"))
5347 {
5348 return (void*)entry_vkMapMemory;
5349 }
5350 if (!strcmp(name, "vkUnmapMemory"))
5351 {
5352 return (void*)entry_vkUnmapMemory;
5353 }
5354 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5355 {
5356 return (void*)entry_vkFlushMappedMemoryRanges;
5357 }
5358 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5359 {
5360 return (void*)entry_vkInvalidateMappedMemoryRanges;
5361 }
5362 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5363 {
5364 return (void*)entry_vkGetDeviceMemoryCommitment;
5365 }
5366 if (!strcmp(name, "vkBindBufferMemory"))
5367 {
5368 return (void*)entry_vkBindBufferMemory;
5369 }
5370 if (!strcmp(name, "vkBindImageMemory"))
5371 {
5372 return (void*)entry_vkBindImageMemory;
5373 }
5374 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5375 {
5376 return (void*)entry_vkGetBufferMemoryRequirements;
5377 }
5378 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5379 {
5380 return (void*)entry_vkGetImageMemoryRequirements;
5381 }
5382 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5383 {
5384 return (void*)entry_vkGetImageSparseMemoryRequirements;
5385 }
5386 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5387 {
5388 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5389 }
5390 if (!strcmp(name, "vkQueueBindSparse"))
5391 {
5392 return (void*)entry_vkQueueBindSparse;
5393 }
5394 if (!strcmp(name, "vkCreateFence"))
5395 {
5396 return (void*)entry_vkCreateFence;
5397 }
5398 if (!strcmp(name, "vkDestroyFence"))
5399 {
5400 return (void*)entry_vkDestroyFence;
5401 }
5402 if (!strcmp(name, "vkResetFences"))
5403 {
5404 return (void*)entry_vkResetFences;
5405 }
5406 if (!strcmp(name, "vkGetFenceStatus"))
5407 {
5408 return (void*)entry_vkGetFenceStatus;
5409 }
5410 if (!strcmp(name, "vkWaitForFences"))
5411 {
5412 return (void*)entry_vkWaitForFences;
5413 }
5414 if (!strcmp(name, "vkCreateSemaphore"))
5415 {
5416 return (void*)entry_vkCreateSemaphore;
5417 }
5418 if (!strcmp(name, "vkDestroySemaphore"))
5419 {
5420 return (void*)entry_vkDestroySemaphore;
5421 }
5422 if (!strcmp(name, "vkCreateEvent"))
5423 {
5424 return (void*)entry_vkCreateEvent;
5425 }
5426 if (!strcmp(name, "vkDestroyEvent"))
5427 {
5428 return (void*)entry_vkDestroyEvent;
5429 }
5430 if (!strcmp(name, "vkGetEventStatus"))
5431 {
5432 return (void*)entry_vkGetEventStatus;
5433 }
5434 if (!strcmp(name, "vkSetEvent"))
5435 {
5436 return (void*)entry_vkSetEvent;
5437 }
5438 if (!strcmp(name, "vkResetEvent"))
5439 {
5440 return (void*)entry_vkResetEvent;
5441 }
5442 if (!strcmp(name, "vkCreateQueryPool"))
5443 {
5444 return (void*)entry_vkCreateQueryPool;
5445 }
5446 if (!strcmp(name, "vkDestroyQueryPool"))
5447 {
5448 return (void*)entry_vkDestroyQueryPool;
5449 }
5450 if (!strcmp(name, "vkGetQueryPoolResults"))
5451 {
5452 return (void*)entry_vkGetQueryPoolResults;
5453 }
5454 if (!strcmp(name, "vkCreateBuffer"))
5455 {
5456 return (void*)entry_vkCreateBuffer;
5457 }
5458 if (!strcmp(name, "vkDestroyBuffer"))
5459 {
5460 return (void*)entry_vkDestroyBuffer;
5461 }
5462 if (!strcmp(name, "vkCreateBufferView"))
5463 {
5464 return (void*)entry_vkCreateBufferView;
5465 }
5466 if (!strcmp(name, "vkDestroyBufferView"))
5467 {
5468 return (void*)entry_vkDestroyBufferView;
5469 }
5470 if (!strcmp(name, "vkCreateImage"))
5471 {
5472 return (void*)entry_vkCreateImage;
5473 }
5474 if (!strcmp(name, "vkDestroyImage"))
5475 {
5476 return (void*)entry_vkDestroyImage;
5477 }
5478 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5479 {
5480 return (void*)entry_vkGetImageSubresourceLayout;
5481 }
5482 if (!strcmp(name, "vkCreateImageView"))
5483 {
5484 return (void*)entry_vkCreateImageView;
5485 }
5486 if (!strcmp(name, "vkDestroyImageView"))
5487 {
5488 return (void*)entry_vkDestroyImageView;
5489 }
5490 if (!strcmp(name, "vkCreateShaderModule"))
5491 {
5492 return (void*)entry_vkCreateShaderModule;
5493 }
5494 if (!strcmp(name, "vkDestroyShaderModule"))
5495 {
5496 return (void*)entry_vkDestroyShaderModule;
5497 }
5498 if (!strcmp(name, "vkCreatePipelineCache"))
5499 {
5500 return (void*)entry_vkCreatePipelineCache;
5501 }
5502 if (!strcmp(name, "vkDestroyPipelineCache"))
5503 {
5504 return (void*)entry_vkDestroyPipelineCache;
5505 }
5506 if (!strcmp(name, "vkGetPipelineCacheData"))
5507 {
5508 return (void*)entry_vkGetPipelineCacheData;
5509 }
5510 if (!strcmp(name, "vkMergePipelineCaches"))
5511 {
5512 return (void*)entry_vkMergePipelineCaches;
5513 }
5514 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5515 {
5516 return (void*)entry_vkCreateGraphicsPipelines;
5517 }
5518 if (!strcmp(name, "vkCreateComputePipelines"))
5519 {
5520 return (void*)entry_vkCreateComputePipelines;
5521 }
5522 if (!strcmp(name, "vkDestroyPipeline"))
5523 {
5524 return (void*)entry_vkDestroyPipeline;
5525 }
5526 if (!strcmp(name, "vkCreatePipelineLayout"))
5527 {
5528 return (void*)entry_vkCreatePipelineLayout;
5529 }
5530 if (!strcmp(name, "vkDestroyPipelineLayout"))
5531 {
5532 return (void*)entry_vkDestroyPipelineLayout;
5533 }
5534 if (!strcmp(name, "vkCreateSampler"))
5535 {
5536 return (void*)entry_vkCreateSampler;
5537 }
5538 if (!strcmp(name, "vkDestroySampler"))
5539 {
5540 return (void*)entry_vkDestroySampler;
5541 }
5542 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5543 {
5544 return (void*)entry_vkCreateDescriptorSetLayout;
5545 }
5546 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5547 {
5548 return (void*)entry_vkDestroyDescriptorSetLayout;
5549 }
5550 if (!strcmp(name, "vkCreateDescriptorPool"))
5551 {
5552 return (void*)entry_vkCreateDescriptorPool;
5553 }
5554 if (!strcmp(name, "vkDestroyDescriptorPool"))
5555 {
5556 return (void*)entry_vkDestroyDescriptorPool;
5557 }
5558 if (!strcmp(name, "vkResetDescriptorPool"))
5559 {
5560 return (void*)entry_vkResetDescriptorPool;
5561 }
5562 if (!strcmp(name, "vkAllocateDescriptorSets"))
5563 {
5564 return (void*)entry_vkAllocateDescriptorSets;
5565 }
5566 if (!strcmp(name, "vkFreeDescriptorSets"))
5567 {
5568 return (void*)entry_vkFreeDescriptorSets;
5569 }
5570 if (!strcmp(name, "vkUpdateDescriptorSets"))
5571 {
5572 return (void*)entry_vkUpdateDescriptorSets;
5573 }
5574 if (!strcmp(name, "vkCreateFramebuffer"))
5575 {
5576 return (void*)entry_vkCreateFramebuffer;
5577 }
5578 if (!strcmp(name, "vkDestroyFramebuffer"))
5579 {
5580 return (void*)entry_vkDestroyFramebuffer;
5581 }
5582 if (!strcmp(name, "vkCreateRenderPass"))
5583 {
5584 return (void*)entry_vkCreateRenderPass;
5585 }
5586 if (!strcmp(name, "vkDestroyRenderPass"))
5587 {
5588 return (void*)entry_vkDestroyRenderPass;
5589 }
5590 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5591 {
5592 return (void*)entry_vkGetRenderAreaGranularity;
5593 }
5594 if (!strcmp(name, "vkCreateCommandPool"))
5595 {
5596 return (void*)entry_vkCreateCommandPool;
5597 }
5598 if (!strcmp(name, "vkDestroyCommandPool"))
5599 {
5600 return (void*)entry_vkDestroyCommandPool;
5601 }
5602 if (!strcmp(name, "vkResetCommandPool"))
5603 {
5604 return (void*)entry_vkResetCommandPool;
5605 }
5606 if (!strcmp(name, "vkAllocateCommandBuffers"))
5607 {
5608 return (void*)entry_vkAllocateCommandBuffers;
5609 }
5610 if (!strcmp(name, "vkFreeCommandBuffers"))
5611 {
5612 return (void*)entry_vkFreeCommandBuffers;
5613 }
5614 if (!strcmp(name, "vkBeginCommandBuffer"))
5615 {
5616 return (void*)entry_vkBeginCommandBuffer;
5617 }
5618 if (!strcmp(name, "vkEndCommandBuffer"))
5619 {
5620 return (void*)entry_vkEndCommandBuffer;
5621 }
5622 if (!strcmp(name, "vkResetCommandBuffer"))
5623 {
5624 return (void*)entry_vkResetCommandBuffer;
5625 }
5626 if (!strcmp(name, "vkCmdBindPipeline"))
5627 {
5628 return (void*)entry_vkCmdBindPipeline;
5629 }
5630 if (!strcmp(name, "vkCmdSetViewport"))
5631 {
5632 return (void*)entry_vkCmdSetViewport;
5633 }
5634 if (!strcmp(name, "vkCmdSetScissor"))
5635 {
5636 return (void*)entry_vkCmdSetScissor;
5637 }
5638 if (!strcmp(name, "vkCmdSetLineWidth"))
5639 {
5640 return (void*)entry_vkCmdSetLineWidth;
5641 }
5642 if (!strcmp(name, "vkCmdSetDepthBias"))
5643 {
5644 return (void*)entry_vkCmdSetDepthBias;
5645 }
5646 if (!strcmp(name, "vkCmdSetBlendConstants"))
5647 {
5648 return (void*)entry_vkCmdSetBlendConstants;
5649 }
5650 if (!strcmp(name, "vkCmdSetDepthBounds"))
5651 {
5652 return (void*)entry_vkCmdSetDepthBounds;
5653 }
5654 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5655 {
5656 return (void*)entry_vkCmdSetStencilCompareMask;
5657 }
5658 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5659 {
5660 return (void*)entry_vkCmdSetStencilWriteMask;
5661 }
5662 if (!strcmp(name, "vkCmdSetStencilReference"))
5663 {
5664 return (void*)entry_vkCmdSetStencilReference;
5665 }
5666 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5667 {
5668 return (void*)entry_vkCmdBindDescriptorSets;
5669 }
5670 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5671 {
5672 return (void*)entry_vkCmdBindIndexBuffer;
5673 }
5674 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5675 {
5676 return (void*)entry_vkCmdBindVertexBuffers;
5677 }
5678 if (!strcmp(name, "vkCmdDraw"))
5679 {
5680 return (void*)entry_vkCmdDraw;
5681 }
5682 if (!strcmp(name, "vkCmdDrawIndexed"))
5683 {
5684 return (void*)entry_vkCmdDrawIndexed;
5685 }
5686 if (!strcmp(name, "vkCmdDrawIndirect"))
5687 {
5688 return (void*)entry_vkCmdDrawIndirect;
5689 }
5690 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5691 {
5692 return (void*)entry_vkCmdDrawIndexedIndirect;
5693 }
5694 if (!strcmp(name, "vkCmdDispatch"))
5695 {
5696 return (void*)entry_vkCmdDispatch;
5697 }
5698 if (!strcmp(name, "vkCmdDispatchIndirect"))
5699 {
5700 return (void*)entry_vkCmdDispatchIndirect;
5701 }
5702 if (!strcmp(name, "vkCmdCopyBuffer"))
5703 {
5704 return (void*)entry_vkCmdCopyBuffer;
5705 }
5706 if (!strcmp(name, "vkCmdCopyImage"))
5707 {
5708 return (void*)entry_vkCmdCopyImage;
5709 }
5710 if (!strcmp(name, "vkCmdBlitImage"))
5711 {
5712 return (void*)entry_vkCmdBlitImage;
5713 }
5714 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5715 {
5716 return (void*)entry_vkCmdCopyBufferToImage;
5717 }
5718 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5719 {
5720 return (void*)entry_vkCmdCopyImageToBuffer;
5721 }
5722 if (!strcmp(name, "vkCmdUpdateBuffer"))
5723 {
5724 return (void*)entry_vkCmdUpdateBuffer;
5725 }
5726 if (!strcmp(name, "vkCmdFillBuffer"))
5727 {
5728 return (void*)entry_vkCmdFillBuffer;
5729 }
5730 if (!strcmp(name, "vkCmdClearColorImage"))
5731 {
5732 return (void*)entry_vkCmdClearColorImage;
5733 }
5734 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5735 {
5736 return (void*)entry_vkCmdClearDepthStencilImage;
5737 }
5738 if (!strcmp(name, "vkCmdClearAttachments"))
5739 {
5740 return (void*)entry_vkCmdClearAttachments;
5741 }
5742 if (!strcmp(name, "vkCmdResolveImage"))
5743 {
5744 return (void*)entry_vkCmdResolveImage;
5745 }
5746 if (!strcmp(name, "vkCmdSetEvent"))
5747 {
5748 return (void*)entry_vkCmdSetEvent;
5749 }
5750 if (!strcmp(name, "vkCmdResetEvent"))
5751 {
5752 return (void*)entry_vkCmdResetEvent;
5753 }
5754 if (!strcmp(name, "vkCmdWaitEvents"))
5755 {
5756 return (void*)entry_vkCmdWaitEvents;
5757 }
5758 if (!strcmp(name, "vkCmdPipelineBarrier"))
5759 {
5760 return (void*)entry_vkCmdPipelineBarrier;
5761 }
5762 if (!strcmp(name, "vkCmdBeginQuery"))
5763 {
5764 return (void*)entry_vkCmdBeginQuery;
5765 }
5766 if (!strcmp(name, "vkCmdEndQuery"))
5767 {
5768 return (void*)entry_vkCmdEndQuery;
5769 }
5770 if (!strcmp(name, "vkCmdResetQueryPool"))
5771 {
5772 return (void*)entry_vkCmdResetQueryPool;
5773 }
5774 if (!strcmp(name, "vkCmdWriteTimestamp"))
5775 {
5776 return (void*)entry_vkCmdWriteTimestamp;
5777 }
5778 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5779 {
5780 return (void*)entry_vkCmdCopyQueryPoolResults;
5781 }
5782 if (!strcmp(name, "vkCmdPushConstants"))
5783 {
5784 return (void*)entry_vkCmdPushConstants;
5785 }
5786 if (!strcmp(name, "vkCmdBeginRenderPass"))
5787 {
5788 return (void*)entry_vkCmdBeginRenderPass;
5789 }
5790 if (!strcmp(name, "vkCmdNextSubpass"))
5791 {
5792 return (void*)entry_vkCmdNextSubpass;
5793 }
5794 if (!strcmp(name, "vkCmdEndRenderPass"))
5795 {
5796 return (void*)entry_vkCmdEndRenderPass;
5797 }
5798 if (!strcmp(name, "vkCmdExecuteCommands"))
5799 {
5800 return (void*)entry_vkCmdExecuteCommands;
5801 }
5802#endif
5803#ifdef VK_VERSION_1_1
5804 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5805 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005806 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005807 }
5808 if (!strcmp(name, "vkBindBufferMemory2"))
5809 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005810 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005811 }
5812 if (!strcmp(name, "vkBindImageMemory2"))
5813 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005814 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005815 }
5816 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5817 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005818 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005819 }
5820 if (!strcmp(name, "vkCmdSetDeviceMask"))
5821 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005822 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005823 }
5824 if (!strcmp(name, "vkCmdDispatchBase"))
5825 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005826 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005827 }
5828 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5829 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005830 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005831 }
5832 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5833 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005834 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005835 }
5836 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5837 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005838 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005839 }
5840 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5841 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005842 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005843 }
5844 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5845 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005846 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005847 }
5848 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5849 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005850 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005851 }
5852 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5853 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005854 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005855 }
5856 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5857 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005858 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005859 }
5860 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5861 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005862 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005863 }
5864 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5865 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005866 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005867 }
5868 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5869 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005870 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005871 }
5872 if (!strcmp(name, "vkTrimCommandPool"))
5873 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005874 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005875 }
5876 if (!strcmp(name, "vkGetDeviceQueue2"))
5877 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005878 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005879 }
5880 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5881 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005882 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005883 }
5884 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5885 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005886 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005887 }
5888 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5889 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005890 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005891 }
5892 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5893 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005894 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005895 }
5896 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5897 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005898 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005899 }
5900 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5901 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005902 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005903 }
5904 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5905 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005906 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005907 }
5908 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5909 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005910 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005911 }
5912 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5913 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005914 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005915 }
5916#endif
5917#ifdef VK_KHR_surface
5918 if (!strcmp(name, "vkDestroySurfaceKHR"))
5919 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005920 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005921 }
5922 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
5923 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005924 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005925 }
5926 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
5927 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005928 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005929 }
5930 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
5931 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005932 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005933 }
5934 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
5935 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005936 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005937 }
5938#endif
5939#ifdef VK_KHR_swapchain
5940 if (!strcmp(name, "vkCreateSwapchainKHR"))
5941 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005942 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005943 }
5944 if (!strcmp(name, "vkDestroySwapchainKHR"))
5945 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005946 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005947 }
5948 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
5949 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005950 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005951 }
5952 if (!strcmp(name, "vkAcquireNextImageKHR"))
5953 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005954 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005955 }
5956 if (!strcmp(name, "vkQueuePresentKHR"))
5957 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005958 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005959 }
5960 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
5961 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005962 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005963 }
5964 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
5965 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005966 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005967 }
5968 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
5969 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005970 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005971 }
5972 if (!strcmp(name, "vkAcquireNextImage2KHR"))
5973 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005974 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005975 }
5976#endif
5977#ifdef VK_KHR_display
5978 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
5979 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005980 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005981 }
5982 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
5983 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005984 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005985 }
5986 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
5987 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005988 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005989 }
5990 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
5991 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005992 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005993 }
5994 if (!strcmp(name, "vkCreateDisplayModeKHR"))
5995 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005996 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005997 }
5998 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
5999 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006000 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006001 }
6002 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6003 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006004 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006005 }
6006#endif
6007#ifdef VK_KHR_display_swapchain
6008 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6009 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006010 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006011 }
6012#endif
6013#ifdef VK_KHR_xlib_surface
6014 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6015 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006016 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006017 }
6018 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6019 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006020 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006021 }
6022#endif
6023#ifdef VK_KHR_xcb_surface
6024 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6025 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006026 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006027 }
6028 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6029 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006030 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006031 }
6032#endif
6033#ifdef VK_KHR_wayland_surface
6034 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006037 }
6038 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6039 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006040 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006041 }
6042#endif
6043#ifdef VK_KHR_mir_surface
6044 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6045 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006046 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006047 }
6048 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6049 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006050 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006051 }
6052#endif
6053#ifdef VK_KHR_android_surface
6054 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6055 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006056 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006057 }
6058#endif
6059#ifdef VK_KHR_win32_surface
6060 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6061 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006062 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006063 }
6064 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6065 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006066 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006067 }
6068#endif
6069#ifdef VK_KHR_get_physical_device_properties2
6070 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6071 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006072 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006073 }
6074 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6075 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006076 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006077 }
6078 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6079 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006080 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006081 }
6082 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6083 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006084 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006085 }
6086 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6087 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006088 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006089 }
6090 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6091 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006092 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006093 }
6094 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6095 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006096 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006097 }
6098#endif
6099#ifdef VK_KHR_device_group
6100 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6101 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006102 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006103 }
6104 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6105 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006106 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006107 }
6108 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6109 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006110 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006111 }
6112#endif
6113#ifdef VK_KHR_maintenance1
6114 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6115 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006116 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006117 }
6118#endif
6119#ifdef VK_KHR_device_group_creation
6120 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6121 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006122 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006123 }
6124#endif
6125#ifdef VK_KHR_external_memory_capabilities
6126 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6127 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006128 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006129 }
6130#endif
6131#ifdef VK_KHR_external_memory_win32
6132 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6133 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006134 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006135 }
6136 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6137 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006138 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006139 }
6140#endif
6141#ifdef VK_KHR_external_memory_fd
6142 if (!strcmp(name, "vkGetMemoryFdKHR"))
6143 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006144 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006145 }
6146 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6147 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006148 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006149 }
6150#endif
6151#ifdef VK_KHR_external_semaphore_capabilities
6152 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6153 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006154 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006155 }
6156#endif
6157#ifdef VK_KHR_external_semaphore_win32
6158 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6159 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006160 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006161 }
6162 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6163 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006164 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006165 }
6166#endif
6167#ifdef VK_KHR_external_semaphore_fd
6168 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6169 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006170 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006171 }
6172 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6173 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006174 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006175 }
6176#endif
6177#ifdef VK_KHR_push_descriptor
6178 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6179 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006180 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006181 }
6182 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6183 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006184 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006185 }
6186#endif
6187#ifdef VK_KHR_descriptor_update_template
6188 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6189 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006190 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006191 }
6192 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6193 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006194 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006195 }
6196 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6197 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006198 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006199 }
6200#endif
6201#ifdef VK_KHR_create_renderpass2
6202 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6203 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006204 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006205 }
6206 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6207 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006208 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006209 }
6210 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6211 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006212 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006213 }
6214 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6215 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006216 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006217 }
6218#endif
6219#ifdef VK_KHR_shared_presentable_image
6220 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6221 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006222 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006223 }
6224#endif
6225#ifdef VK_KHR_external_fence_capabilities
6226 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6227 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006228 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006229 }
6230#endif
6231#ifdef VK_KHR_external_fence_win32
6232 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6233 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006234 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006235 }
6236 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6237 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006238 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006239 }
6240#endif
6241#ifdef VK_KHR_external_fence_fd
6242 if (!strcmp(name, "vkImportFenceFdKHR"))
6243 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006244 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006245 }
6246 if (!strcmp(name, "vkGetFenceFdKHR"))
6247 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006248 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006249 }
6250#endif
6251#ifdef VK_KHR_get_surface_capabilities2
6252 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6253 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006254 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006255 }
6256 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6257 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006258 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006259 }
6260#endif
6261#ifdef VK_KHR_get_display_properties2
6262 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6263 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006264 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006265 }
6266 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6267 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006268 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006269 }
6270 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6271 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006272 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006273 }
6274 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6275 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006276 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006277 }
6278#endif
6279#ifdef VK_KHR_get_memory_requirements2
6280 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6281 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006282 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006283 }
6284 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6285 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006286 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006287 }
6288 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006291 }
6292#endif
6293#ifdef VK_KHR_sampler_ycbcr_conversion
6294 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6295 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006296 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006297 }
6298 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6299 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006300 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006301 }
6302#endif
6303#ifdef VK_KHR_bind_memory2
6304 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6305 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006306 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006307 }
6308 if (!strcmp(name, "vkBindImageMemory2KHR"))
6309 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006310 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006311 }
6312#endif
6313#ifdef VK_KHR_maintenance3
6314 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6315 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006316 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006317 }
6318#endif
6319#ifdef VK_KHR_draw_indirect_count
6320 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6321 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006322 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006323 }
6324 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6325 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006326 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006327 }
6328#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006329#ifdef VK_ANDROID_native_buffer
6330 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6331 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006332 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006333 }
6334 if (!strcmp(name, "vkAcquireImageANDROID"))
6335 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006336 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006337 }
6338 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6339 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006340 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006341 }
6342#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006343#ifdef VK_EXT_debug_report
6344 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6345 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006346 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006347 }
6348 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6349 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006350 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006351 }
6352 if (!strcmp(name, "vkDebugReportMessageEXT"))
6353 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006354 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006355 }
6356#endif
6357#ifdef VK_EXT_debug_marker
6358 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6359 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006360 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006361 }
6362 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6363 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006364 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006365 }
6366 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6367 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006368 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006369 }
6370 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6371 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006372 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006373 }
6374 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6375 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006376 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006377 }
6378#endif
6379#ifdef VK_AMD_draw_indirect_count
6380 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6381 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006382 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006383 }
6384 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6385 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006386 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006387 }
6388#endif
6389#ifdef VK_AMD_shader_info
6390 if (!strcmp(name, "vkGetShaderInfoAMD"))
6391 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006392 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006393 }
6394#endif
6395#ifdef VK_NV_external_memory_capabilities
6396 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6397 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006398 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006399 }
6400#endif
6401#ifdef VK_NV_external_memory_win32
6402 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6403 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006404 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006405 }
6406#endif
6407#ifdef VK_NN_vi_surface
6408 if (!strcmp(name, "vkCreateViSurfaceNN"))
6409 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006410 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006411 }
6412#endif
6413#ifdef VK_EXT_conditional_rendering
6414 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6415 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006416 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006417 }
6418 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6419 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006420 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006421 }
6422#endif
6423#ifdef VK_NVX_device_generated_commands
6424 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6425 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006426 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006427 }
6428 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6429 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006430 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006431 }
6432 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6433 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006434 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006435 }
6436 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6437 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006438 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006439 }
6440 if (!strcmp(name, "vkCreateObjectTableNVX"))
6441 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006442 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006443 }
6444 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6445 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006446 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006447 }
6448 if (!strcmp(name, "vkRegisterObjectsNVX"))
6449 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006450 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006451 }
6452 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6453 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006454 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006455 }
6456 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6457 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006458 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006459 }
6460#endif
6461#ifdef VK_NV_clip_space_w_scaling
6462 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6463 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006464 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006465 }
6466#endif
6467#ifdef VK_EXT_direct_mode_display
6468 if (!strcmp(name, "vkReleaseDisplayEXT"))
6469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006471 }
6472#endif
6473#ifdef VK_EXT_acquire_xlib_display
6474 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6475 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006476 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006477 }
6478 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6479 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006480 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006481 }
6482#endif
6483#ifdef VK_EXT_display_surface_counter
6484 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6485 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006486 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006487 }
6488#endif
6489#ifdef VK_EXT_display_control
6490 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6491 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006492 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006493 }
6494 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6495 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006496 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006497 }
6498 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6499 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006500 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006501 }
6502 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6503 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006504 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006505 }
6506#endif
6507#ifdef VK_GOOGLE_display_timing
6508 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006510 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006511 }
6512 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006515 }
6516#endif
6517#ifdef VK_EXT_discard_rectangles
6518 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6519 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006520 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006521 }
6522#endif
6523#ifdef VK_EXT_hdr_metadata
6524 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006527 }
6528#endif
6529#ifdef VK_MVK_ios_surface
6530 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6531 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006532 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006533 }
6534#endif
6535#ifdef VK_MVK_macos_surface
6536 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006539 }
6540#endif
6541#ifdef VK_EXT_debug_utils
6542 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6543 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006544 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006545 }
6546 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6547 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006548 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006549 }
6550 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6551 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006552 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006553 }
6554 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6555 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006556 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006557 }
6558 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6559 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006560 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006561 }
6562 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6563 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006564 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006565 }
6566 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6567 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006568 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006569 }
6570 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6571 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006572 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006573 }
6574 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6575 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006576 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006577 }
6578 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6579 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006580 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006581 }
6582 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6583 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006584 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006585 }
6586#endif
6587#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6588 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6589 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006590 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006591 }
6592 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6593 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006594 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006595 }
6596#endif
6597#ifdef VK_EXT_sample_locations
6598 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6599 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006600 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006601 }
6602 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6603 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006604 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006605 }
6606#endif
6607#ifdef VK_EXT_validation_cache
6608 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6609 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006610 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006611 }
6612 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6613 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006614 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006615 }
6616 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6617 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006618 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006619 }
6620 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6621 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006622 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006623 }
6624#endif
6625#ifdef VK_EXT_external_memory_host
6626 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6627 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006628 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006629 }
6630#endif
6631#ifdef VK_AMD_buffer_marker
6632 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6633 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006634 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006635 }
6636#endif
6637#ifdef VK_NV_device_diagnostic_checkpoints
6638 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6639 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006640 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006641 }
6642 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6643 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006644 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006645 }
6646#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006647#ifdef VK_GOOGLE_address_space
6648 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6649 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006650 return nullptr;
6651 }
6652#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006653#ifdef VK_GOOGLE_color_buffer
6654 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6655 {
6656 return nullptr;
6657 }
6658 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6659 {
6660 return nullptr;
6661 }
6662#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006663#ifdef VK_GOOGLE_sized_descriptor_update_template
6664 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6665 {
6666 return nullptr;
6667 }
6668#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006669#ifdef VK_GOOGLE_async_command_buffers
6670 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6671 {
6672 return nullptr;
6673 }
6674 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6675 {
6676 return nullptr;
6677 }
6678 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6679 {
6680 return nullptr;
6681 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006682 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6683 {
6684 return nullptr;
6685 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006686#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006687#ifdef VK_GOOGLE_create_resources_with_requirements
6688 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6689 {
6690 return nullptr;
6691 }
6692 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6693 {
6694 return nullptr;
6695 }
6696#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006697#ifdef VK_GOOGLE_address_space_info
6698 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6699 {
6700 return nullptr;
6701 }
6702#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006703 return nullptr;
6704}
6705void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6706 auto resources = ResourceTracker::get();
6707 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6708#ifdef VK_VERSION_1_0
6709 if (!strcmp(name, "vkCreateInstance"))
6710 {
6711 return (void*)entry_vkCreateInstance;
6712 }
6713 if (!strcmp(name, "vkDestroyInstance"))
6714 {
6715 return (void*)entry_vkDestroyInstance;
6716 }
6717 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6718 {
6719 return (void*)entry_vkEnumeratePhysicalDevices;
6720 }
6721 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6722 {
6723 return (void*)entry_vkGetPhysicalDeviceFeatures;
6724 }
6725 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6726 {
6727 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6728 }
6729 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6730 {
6731 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6732 }
6733 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6734 {
6735 return (void*)entry_vkGetPhysicalDeviceProperties;
6736 }
6737 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6738 {
6739 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6740 }
6741 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6742 {
6743 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6744 }
6745 if (!strcmp(name, "vkGetInstanceProcAddr"))
6746 {
6747 return (void*)entry_vkGetInstanceProcAddr;
6748 }
6749 if (!strcmp(name, "vkGetDeviceProcAddr"))
6750 {
6751 return (void*)entry_vkGetDeviceProcAddr;
6752 }
6753 if (!strcmp(name, "vkCreateDevice"))
6754 {
6755 return (void*)entry_vkCreateDevice;
6756 }
6757 if (!strcmp(name, "vkDestroyDevice"))
6758 {
6759 return (void*)entry_vkDestroyDevice;
6760 }
6761 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6762 {
6763 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6764 }
6765 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6766 {
6767 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6768 }
6769 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6770 {
6771 return (void*)entry_vkEnumerateInstanceLayerProperties;
6772 }
6773 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6774 {
6775 return (void*)entry_vkEnumerateDeviceLayerProperties;
6776 }
6777 if (!strcmp(name, "vkGetDeviceQueue"))
6778 {
6779 return (void*)entry_vkGetDeviceQueue;
6780 }
6781 if (!strcmp(name, "vkQueueSubmit"))
6782 {
6783 return (void*)entry_vkQueueSubmit;
6784 }
6785 if (!strcmp(name, "vkQueueWaitIdle"))
6786 {
6787 return (void*)entry_vkQueueWaitIdle;
6788 }
6789 if (!strcmp(name, "vkDeviceWaitIdle"))
6790 {
6791 return (void*)entry_vkDeviceWaitIdle;
6792 }
6793 if (!strcmp(name, "vkAllocateMemory"))
6794 {
6795 return (void*)entry_vkAllocateMemory;
6796 }
6797 if (!strcmp(name, "vkFreeMemory"))
6798 {
6799 return (void*)entry_vkFreeMemory;
6800 }
6801 if (!strcmp(name, "vkMapMemory"))
6802 {
6803 return (void*)entry_vkMapMemory;
6804 }
6805 if (!strcmp(name, "vkUnmapMemory"))
6806 {
6807 return (void*)entry_vkUnmapMemory;
6808 }
6809 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6810 {
6811 return (void*)entry_vkFlushMappedMemoryRanges;
6812 }
6813 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6814 {
6815 return (void*)entry_vkInvalidateMappedMemoryRanges;
6816 }
6817 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6818 {
6819 return (void*)entry_vkGetDeviceMemoryCommitment;
6820 }
6821 if (!strcmp(name, "vkBindBufferMemory"))
6822 {
6823 return (void*)entry_vkBindBufferMemory;
6824 }
6825 if (!strcmp(name, "vkBindImageMemory"))
6826 {
6827 return (void*)entry_vkBindImageMemory;
6828 }
6829 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6830 {
6831 return (void*)entry_vkGetBufferMemoryRequirements;
6832 }
6833 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6834 {
6835 return (void*)entry_vkGetImageMemoryRequirements;
6836 }
6837 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6838 {
6839 return (void*)entry_vkGetImageSparseMemoryRequirements;
6840 }
6841 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6842 {
6843 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6844 }
6845 if (!strcmp(name, "vkQueueBindSparse"))
6846 {
6847 return (void*)entry_vkQueueBindSparse;
6848 }
6849 if (!strcmp(name, "vkCreateFence"))
6850 {
6851 return (void*)entry_vkCreateFence;
6852 }
6853 if (!strcmp(name, "vkDestroyFence"))
6854 {
6855 return (void*)entry_vkDestroyFence;
6856 }
6857 if (!strcmp(name, "vkResetFences"))
6858 {
6859 return (void*)entry_vkResetFences;
6860 }
6861 if (!strcmp(name, "vkGetFenceStatus"))
6862 {
6863 return (void*)entry_vkGetFenceStatus;
6864 }
6865 if (!strcmp(name, "vkWaitForFences"))
6866 {
6867 return (void*)entry_vkWaitForFences;
6868 }
6869 if (!strcmp(name, "vkCreateSemaphore"))
6870 {
6871 return (void*)entry_vkCreateSemaphore;
6872 }
6873 if (!strcmp(name, "vkDestroySemaphore"))
6874 {
6875 return (void*)entry_vkDestroySemaphore;
6876 }
6877 if (!strcmp(name, "vkCreateEvent"))
6878 {
6879 return (void*)entry_vkCreateEvent;
6880 }
6881 if (!strcmp(name, "vkDestroyEvent"))
6882 {
6883 return (void*)entry_vkDestroyEvent;
6884 }
6885 if (!strcmp(name, "vkGetEventStatus"))
6886 {
6887 return (void*)entry_vkGetEventStatus;
6888 }
6889 if (!strcmp(name, "vkSetEvent"))
6890 {
6891 return (void*)entry_vkSetEvent;
6892 }
6893 if (!strcmp(name, "vkResetEvent"))
6894 {
6895 return (void*)entry_vkResetEvent;
6896 }
6897 if (!strcmp(name, "vkCreateQueryPool"))
6898 {
6899 return (void*)entry_vkCreateQueryPool;
6900 }
6901 if (!strcmp(name, "vkDestroyQueryPool"))
6902 {
6903 return (void*)entry_vkDestroyQueryPool;
6904 }
6905 if (!strcmp(name, "vkGetQueryPoolResults"))
6906 {
6907 return (void*)entry_vkGetQueryPoolResults;
6908 }
6909 if (!strcmp(name, "vkCreateBuffer"))
6910 {
6911 return (void*)entry_vkCreateBuffer;
6912 }
6913 if (!strcmp(name, "vkDestroyBuffer"))
6914 {
6915 return (void*)entry_vkDestroyBuffer;
6916 }
6917 if (!strcmp(name, "vkCreateBufferView"))
6918 {
6919 return (void*)entry_vkCreateBufferView;
6920 }
6921 if (!strcmp(name, "vkDestroyBufferView"))
6922 {
6923 return (void*)entry_vkDestroyBufferView;
6924 }
6925 if (!strcmp(name, "vkCreateImage"))
6926 {
6927 return (void*)entry_vkCreateImage;
6928 }
6929 if (!strcmp(name, "vkDestroyImage"))
6930 {
6931 return (void*)entry_vkDestroyImage;
6932 }
6933 if (!strcmp(name, "vkGetImageSubresourceLayout"))
6934 {
6935 return (void*)entry_vkGetImageSubresourceLayout;
6936 }
6937 if (!strcmp(name, "vkCreateImageView"))
6938 {
6939 return (void*)entry_vkCreateImageView;
6940 }
6941 if (!strcmp(name, "vkDestroyImageView"))
6942 {
6943 return (void*)entry_vkDestroyImageView;
6944 }
6945 if (!strcmp(name, "vkCreateShaderModule"))
6946 {
6947 return (void*)entry_vkCreateShaderModule;
6948 }
6949 if (!strcmp(name, "vkDestroyShaderModule"))
6950 {
6951 return (void*)entry_vkDestroyShaderModule;
6952 }
6953 if (!strcmp(name, "vkCreatePipelineCache"))
6954 {
6955 return (void*)entry_vkCreatePipelineCache;
6956 }
6957 if (!strcmp(name, "vkDestroyPipelineCache"))
6958 {
6959 return (void*)entry_vkDestroyPipelineCache;
6960 }
6961 if (!strcmp(name, "vkGetPipelineCacheData"))
6962 {
6963 return (void*)entry_vkGetPipelineCacheData;
6964 }
6965 if (!strcmp(name, "vkMergePipelineCaches"))
6966 {
6967 return (void*)entry_vkMergePipelineCaches;
6968 }
6969 if (!strcmp(name, "vkCreateGraphicsPipelines"))
6970 {
6971 return (void*)entry_vkCreateGraphicsPipelines;
6972 }
6973 if (!strcmp(name, "vkCreateComputePipelines"))
6974 {
6975 return (void*)entry_vkCreateComputePipelines;
6976 }
6977 if (!strcmp(name, "vkDestroyPipeline"))
6978 {
6979 return (void*)entry_vkDestroyPipeline;
6980 }
6981 if (!strcmp(name, "vkCreatePipelineLayout"))
6982 {
6983 return (void*)entry_vkCreatePipelineLayout;
6984 }
6985 if (!strcmp(name, "vkDestroyPipelineLayout"))
6986 {
6987 return (void*)entry_vkDestroyPipelineLayout;
6988 }
6989 if (!strcmp(name, "vkCreateSampler"))
6990 {
6991 return (void*)entry_vkCreateSampler;
6992 }
6993 if (!strcmp(name, "vkDestroySampler"))
6994 {
6995 return (void*)entry_vkDestroySampler;
6996 }
6997 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
6998 {
6999 return (void*)entry_vkCreateDescriptorSetLayout;
7000 }
7001 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7002 {
7003 return (void*)entry_vkDestroyDescriptorSetLayout;
7004 }
7005 if (!strcmp(name, "vkCreateDescriptorPool"))
7006 {
7007 return (void*)entry_vkCreateDescriptorPool;
7008 }
7009 if (!strcmp(name, "vkDestroyDescriptorPool"))
7010 {
7011 return (void*)entry_vkDestroyDescriptorPool;
7012 }
7013 if (!strcmp(name, "vkResetDescriptorPool"))
7014 {
7015 return (void*)entry_vkResetDescriptorPool;
7016 }
7017 if (!strcmp(name, "vkAllocateDescriptorSets"))
7018 {
7019 return (void*)entry_vkAllocateDescriptorSets;
7020 }
7021 if (!strcmp(name, "vkFreeDescriptorSets"))
7022 {
7023 return (void*)entry_vkFreeDescriptorSets;
7024 }
7025 if (!strcmp(name, "vkUpdateDescriptorSets"))
7026 {
7027 return (void*)entry_vkUpdateDescriptorSets;
7028 }
7029 if (!strcmp(name, "vkCreateFramebuffer"))
7030 {
7031 return (void*)entry_vkCreateFramebuffer;
7032 }
7033 if (!strcmp(name, "vkDestroyFramebuffer"))
7034 {
7035 return (void*)entry_vkDestroyFramebuffer;
7036 }
7037 if (!strcmp(name, "vkCreateRenderPass"))
7038 {
7039 return (void*)entry_vkCreateRenderPass;
7040 }
7041 if (!strcmp(name, "vkDestroyRenderPass"))
7042 {
7043 return (void*)entry_vkDestroyRenderPass;
7044 }
7045 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7046 {
7047 return (void*)entry_vkGetRenderAreaGranularity;
7048 }
7049 if (!strcmp(name, "vkCreateCommandPool"))
7050 {
7051 return (void*)entry_vkCreateCommandPool;
7052 }
7053 if (!strcmp(name, "vkDestroyCommandPool"))
7054 {
7055 return (void*)entry_vkDestroyCommandPool;
7056 }
7057 if (!strcmp(name, "vkResetCommandPool"))
7058 {
7059 return (void*)entry_vkResetCommandPool;
7060 }
7061 if (!strcmp(name, "vkAllocateCommandBuffers"))
7062 {
7063 return (void*)entry_vkAllocateCommandBuffers;
7064 }
7065 if (!strcmp(name, "vkFreeCommandBuffers"))
7066 {
7067 return (void*)entry_vkFreeCommandBuffers;
7068 }
7069 if (!strcmp(name, "vkBeginCommandBuffer"))
7070 {
7071 return (void*)entry_vkBeginCommandBuffer;
7072 }
7073 if (!strcmp(name, "vkEndCommandBuffer"))
7074 {
7075 return (void*)entry_vkEndCommandBuffer;
7076 }
7077 if (!strcmp(name, "vkResetCommandBuffer"))
7078 {
7079 return (void*)entry_vkResetCommandBuffer;
7080 }
7081 if (!strcmp(name, "vkCmdBindPipeline"))
7082 {
7083 return (void*)entry_vkCmdBindPipeline;
7084 }
7085 if (!strcmp(name, "vkCmdSetViewport"))
7086 {
7087 return (void*)entry_vkCmdSetViewport;
7088 }
7089 if (!strcmp(name, "vkCmdSetScissor"))
7090 {
7091 return (void*)entry_vkCmdSetScissor;
7092 }
7093 if (!strcmp(name, "vkCmdSetLineWidth"))
7094 {
7095 return (void*)entry_vkCmdSetLineWidth;
7096 }
7097 if (!strcmp(name, "vkCmdSetDepthBias"))
7098 {
7099 return (void*)entry_vkCmdSetDepthBias;
7100 }
7101 if (!strcmp(name, "vkCmdSetBlendConstants"))
7102 {
7103 return (void*)entry_vkCmdSetBlendConstants;
7104 }
7105 if (!strcmp(name, "vkCmdSetDepthBounds"))
7106 {
7107 return (void*)entry_vkCmdSetDepthBounds;
7108 }
7109 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7110 {
7111 return (void*)entry_vkCmdSetStencilCompareMask;
7112 }
7113 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7114 {
7115 return (void*)entry_vkCmdSetStencilWriteMask;
7116 }
7117 if (!strcmp(name, "vkCmdSetStencilReference"))
7118 {
7119 return (void*)entry_vkCmdSetStencilReference;
7120 }
7121 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7122 {
7123 return (void*)entry_vkCmdBindDescriptorSets;
7124 }
7125 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7126 {
7127 return (void*)entry_vkCmdBindIndexBuffer;
7128 }
7129 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7130 {
7131 return (void*)entry_vkCmdBindVertexBuffers;
7132 }
7133 if (!strcmp(name, "vkCmdDraw"))
7134 {
7135 return (void*)entry_vkCmdDraw;
7136 }
7137 if (!strcmp(name, "vkCmdDrawIndexed"))
7138 {
7139 return (void*)entry_vkCmdDrawIndexed;
7140 }
7141 if (!strcmp(name, "vkCmdDrawIndirect"))
7142 {
7143 return (void*)entry_vkCmdDrawIndirect;
7144 }
7145 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7146 {
7147 return (void*)entry_vkCmdDrawIndexedIndirect;
7148 }
7149 if (!strcmp(name, "vkCmdDispatch"))
7150 {
7151 return (void*)entry_vkCmdDispatch;
7152 }
7153 if (!strcmp(name, "vkCmdDispatchIndirect"))
7154 {
7155 return (void*)entry_vkCmdDispatchIndirect;
7156 }
7157 if (!strcmp(name, "vkCmdCopyBuffer"))
7158 {
7159 return (void*)entry_vkCmdCopyBuffer;
7160 }
7161 if (!strcmp(name, "vkCmdCopyImage"))
7162 {
7163 return (void*)entry_vkCmdCopyImage;
7164 }
7165 if (!strcmp(name, "vkCmdBlitImage"))
7166 {
7167 return (void*)entry_vkCmdBlitImage;
7168 }
7169 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7170 {
7171 return (void*)entry_vkCmdCopyBufferToImage;
7172 }
7173 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7174 {
7175 return (void*)entry_vkCmdCopyImageToBuffer;
7176 }
7177 if (!strcmp(name, "vkCmdUpdateBuffer"))
7178 {
7179 return (void*)entry_vkCmdUpdateBuffer;
7180 }
7181 if (!strcmp(name, "vkCmdFillBuffer"))
7182 {
7183 return (void*)entry_vkCmdFillBuffer;
7184 }
7185 if (!strcmp(name, "vkCmdClearColorImage"))
7186 {
7187 return (void*)entry_vkCmdClearColorImage;
7188 }
7189 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7190 {
7191 return (void*)entry_vkCmdClearDepthStencilImage;
7192 }
7193 if (!strcmp(name, "vkCmdClearAttachments"))
7194 {
7195 return (void*)entry_vkCmdClearAttachments;
7196 }
7197 if (!strcmp(name, "vkCmdResolveImage"))
7198 {
7199 return (void*)entry_vkCmdResolveImage;
7200 }
7201 if (!strcmp(name, "vkCmdSetEvent"))
7202 {
7203 return (void*)entry_vkCmdSetEvent;
7204 }
7205 if (!strcmp(name, "vkCmdResetEvent"))
7206 {
7207 return (void*)entry_vkCmdResetEvent;
7208 }
7209 if (!strcmp(name, "vkCmdWaitEvents"))
7210 {
7211 return (void*)entry_vkCmdWaitEvents;
7212 }
7213 if (!strcmp(name, "vkCmdPipelineBarrier"))
7214 {
7215 return (void*)entry_vkCmdPipelineBarrier;
7216 }
7217 if (!strcmp(name, "vkCmdBeginQuery"))
7218 {
7219 return (void*)entry_vkCmdBeginQuery;
7220 }
7221 if (!strcmp(name, "vkCmdEndQuery"))
7222 {
7223 return (void*)entry_vkCmdEndQuery;
7224 }
7225 if (!strcmp(name, "vkCmdResetQueryPool"))
7226 {
7227 return (void*)entry_vkCmdResetQueryPool;
7228 }
7229 if (!strcmp(name, "vkCmdWriteTimestamp"))
7230 {
7231 return (void*)entry_vkCmdWriteTimestamp;
7232 }
7233 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7234 {
7235 return (void*)entry_vkCmdCopyQueryPoolResults;
7236 }
7237 if (!strcmp(name, "vkCmdPushConstants"))
7238 {
7239 return (void*)entry_vkCmdPushConstants;
7240 }
7241 if (!strcmp(name, "vkCmdBeginRenderPass"))
7242 {
7243 return (void*)entry_vkCmdBeginRenderPass;
7244 }
7245 if (!strcmp(name, "vkCmdNextSubpass"))
7246 {
7247 return (void*)entry_vkCmdNextSubpass;
7248 }
7249 if (!strcmp(name, "vkCmdEndRenderPass"))
7250 {
7251 return (void*)entry_vkCmdEndRenderPass;
7252 }
7253 if (!strcmp(name, "vkCmdExecuteCommands"))
7254 {
7255 return (void*)entry_vkCmdExecuteCommands;
7256 }
7257#endif
7258#ifdef VK_VERSION_1_1
7259 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7260 {
7261 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7262 }
7263 if (!strcmp(name, "vkBindBufferMemory2"))
7264 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007265 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007266 }
7267 if (!strcmp(name, "vkBindImageMemory2"))
7268 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007269 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007270 }
7271 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7272 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007273 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007274 }
7275 if (!strcmp(name, "vkCmdSetDeviceMask"))
7276 {
7277 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7278 }
7279 if (!strcmp(name, "vkCmdDispatchBase"))
7280 {
7281 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7282 }
7283 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7284 {
7285 return nullptr;
7286 }
7287 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7288 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007289 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007290 }
7291 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7292 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007293 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007294 }
7295 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7296 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007297 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007298 }
7299 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7300 {
7301 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7302 }
7303 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7304 {
7305 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7306 }
7307 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7308 {
7309 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7310 }
7311 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7312 {
7313 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7314 }
7315 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7316 {
7317 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7318 }
7319 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7320 {
7321 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7322 }
7323 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7324 {
7325 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7326 }
7327 if (!strcmp(name, "vkTrimCommandPool"))
7328 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007329 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007330 }
7331 if (!strcmp(name, "vkGetDeviceQueue2"))
7332 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007333 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007334 }
7335 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7336 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007337 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007338 }
7339 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7340 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007341 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007342 }
7343 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7344 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007345 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007346 }
7347 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7348 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007349 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007350 }
7351 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7352 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007353 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007354 }
7355 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7356 {
7357 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7358 }
7359 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7360 {
7361 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7362 }
7363 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7364 {
7365 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7366 }
7367 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7368 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007369 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007370 }
7371#endif
7372#ifdef VK_KHR_surface
7373 if (!strcmp(name, "vkDestroySurfaceKHR"))
7374 {
7375 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7376 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7377 }
7378 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7379 {
7380 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7381 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7382 }
7383 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7384 {
7385 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7386 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7387 }
7388 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7389 {
7390 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7391 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7392 }
7393 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7394 {
7395 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7396 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7397 }
7398#endif
7399#ifdef VK_KHR_swapchain
7400 if (!strcmp(name, "vkCreateSwapchainKHR"))
7401 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007402 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007403 }
7404 if (!strcmp(name, "vkDestroySwapchainKHR"))
7405 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007406 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007407 }
7408 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7409 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007410 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007411 }
7412 if (!strcmp(name, "vkAcquireNextImageKHR"))
7413 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007414 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007415 }
7416 if (!strcmp(name, "vkQueuePresentKHR"))
7417 {
7418 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7419 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7420 }
7421 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7422 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007423 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007424 }
7425 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7426 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007427 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007428 }
7429 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7430 {
7431 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7432 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7433 }
7434 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7435 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007436 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007437 }
7438#endif
7439#ifdef VK_KHR_display
7440 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7441 {
7442 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7443 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7444 }
7445 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7446 {
7447 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7448 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7449 }
7450 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7451 {
7452 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7453 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7454 }
7455 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7456 {
7457 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7458 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7459 }
7460 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7461 {
7462 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7463 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7464 }
7465 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7466 {
7467 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7468 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7469 }
7470 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7471 {
7472 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7473 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7474 }
7475#endif
7476#ifdef VK_KHR_display_swapchain
7477 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7478 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007479 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007480 }
7481#endif
7482#ifdef VK_KHR_xlib_surface
7483 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7484 {
7485 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7486 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7487 }
7488 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7489 {
7490 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7491 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7492 }
7493#endif
7494#ifdef VK_KHR_xcb_surface
7495 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7496 {
7497 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7498 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7499 }
7500 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7501 {
7502 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7503 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7504 }
7505#endif
7506#ifdef VK_KHR_wayland_surface
7507 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7508 {
7509 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7510 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7511 }
7512 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7513 {
7514 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7515 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7516 }
7517#endif
7518#ifdef VK_KHR_mir_surface
7519 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7520 {
7521 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7522 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7523 }
7524 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7525 {
7526 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7527 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7528 }
7529#endif
7530#ifdef VK_KHR_android_surface
7531 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7532 {
7533 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7534 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7535 }
7536#endif
7537#ifdef VK_KHR_win32_surface
7538 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7539 {
7540 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7541 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7542 }
7543 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7544 {
7545 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7546 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7547 }
7548#endif
7549#ifdef VK_KHR_get_physical_device_properties2
7550 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7551 {
7552 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7553 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7554 }
7555 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7556 {
7557 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7558 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7559 }
7560 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7561 {
7562 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7563 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7564 }
7565 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7566 {
7567 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7568 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7569 }
7570 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7571 {
7572 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7573 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7574 }
7575 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7576 {
7577 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7578 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7579 }
7580 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7581 {
7582 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7583 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7584 }
7585#endif
7586#ifdef VK_KHR_device_group
7587 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7588 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007589 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007590 }
7591 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7592 {
7593 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7594 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7595 }
7596 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7597 {
7598 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7599 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7600 }
7601#endif
7602#ifdef VK_KHR_maintenance1
7603 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7604 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007605 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007606 }
7607#endif
7608#ifdef VK_KHR_device_group_creation
7609 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7610 {
7611 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7612 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7613 }
7614#endif
7615#ifdef VK_KHR_external_memory_capabilities
7616 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7617 {
7618 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7619 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7620 }
7621#endif
7622#ifdef VK_KHR_external_memory_win32
7623 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7624 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007625 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007626 }
7627 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7628 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007629 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007630 }
7631#endif
7632#ifdef VK_KHR_external_memory_fd
7633 if (!strcmp(name, "vkGetMemoryFdKHR"))
7634 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007635 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007636 }
7637 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7638 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007639 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007640 }
7641#endif
7642#ifdef VK_KHR_external_semaphore_capabilities
7643 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7644 {
7645 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7646 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7647 }
7648#endif
7649#ifdef VK_KHR_external_semaphore_win32
7650 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7651 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007652 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007653 }
7654 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7655 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007656 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007657 }
7658#endif
7659#ifdef VK_KHR_external_semaphore_fd
7660 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7661 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007662 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007663 }
7664 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7665 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007666 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007667 }
7668#endif
7669#ifdef VK_KHR_push_descriptor
7670 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7671 {
7672 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7673 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7674 }
7675 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7676 {
7677 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7678 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7679 }
7680#endif
7681#ifdef VK_KHR_descriptor_update_template
7682 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7683 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007684 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007685 }
7686 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7687 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007688 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007689 }
7690 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7691 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007692 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007693 }
7694#endif
7695#ifdef VK_KHR_create_renderpass2
7696 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7697 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007698 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007699 }
7700 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7701 {
7702 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7703 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7704 }
7705 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7706 {
7707 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7708 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7709 }
7710 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7711 {
7712 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7713 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7714 }
7715#endif
7716#ifdef VK_KHR_shared_presentable_image
7717 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7718 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007719 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007720 }
7721#endif
7722#ifdef VK_KHR_external_fence_capabilities
7723 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7724 {
7725 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7726 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7727 }
7728#endif
7729#ifdef VK_KHR_external_fence_win32
7730 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7731 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007732 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007733 }
7734 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7735 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007736 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007737 }
7738#endif
7739#ifdef VK_KHR_external_fence_fd
7740 if (!strcmp(name, "vkImportFenceFdKHR"))
7741 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007742 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007743 }
7744 if (!strcmp(name, "vkGetFenceFdKHR"))
7745 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007746 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007747 }
7748#endif
7749#ifdef VK_KHR_get_surface_capabilities2
7750 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7751 {
7752 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7753 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7754 }
7755 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7756 {
7757 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7758 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7759 }
7760#endif
7761#ifdef VK_KHR_get_display_properties2
7762 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7763 {
7764 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7765 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7766 }
7767 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7768 {
7769 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7770 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7771 }
7772 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7773 {
7774 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7775 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7776 }
7777 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7778 {
7779 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7780 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7781 }
7782#endif
7783#ifdef VK_KHR_get_memory_requirements2
7784 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7785 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007786 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007787 }
7788 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7789 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007790 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007791 }
7792 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7793 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007794 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007795 }
7796#endif
7797#ifdef VK_KHR_sampler_ycbcr_conversion
7798 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7799 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007800 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007801 }
7802 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7803 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007804 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007805 }
7806#endif
7807#ifdef VK_KHR_bind_memory2
7808 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7809 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007810 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007811 }
7812 if (!strcmp(name, "vkBindImageMemory2KHR"))
7813 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007814 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007815 }
7816#endif
7817#ifdef VK_KHR_maintenance3
7818 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7819 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007820 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007821 }
7822#endif
7823#ifdef VK_KHR_draw_indirect_count
7824 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7825 {
7826 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7827 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7828 }
7829 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7830 {
7831 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7832 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7833 }
7834#endif
7835#ifdef VK_ANDROID_native_buffer
7836 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7837 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007838 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007839 }
7840 if (!strcmp(name, "vkAcquireImageANDROID"))
7841 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007842 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007843 }
7844 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7845 {
7846 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7847 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7848 }
7849#endif
7850#ifdef VK_EXT_debug_report
7851 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7852 {
7853 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7854 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7855 }
7856 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7857 {
7858 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7859 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7860 }
7861 if (!strcmp(name, "vkDebugReportMessageEXT"))
7862 {
7863 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7864 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7865 }
7866#endif
7867#ifdef VK_EXT_debug_marker
7868 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7869 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007870 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007871 }
7872 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7873 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007874 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007875 }
7876 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7877 {
7878 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7879 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7880 }
7881 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7882 {
7883 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7884 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7885 }
7886 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
7887 {
7888 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7889 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
7890 }
7891#endif
7892#ifdef VK_AMD_draw_indirect_count
7893 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
7894 {
7895 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7896 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
7897 }
7898 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
7899 {
7900 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7901 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
7902 }
7903#endif
7904#ifdef VK_AMD_shader_info
7905 if (!strcmp(name, "vkGetShaderInfoAMD"))
7906 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007907 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007908 }
7909#endif
7910#ifdef VK_NV_external_memory_capabilities
7911 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
7912 {
7913 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
7914 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
7915 }
7916#endif
7917#ifdef VK_NV_external_memory_win32
7918 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
7919 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007920 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007921 }
7922#endif
7923#ifdef VK_NN_vi_surface
7924 if (!strcmp(name, "vkCreateViSurfaceNN"))
7925 {
7926 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
7927 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
7928 }
7929#endif
7930#ifdef VK_EXT_conditional_rendering
7931 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
7932 {
7933 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7934 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
7935 }
7936 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
7937 {
7938 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7939 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
7940 }
7941#endif
7942#ifdef VK_NVX_device_generated_commands
7943 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
7944 {
7945 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7946 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
7947 }
7948 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
7949 {
7950 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7951 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
7952 }
7953 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
7954 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007955 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007956 }
7957 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
7958 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007959 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007960 }
7961 if (!strcmp(name, "vkCreateObjectTableNVX"))
7962 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007963 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007964 }
7965 if (!strcmp(name, "vkDestroyObjectTableNVX"))
7966 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007967 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007968 }
7969 if (!strcmp(name, "vkRegisterObjectsNVX"))
7970 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007971 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007972 }
7973 if (!strcmp(name, "vkUnregisterObjectsNVX"))
7974 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007975 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007976 }
7977 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
7978 {
7979 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7980 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
7981 }
7982#endif
7983#ifdef VK_NV_clip_space_w_scaling
7984 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
7985 {
7986 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
7987 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
7988 }
7989#endif
7990#ifdef VK_EXT_direct_mode_display
7991 if (!strcmp(name, "vkReleaseDisplayEXT"))
7992 {
7993 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
7994 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
7995 }
7996#endif
7997#ifdef VK_EXT_acquire_xlib_display
7998 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
7999 {
8000 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8001 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8002 }
8003 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8004 {
8005 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8006 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8007 }
8008#endif
8009#ifdef VK_EXT_display_surface_counter
8010 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8011 {
8012 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8013 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8014 }
8015#endif
8016#ifdef VK_EXT_display_control
8017 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8018 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008019 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008020 }
8021 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8022 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008023 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008024 }
8025 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8026 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008027 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008028 }
8029 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8030 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008031 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008032 }
8033#endif
8034#ifdef VK_GOOGLE_display_timing
8035 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8036 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008037 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008038 }
8039 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8040 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008041 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008042 }
8043#endif
8044#ifdef VK_EXT_discard_rectangles
8045 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8046 {
8047 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8048 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8049 }
8050#endif
8051#ifdef VK_EXT_hdr_metadata
8052 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8053 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008054 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008055 }
8056#endif
8057#ifdef VK_MVK_ios_surface
8058 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8059 {
8060 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8061 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8062 }
8063#endif
8064#ifdef VK_MVK_macos_surface
8065 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8066 {
8067 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8068 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8069 }
8070#endif
8071#ifdef VK_EXT_debug_utils
8072 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8073 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008074 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008075 }
8076 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8077 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008078 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008079 }
8080 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8081 {
8082 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8083 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8084 }
8085 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8086 {
8087 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8088 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8089 }
8090 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8091 {
8092 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8093 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8094 }
8095 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8096 {
8097 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8098 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8099 }
8100 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8101 {
8102 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8103 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8104 }
8105 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8106 {
8107 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8108 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8109 }
8110 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8111 {
8112 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8113 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8114 }
8115 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8116 {
8117 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8118 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8119 }
8120 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8121 {
8122 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8123 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8124 }
8125#endif
8126#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8127 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8128 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008129 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008130 }
8131 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8132 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008133 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008134 }
8135#endif
8136#ifdef VK_EXT_sample_locations
8137 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8138 {
8139 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8140 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8141 }
8142 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8143 {
8144 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8145 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8146 }
8147#endif
8148#ifdef VK_EXT_validation_cache
8149 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8150 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008151 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008152 }
8153 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8154 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008155 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008156 }
8157 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8158 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008159 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008160 }
8161 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8162 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008163 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008164 }
8165#endif
8166#ifdef VK_EXT_external_memory_host
8167 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8168 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008169 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008170 }
8171#endif
8172#ifdef VK_AMD_buffer_marker
8173 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8174 {
8175 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8176 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8177 }
8178#endif
8179#ifdef VK_NV_device_diagnostic_checkpoints
8180 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8181 {
8182 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8183 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8184 }
8185 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8186 {
8187 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8188 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8189 }
8190#endif
8191#ifdef VK_GOOGLE_address_space
8192 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8193 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008194 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008195 }
8196#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008197#ifdef VK_GOOGLE_color_buffer
8198 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8199 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008200 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008201 }
8202 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8203 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008204 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008205 }
8206#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008207#ifdef VK_GOOGLE_sized_descriptor_update_template
8208 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8209 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008210 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008211 }
8212#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008213#ifdef VK_GOOGLE_async_command_buffers
8214 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8215 {
8216 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8217 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8218 }
8219 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8220 {
8221 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8222 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8223 }
8224 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8225 {
8226 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8227 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8228 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008229 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8230 {
8231 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8232 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8233 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008234#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008235#ifdef VK_GOOGLE_create_resources_with_requirements
8236 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8237 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008238 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008239 }
8240 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8241 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008242 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008243 }
8244#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008245#ifdef VK_GOOGLE_address_space_info
8246 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8247 {
8248 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8249 }
8250#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008251 return nullptr;
8252}
8253void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8254 auto resources = ResourceTracker::get();
8255 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8256#ifdef VK_VERSION_1_0
8257 if (!strcmp(name, "vkCreateInstance"))
8258 {
8259 return (void*)entry_vkCreateInstance;
8260 }
8261 if (!strcmp(name, "vkDestroyInstance"))
8262 {
8263 return (void*)entry_vkDestroyInstance;
8264 }
8265 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8266 {
8267 return (void*)entry_vkEnumeratePhysicalDevices;
8268 }
8269 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8270 {
8271 return (void*)entry_vkGetPhysicalDeviceFeatures;
8272 }
8273 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8274 {
8275 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8276 }
8277 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8278 {
8279 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8280 }
8281 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8282 {
8283 return (void*)entry_vkGetPhysicalDeviceProperties;
8284 }
8285 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8286 {
8287 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8288 }
8289 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8290 {
8291 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8292 }
8293 if (!strcmp(name, "vkGetInstanceProcAddr"))
8294 {
8295 return (void*)entry_vkGetInstanceProcAddr;
8296 }
8297 if (!strcmp(name, "vkGetDeviceProcAddr"))
8298 {
8299 return (void*)entry_vkGetDeviceProcAddr;
8300 }
8301 if (!strcmp(name, "vkCreateDevice"))
8302 {
8303 return (void*)entry_vkCreateDevice;
8304 }
8305 if (!strcmp(name, "vkDestroyDevice"))
8306 {
8307 return (void*)entry_vkDestroyDevice;
8308 }
8309 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8310 {
8311 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8312 }
8313 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8314 {
8315 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8316 }
8317 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8318 {
8319 return (void*)entry_vkEnumerateInstanceLayerProperties;
8320 }
8321 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8322 {
8323 return (void*)entry_vkEnumerateDeviceLayerProperties;
8324 }
8325 if (!strcmp(name, "vkGetDeviceQueue"))
8326 {
8327 return (void*)entry_vkGetDeviceQueue;
8328 }
8329 if (!strcmp(name, "vkQueueSubmit"))
8330 {
8331 return (void*)entry_vkQueueSubmit;
8332 }
8333 if (!strcmp(name, "vkQueueWaitIdle"))
8334 {
8335 return (void*)entry_vkQueueWaitIdle;
8336 }
8337 if (!strcmp(name, "vkDeviceWaitIdle"))
8338 {
8339 return (void*)entry_vkDeviceWaitIdle;
8340 }
8341 if (!strcmp(name, "vkAllocateMemory"))
8342 {
8343 return (void*)entry_vkAllocateMemory;
8344 }
8345 if (!strcmp(name, "vkFreeMemory"))
8346 {
8347 return (void*)entry_vkFreeMemory;
8348 }
8349 if (!strcmp(name, "vkMapMemory"))
8350 {
8351 return (void*)entry_vkMapMemory;
8352 }
8353 if (!strcmp(name, "vkUnmapMemory"))
8354 {
8355 return (void*)entry_vkUnmapMemory;
8356 }
8357 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8358 {
8359 return (void*)entry_vkFlushMappedMemoryRanges;
8360 }
8361 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8362 {
8363 return (void*)entry_vkInvalidateMappedMemoryRanges;
8364 }
8365 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8366 {
8367 return (void*)entry_vkGetDeviceMemoryCommitment;
8368 }
8369 if (!strcmp(name, "vkBindBufferMemory"))
8370 {
8371 return (void*)entry_vkBindBufferMemory;
8372 }
8373 if (!strcmp(name, "vkBindImageMemory"))
8374 {
8375 return (void*)entry_vkBindImageMemory;
8376 }
8377 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8378 {
8379 return (void*)entry_vkGetBufferMemoryRequirements;
8380 }
8381 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8382 {
8383 return (void*)entry_vkGetImageMemoryRequirements;
8384 }
8385 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8386 {
8387 return (void*)entry_vkGetImageSparseMemoryRequirements;
8388 }
8389 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8390 {
8391 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8392 }
8393 if (!strcmp(name, "vkQueueBindSparse"))
8394 {
8395 return (void*)entry_vkQueueBindSparse;
8396 }
8397 if (!strcmp(name, "vkCreateFence"))
8398 {
8399 return (void*)entry_vkCreateFence;
8400 }
8401 if (!strcmp(name, "vkDestroyFence"))
8402 {
8403 return (void*)entry_vkDestroyFence;
8404 }
8405 if (!strcmp(name, "vkResetFences"))
8406 {
8407 return (void*)entry_vkResetFences;
8408 }
8409 if (!strcmp(name, "vkGetFenceStatus"))
8410 {
8411 return (void*)entry_vkGetFenceStatus;
8412 }
8413 if (!strcmp(name, "vkWaitForFences"))
8414 {
8415 return (void*)entry_vkWaitForFences;
8416 }
8417 if (!strcmp(name, "vkCreateSemaphore"))
8418 {
8419 return (void*)entry_vkCreateSemaphore;
8420 }
8421 if (!strcmp(name, "vkDestroySemaphore"))
8422 {
8423 return (void*)entry_vkDestroySemaphore;
8424 }
8425 if (!strcmp(name, "vkCreateEvent"))
8426 {
8427 return (void*)entry_vkCreateEvent;
8428 }
8429 if (!strcmp(name, "vkDestroyEvent"))
8430 {
8431 return (void*)entry_vkDestroyEvent;
8432 }
8433 if (!strcmp(name, "vkGetEventStatus"))
8434 {
8435 return (void*)entry_vkGetEventStatus;
8436 }
8437 if (!strcmp(name, "vkSetEvent"))
8438 {
8439 return (void*)entry_vkSetEvent;
8440 }
8441 if (!strcmp(name, "vkResetEvent"))
8442 {
8443 return (void*)entry_vkResetEvent;
8444 }
8445 if (!strcmp(name, "vkCreateQueryPool"))
8446 {
8447 return (void*)entry_vkCreateQueryPool;
8448 }
8449 if (!strcmp(name, "vkDestroyQueryPool"))
8450 {
8451 return (void*)entry_vkDestroyQueryPool;
8452 }
8453 if (!strcmp(name, "vkGetQueryPoolResults"))
8454 {
8455 return (void*)entry_vkGetQueryPoolResults;
8456 }
8457 if (!strcmp(name, "vkCreateBuffer"))
8458 {
8459 return (void*)entry_vkCreateBuffer;
8460 }
8461 if (!strcmp(name, "vkDestroyBuffer"))
8462 {
8463 return (void*)entry_vkDestroyBuffer;
8464 }
8465 if (!strcmp(name, "vkCreateBufferView"))
8466 {
8467 return (void*)entry_vkCreateBufferView;
8468 }
8469 if (!strcmp(name, "vkDestroyBufferView"))
8470 {
8471 return (void*)entry_vkDestroyBufferView;
8472 }
8473 if (!strcmp(name, "vkCreateImage"))
8474 {
8475 return (void*)entry_vkCreateImage;
8476 }
8477 if (!strcmp(name, "vkDestroyImage"))
8478 {
8479 return (void*)entry_vkDestroyImage;
8480 }
8481 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8482 {
8483 return (void*)entry_vkGetImageSubresourceLayout;
8484 }
8485 if (!strcmp(name, "vkCreateImageView"))
8486 {
8487 return (void*)entry_vkCreateImageView;
8488 }
8489 if (!strcmp(name, "vkDestroyImageView"))
8490 {
8491 return (void*)entry_vkDestroyImageView;
8492 }
8493 if (!strcmp(name, "vkCreateShaderModule"))
8494 {
8495 return (void*)entry_vkCreateShaderModule;
8496 }
8497 if (!strcmp(name, "vkDestroyShaderModule"))
8498 {
8499 return (void*)entry_vkDestroyShaderModule;
8500 }
8501 if (!strcmp(name, "vkCreatePipelineCache"))
8502 {
8503 return (void*)entry_vkCreatePipelineCache;
8504 }
8505 if (!strcmp(name, "vkDestroyPipelineCache"))
8506 {
8507 return (void*)entry_vkDestroyPipelineCache;
8508 }
8509 if (!strcmp(name, "vkGetPipelineCacheData"))
8510 {
8511 return (void*)entry_vkGetPipelineCacheData;
8512 }
8513 if (!strcmp(name, "vkMergePipelineCaches"))
8514 {
8515 return (void*)entry_vkMergePipelineCaches;
8516 }
8517 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8518 {
8519 return (void*)entry_vkCreateGraphicsPipelines;
8520 }
8521 if (!strcmp(name, "vkCreateComputePipelines"))
8522 {
8523 return (void*)entry_vkCreateComputePipelines;
8524 }
8525 if (!strcmp(name, "vkDestroyPipeline"))
8526 {
8527 return (void*)entry_vkDestroyPipeline;
8528 }
8529 if (!strcmp(name, "vkCreatePipelineLayout"))
8530 {
8531 return (void*)entry_vkCreatePipelineLayout;
8532 }
8533 if (!strcmp(name, "vkDestroyPipelineLayout"))
8534 {
8535 return (void*)entry_vkDestroyPipelineLayout;
8536 }
8537 if (!strcmp(name, "vkCreateSampler"))
8538 {
8539 return (void*)entry_vkCreateSampler;
8540 }
8541 if (!strcmp(name, "vkDestroySampler"))
8542 {
8543 return (void*)entry_vkDestroySampler;
8544 }
8545 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8546 {
8547 return (void*)entry_vkCreateDescriptorSetLayout;
8548 }
8549 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8550 {
8551 return (void*)entry_vkDestroyDescriptorSetLayout;
8552 }
8553 if (!strcmp(name, "vkCreateDescriptorPool"))
8554 {
8555 return (void*)entry_vkCreateDescriptorPool;
8556 }
8557 if (!strcmp(name, "vkDestroyDescriptorPool"))
8558 {
8559 return (void*)entry_vkDestroyDescriptorPool;
8560 }
8561 if (!strcmp(name, "vkResetDescriptorPool"))
8562 {
8563 return (void*)entry_vkResetDescriptorPool;
8564 }
8565 if (!strcmp(name, "vkAllocateDescriptorSets"))
8566 {
8567 return (void*)entry_vkAllocateDescriptorSets;
8568 }
8569 if (!strcmp(name, "vkFreeDescriptorSets"))
8570 {
8571 return (void*)entry_vkFreeDescriptorSets;
8572 }
8573 if (!strcmp(name, "vkUpdateDescriptorSets"))
8574 {
8575 return (void*)entry_vkUpdateDescriptorSets;
8576 }
8577 if (!strcmp(name, "vkCreateFramebuffer"))
8578 {
8579 return (void*)entry_vkCreateFramebuffer;
8580 }
8581 if (!strcmp(name, "vkDestroyFramebuffer"))
8582 {
8583 return (void*)entry_vkDestroyFramebuffer;
8584 }
8585 if (!strcmp(name, "vkCreateRenderPass"))
8586 {
8587 return (void*)entry_vkCreateRenderPass;
8588 }
8589 if (!strcmp(name, "vkDestroyRenderPass"))
8590 {
8591 return (void*)entry_vkDestroyRenderPass;
8592 }
8593 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8594 {
8595 return (void*)entry_vkGetRenderAreaGranularity;
8596 }
8597 if (!strcmp(name, "vkCreateCommandPool"))
8598 {
8599 return (void*)entry_vkCreateCommandPool;
8600 }
8601 if (!strcmp(name, "vkDestroyCommandPool"))
8602 {
8603 return (void*)entry_vkDestroyCommandPool;
8604 }
8605 if (!strcmp(name, "vkResetCommandPool"))
8606 {
8607 return (void*)entry_vkResetCommandPool;
8608 }
8609 if (!strcmp(name, "vkAllocateCommandBuffers"))
8610 {
8611 return (void*)entry_vkAllocateCommandBuffers;
8612 }
8613 if (!strcmp(name, "vkFreeCommandBuffers"))
8614 {
8615 return (void*)entry_vkFreeCommandBuffers;
8616 }
8617 if (!strcmp(name, "vkBeginCommandBuffer"))
8618 {
8619 return (void*)entry_vkBeginCommandBuffer;
8620 }
8621 if (!strcmp(name, "vkEndCommandBuffer"))
8622 {
8623 return (void*)entry_vkEndCommandBuffer;
8624 }
8625 if (!strcmp(name, "vkResetCommandBuffer"))
8626 {
8627 return (void*)entry_vkResetCommandBuffer;
8628 }
8629 if (!strcmp(name, "vkCmdBindPipeline"))
8630 {
8631 return (void*)entry_vkCmdBindPipeline;
8632 }
8633 if (!strcmp(name, "vkCmdSetViewport"))
8634 {
8635 return (void*)entry_vkCmdSetViewport;
8636 }
8637 if (!strcmp(name, "vkCmdSetScissor"))
8638 {
8639 return (void*)entry_vkCmdSetScissor;
8640 }
8641 if (!strcmp(name, "vkCmdSetLineWidth"))
8642 {
8643 return (void*)entry_vkCmdSetLineWidth;
8644 }
8645 if (!strcmp(name, "vkCmdSetDepthBias"))
8646 {
8647 return (void*)entry_vkCmdSetDepthBias;
8648 }
8649 if (!strcmp(name, "vkCmdSetBlendConstants"))
8650 {
8651 return (void*)entry_vkCmdSetBlendConstants;
8652 }
8653 if (!strcmp(name, "vkCmdSetDepthBounds"))
8654 {
8655 return (void*)entry_vkCmdSetDepthBounds;
8656 }
8657 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8658 {
8659 return (void*)entry_vkCmdSetStencilCompareMask;
8660 }
8661 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8662 {
8663 return (void*)entry_vkCmdSetStencilWriteMask;
8664 }
8665 if (!strcmp(name, "vkCmdSetStencilReference"))
8666 {
8667 return (void*)entry_vkCmdSetStencilReference;
8668 }
8669 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8670 {
8671 return (void*)entry_vkCmdBindDescriptorSets;
8672 }
8673 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8674 {
8675 return (void*)entry_vkCmdBindIndexBuffer;
8676 }
8677 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8678 {
8679 return (void*)entry_vkCmdBindVertexBuffers;
8680 }
8681 if (!strcmp(name, "vkCmdDraw"))
8682 {
8683 return (void*)entry_vkCmdDraw;
8684 }
8685 if (!strcmp(name, "vkCmdDrawIndexed"))
8686 {
8687 return (void*)entry_vkCmdDrawIndexed;
8688 }
8689 if (!strcmp(name, "vkCmdDrawIndirect"))
8690 {
8691 return (void*)entry_vkCmdDrawIndirect;
8692 }
8693 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8694 {
8695 return (void*)entry_vkCmdDrawIndexedIndirect;
8696 }
8697 if (!strcmp(name, "vkCmdDispatch"))
8698 {
8699 return (void*)entry_vkCmdDispatch;
8700 }
8701 if (!strcmp(name, "vkCmdDispatchIndirect"))
8702 {
8703 return (void*)entry_vkCmdDispatchIndirect;
8704 }
8705 if (!strcmp(name, "vkCmdCopyBuffer"))
8706 {
8707 return (void*)entry_vkCmdCopyBuffer;
8708 }
8709 if (!strcmp(name, "vkCmdCopyImage"))
8710 {
8711 return (void*)entry_vkCmdCopyImage;
8712 }
8713 if (!strcmp(name, "vkCmdBlitImage"))
8714 {
8715 return (void*)entry_vkCmdBlitImage;
8716 }
8717 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8718 {
8719 return (void*)entry_vkCmdCopyBufferToImage;
8720 }
8721 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8722 {
8723 return (void*)entry_vkCmdCopyImageToBuffer;
8724 }
8725 if (!strcmp(name, "vkCmdUpdateBuffer"))
8726 {
8727 return (void*)entry_vkCmdUpdateBuffer;
8728 }
8729 if (!strcmp(name, "vkCmdFillBuffer"))
8730 {
8731 return (void*)entry_vkCmdFillBuffer;
8732 }
8733 if (!strcmp(name, "vkCmdClearColorImage"))
8734 {
8735 return (void*)entry_vkCmdClearColorImage;
8736 }
8737 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8738 {
8739 return (void*)entry_vkCmdClearDepthStencilImage;
8740 }
8741 if (!strcmp(name, "vkCmdClearAttachments"))
8742 {
8743 return (void*)entry_vkCmdClearAttachments;
8744 }
8745 if (!strcmp(name, "vkCmdResolveImage"))
8746 {
8747 return (void*)entry_vkCmdResolveImage;
8748 }
8749 if (!strcmp(name, "vkCmdSetEvent"))
8750 {
8751 return (void*)entry_vkCmdSetEvent;
8752 }
8753 if (!strcmp(name, "vkCmdResetEvent"))
8754 {
8755 return (void*)entry_vkCmdResetEvent;
8756 }
8757 if (!strcmp(name, "vkCmdWaitEvents"))
8758 {
8759 return (void*)entry_vkCmdWaitEvents;
8760 }
8761 if (!strcmp(name, "vkCmdPipelineBarrier"))
8762 {
8763 return (void*)entry_vkCmdPipelineBarrier;
8764 }
8765 if (!strcmp(name, "vkCmdBeginQuery"))
8766 {
8767 return (void*)entry_vkCmdBeginQuery;
8768 }
8769 if (!strcmp(name, "vkCmdEndQuery"))
8770 {
8771 return (void*)entry_vkCmdEndQuery;
8772 }
8773 if (!strcmp(name, "vkCmdResetQueryPool"))
8774 {
8775 return (void*)entry_vkCmdResetQueryPool;
8776 }
8777 if (!strcmp(name, "vkCmdWriteTimestamp"))
8778 {
8779 return (void*)entry_vkCmdWriteTimestamp;
8780 }
8781 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8782 {
8783 return (void*)entry_vkCmdCopyQueryPoolResults;
8784 }
8785 if (!strcmp(name, "vkCmdPushConstants"))
8786 {
8787 return (void*)entry_vkCmdPushConstants;
8788 }
8789 if (!strcmp(name, "vkCmdBeginRenderPass"))
8790 {
8791 return (void*)entry_vkCmdBeginRenderPass;
8792 }
8793 if (!strcmp(name, "vkCmdNextSubpass"))
8794 {
8795 return (void*)entry_vkCmdNextSubpass;
8796 }
8797 if (!strcmp(name, "vkCmdEndRenderPass"))
8798 {
8799 return (void*)entry_vkCmdEndRenderPass;
8800 }
8801 if (!strcmp(name, "vkCmdExecuteCommands"))
8802 {
8803 return (void*)entry_vkCmdExecuteCommands;
8804 }
8805#endif
8806#ifdef VK_VERSION_1_1
8807 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8808 {
8809 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8810 }
8811 if (!strcmp(name, "vkBindBufferMemory2"))
8812 {
8813 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8814 }
8815 if (!strcmp(name, "vkBindImageMemory2"))
8816 {
8817 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8818 }
8819 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8820 {
8821 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8822 }
8823 if (!strcmp(name, "vkCmdSetDeviceMask"))
8824 {
8825 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8826 }
8827 if (!strcmp(name, "vkCmdDispatchBase"))
8828 {
8829 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8830 }
8831 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8832 {
8833 return nullptr;
8834 }
8835 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8836 {
8837 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8838 }
8839 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8840 {
8841 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8842 }
8843 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8844 {
8845 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8846 }
8847 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8848 {
8849 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8850 }
8851 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8852 {
8853 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8854 }
8855 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8856 {
8857 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8858 }
8859 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8860 {
8861 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
8862 }
8863 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8864 {
8865 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
8866 }
8867 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8868 {
8869 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
8870 }
8871 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8872 {
8873 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
8874 }
8875 if (!strcmp(name, "vkTrimCommandPool"))
8876 {
8877 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
8878 }
8879 if (!strcmp(name, "vkGetDeviceQueue2"))
8880 {
8881 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
8882 }
8883 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8884 {
8885 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
8886 }
8887 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8888 {
8889 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
8890 }
8891 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8892 {
8893 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
8894 }
8895 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8896 {
8897 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
8898 }
8899 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8900 {
8901 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
8902 }
8903 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8904 {
8905 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
8906 }
8907 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8908 {
8909 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
8910 }
8911 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8912 {
8913 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
8914 }
8915 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8916 {
8917 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
8918 }
8919#endif
8920#ifdef VK_KHR_surface
8921 if (!strcmp(name, "vkDestroySurfaceKHR"))
8922 {
8923 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8924 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
8925 }
8926 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8927 {
8928 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8929 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
8930 }
8931 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8932 {
8933 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8934 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
8935 }
8936 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8937 {
8938 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8939 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
8940 }
8941 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8942 {
8943 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8944 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
8945 }
8946#endif
8947#ifdef VK_KHR_swapchain
8948 if (!strcmp(name, "vkCreateSwapchainKHR"))
8949 {
8950 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8951 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
8952 }
8953 if (!strcmp(name, "vkDestroySwapchainKHR"))
8954 {
8955 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8956 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
8957 }
8958 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8959 {
8960 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8961 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
8962 }
8963 if (!strcmp(name, "vkAcquireNextImageKHR"))
8964 {
8965 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8966 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
8967 }
8968 if (!strcmp(name, "vkQueuePresentKHR"))
8969 {
8970 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8971 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
8972 }
8973 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8974 {
8975 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8976 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
8977 }
8978 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8979 {
8980 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8981 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
8982 }
8983 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8984 {
8985 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8986 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
8987 }
8988 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8989 {
8990 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8991 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
8992 }
8993#endif
8994#ifdef VK_KHR_display
8995 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
8996 {
8997 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
8998 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
8999 }
9000 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9001 {
9002 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9003 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9004 }
9005 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9006 {
9007 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9008 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9009 }
9010 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9011 {
9012 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9013 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9014 }
9015 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9016 {
9017 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9018 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9019 }
9020 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9021 {
9022 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9023 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9024 }
9025 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9026 {
9027 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9028 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9029 }
9030#endif
9031#ifdef VK_KHR_display_swapchain
9032 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9033 {
9034 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9035 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9036 }
9037#endif
9038#ifdef VK_KHR_xlib_surface
9039 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9040 {
9041 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9042 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9043 }
9044 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9045 {
9046 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9047 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9048 }
9049#endif
9050#ifdef VK_KHR_xcb_surface
9051 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9052 {
9053 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9054 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9055 }
9056 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9057 {
9058 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9059 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9060 }
9061#endif
9062#ifdef VK_KHR_wayland_surface
9063 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9064 {
9065 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9066 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9067 }
9068 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9069 {
9070 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9071 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9072 }
9073#endif
9074#ifdef VK_KHR_mir_surface
9075 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9076 {
9077 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9078 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9079 }
9080 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9081 {
9082 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9083 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9084 }
9085#endif
9086#ifdef VK_KHR_android_surface
9087 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9088 {
9089 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9090 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9091 }
9092#endif
9093#ifdef VK_KHR_win32_surface
9094 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9095 {
9096 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9097 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9098 }
9099 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9100 {
9101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9102 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9103 }
9104#endif
9105#ifdef VK_KHR_get_physical_device_properties2
9106 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9107 {
9108 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9109 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9110 }
9111 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9112 {
9113 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9114 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9115 }
9116 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9117 {
9118 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9119 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9120 }
9121 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9122 {
9123 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9124 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9125 }
9126 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9127 {
9128 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9129 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9130 }
9131 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9132 {
9133 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9134 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9135 }
9136 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9137 {
9138 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9139 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9140 }
9141#endif
9142#ifdef VK_KHR_device_group
9143 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9144 {
9145 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9146 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9147 }
9148 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9149 {
9150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9151 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9152 }
9153 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9154 {
9155 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9156 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9157 }
9158#endif
9159#ifdef VK_KHR_maintenance1
9160 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9161 {
9162 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9163 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9164 }
9165#endif
9166#ifdef VK_KHR_device_group_creation
9167 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9168 {
9169 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9170 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9171 }
9172#endif
9173#ifdef VK_KHR_external_memory_capabilities
9174 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9175 {
9176 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9177 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9178 }
9179#endif
9180#ifdef VK_KHR_external_memory_win32
9181 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9182 {
9183 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9184 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9185 }
9186 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9187 {
9188 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9189 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9190 }
9191#endif
9192#ifdef VK_KHR_external_memory_fd
9193 if (!strcmp(name, "vkGetMemoryFdKHR"))
9194 {
9195 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9196 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9197 }
9198 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9199 {
9200 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9201 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9202 }
9203#endif
9204#ifdef VK_KHR_external_semaphore_capabilities
9205 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9206 {
9207 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9208 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9209 }
9210#endif
9211#ifdef VK_KHR_external_semaphore_win32
9212 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9213 {
9214 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9215 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9216 }
9217 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9218 {
9219 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9220 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9221 }
9222#endif
9223#ifdef VK_KHR_external_semaphore_fd
9224 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9225 {
9226 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9227 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9228 }
9229 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9230 {
9231 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9232 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9233 }
9234#endif
9235#ifdef VK_KHR_push_descriptor
9236 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9237 {
9238 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9239 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9240 }
9241 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9242 {
9243 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9244 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9245 }
9246#endif
9247#ifdef VK_KHR_descriptor_update_template
9248 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9249 {
9250 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9251 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9252 }
9253 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9254 {
9255 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9256 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9257 }
9258 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9259 {
9260 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9261 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9262 }
9263#endif
9264#ifdef VK_KHR_create_renderpass2
9265 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9266 {
9267 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9268 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9269 }
9270 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9271 {
9272 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9273 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9274 }
9275 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9276 {
9277 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9278 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9279 }
9280 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9281 {
9282 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9283 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9284 }
9285#endif
9286#ifdef VK_KHR_shared_presentable_image
9287 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9288 {
9289 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9290 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9291 }
9292#endif
9293#ifdef VK_KHR_external_fence_capabilities
9294 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9295 {
9296 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9297 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9298 }
9299#endif
9300#ifdef VK_KHR_external_fence_win32
9301 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9302 {
9303 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9304 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9305 }
9306 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9307 {
9308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9309 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9310 }
9311#endif
9312#ifdef VK_KHR_external_fence_fd
9313 if (!strcmp(name, "vkImportFenceFdKHR"))
9314 {
9315 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9316 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9317 }
9318 if (!strcmp(name, "vkGetFenceFdKHR"))
9319 {
9320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9321 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9322 }
9323#endif
9324#ifdef VK_KHR_get_surface_capabilities2
9325 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9326 {
9327 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9328 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9329 }
9330 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9331 {
9332 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9333 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9334 }
9335#endif
9336#ifdef VK_KHR_get_display_properties2
9337 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9338 {
9339 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9340 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9341 }
9342 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9343 {
9344 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9345 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9346 }
9347 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9348 {
9349 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9350 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9351 }
9352 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9353 {
9354 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9355 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9356 }
9357#endif
9358#ifdef VK_KHR_get_memory_requirements2
9359 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9360 {
9361 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9362 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9363 }
9364 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9365 {
9366 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9367 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9368 }
9369 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9370 {
9371 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9372 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9373 }
9374#endif
9375#ifdef VK_KHR_sampler_ycbcr_conversion
9376 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9377 {
9378 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9379 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9380 }
9381 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9382 {
9383 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9384 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9385 }
9386#endif
9387#ifdef VK_KHR_bind_memory2
9388 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9389 {
9390 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9391 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9392 }
9393 if (!strcmp(name, "vkBindImageMemory2KHR"))
9394 {
9395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9396 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9397 }
9398#endif
9399#ifdef VK_KHR_maintenance3
9400 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9401 {
9402 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9403 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9404 }
9405#endif
9406#ifdef VK_KHR_draw_indirect_count
9407 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9408 {
9409 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9410 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9411 }
9412 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9413 {
9414 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9415 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9416 }
9417#endif
9418#ifdef VK_ANDROID_native_buffer
9419 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9420 {
9421 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9422 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9423 }
9424 if (!strcmp(name, "vkAcquireImageANDROID"))
9425 {
9426 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9427 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9428 }
9429 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9430 {
9431 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9432 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9433 }
9434#endif
9435#ifdef VK_EXT_debug_report
9436 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9437 {
9438 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9439 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9440 }
9441 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9442 {
9443 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9444 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9445 }
9446 if (!strcmp(name, "vkDebugReportMessageEXT"))
9447 {
9448 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9449 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9450 }
9451#endif
9452#ifdef VK_EXT_debug_marker
9453 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9454 {
9455 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9456 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9457 }
9458 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9459 {
9460 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9461 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9462 }
9463 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9464 {
9465 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9466 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9467 }
9468 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9469 {
9470 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9471 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9472 }
9473 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9474 {
9475 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9476 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9477 }
9478#endif
9479#ifdef VK_AMD_draw_indirect_count
9480 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9481 {
9482 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9483 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9484 }
9485 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9486 {
9487 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9488 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9489 }
9490#endif
9491#ifdef VK_AMD_shader_info
9492 if (!strcmp(name, "vkGetShaderInfoAMD"))
9493 {
9494 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9495 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9496 }
9497#endif
9498#ifdef VK_NV_external_memory_capabilities
9499 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9500 {
9501 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9502 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9503 }
9504#endif
9505#ifdef VK_NV_external_memory_win32
9506 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9507 {
9508 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9509 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9510 }
9511#endif
9512#ifdef VK_NN_vi_surface
9513 if (!strcmp(name, "vkCreateViSurfaceNN"))
9514 {
9515 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9516 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9517 }
9518#endif
9519#ifdef VK_EXT_conditional_rendering
9520 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9521 {
9522 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9523 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9524 }
9525 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9526 {
9527 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9528 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9529 }
9530#endif
9531#ifdef VK_NVX_device_generated_commands
9532 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9533 {
9534 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9535 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9536 }
9537 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9538 {
9539 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9540 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9541 }
9542 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9543 {
9544 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9545 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9546 }
9547 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9548 {
9549 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9550 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9551 }
9552 if (!strcmp(name, "vkCreateObjectTableNVX"))
9553 {
9554 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9555 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9556 }
9557 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9558 {
9559 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9560 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9561 }
9562 if (!strcmp(name, "vkRegisterObjectsNVX"))
9563 {
9564 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9565 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9566 }
9567 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9568 {
9569 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9570 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9571 }
9572 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9573 {
9574 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9575 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9576 }
9577#endif
9578#ifdef VK_NV_clip_space_w_scaling
9579 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9580 {
9581 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9582 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9583 }
9584#endif
9585#ifdef VK_EXT_direct_mode_display
9586 if (!strcmp(name, "vkReleaseDisplayEXT"))
9587 {
9588 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9589 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9590 }
9591#endif
9592#ifdef VK_EXT_acquire_xlib_display
9593 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9594 {
9595 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9596 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9597 }
9598 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9599 {
9600 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9601 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9602 }
9603#endif
9604#ifdef VK_EXT_display_surface_counter
9605 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9606 {
9607 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9608 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9609 }
9610#endif
9611#ifdef VK_EXT_display_control
9612 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9613 {
9614 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9615 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9616 }
9617 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9618 {
9619 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9620 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9621 }
9622 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9623 {
9624 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9625 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9626 }
9627 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9628 {
9629 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9630 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9631 }
9632#endif
9633#ifdef VK_GOOGLE_display_timing
9634 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9635 {
9636 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9637 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9638 }
9639 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9640 {
9641 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9642 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9643 }
9644#endif
9645#ifdef VK_EXT_discard_rectangles
9646 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9647 {
9648 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9649 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9650 }
9651#endif
9652#ifdef VK_EXT_hdr_metadata
9653 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9654 {
9655 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9656 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9657 }
9658#endif
9659#ifdef VK_MVK_ios_surface
9660 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9661 {
9662 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9663 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9664 }
9665#endif
9666#ifdef VK_MVK_macos_surface
9667 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9668 {
9669 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9670 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9671 }
9672#endif
9673#ifdef VK_EXT_debug_utils
9674 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9675 {
9676 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9677 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9678 }
9679 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9680 {
9681 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9682 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9683 }
9684 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9685 {
9686 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9687 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9688 }
9689 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9690 {
9691 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9692 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9693 }
9694 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9695 {
9696 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9697 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9698 }
9699 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9700 {
9701 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9702 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9703 }
9704 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9705 {
9706 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9707 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9708 }
9709 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9710 {
9711 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9712 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9713 }
9714 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9715 {
9716 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9717 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9718 }
9719 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9720 {
9721 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9722 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9723 }
9724 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9725 {
9726 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9727 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9728 }
9729#endif
9730#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9731 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9732 {
9733 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9734 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9735 }
9736 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9737 {
9738 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9739 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9740 }
9741#endif
9742#ifdef VK_EXT_sample_locations
9743 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9744 {
9745 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9746 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9747 }
9748 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9749 {
9750 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9751 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9752 }
9753#endif
9754#ifdef VK_EXT_validation_cache
9755 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9756 {
9757 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9758 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9759 }
9760 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9761 {
9762 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9763 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9764 }
9765 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9766 {
9767 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9768 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9769 }
9770 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9771 {
9772 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9773 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9774 }
9775#endif
9776#ifdef VK_EXT_external_memory_host
9777 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9778 {
9779 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9780 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9781 }
9782#endif
9783#ifdef VK_AMD_buffer_marker
9784 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9785 {
9786 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9787 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9788 }
9789#endif
9790#ifdef VK_NV_device_diagnostic_checkpoints
9791 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9792 {
9793 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9794 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9795 }
9796 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9797 {
9798 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9799 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9800 }
9801#endif
9802#ifdef VK_GOOGLE_address_space
9803 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9804 {
9805 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9806 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009807 }
9808#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009809#ifdef VK_GOOGLE_color_buffer
9810 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9811 {
9812 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9813 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9814 }
9815 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9816 {
9817 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9818 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9819 }
9820#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009821#ifdef VK_GOOGLE_sized_descriptor_update_template
9822 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9823 {
9824 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9825 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9826 }
9827#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009828#ifdef VK_GOOGLE_async_command_buffers
9829 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9830 {
9831 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9832 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9833 }
9834 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9835 {
9836 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9837 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9838 }
9839 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9840 {
9841 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9842 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9843 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009844 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9845 {
9846 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9847 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9848 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009849#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009850#ifdef VK_GOOGLE_create_resources_with_requirements
9851 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9852 {
9853 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9854 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9855 }
9856 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9857 {
9858 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9859 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
9860 }
9861#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08009862#ifdef VK_GOOGLE_address_space_info
9863 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9864 {
9865 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
9866 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
9867 }
9868#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009869 return nullptr;
9870}
9871
9872} // namespace goldfish_vk