blob: 4e02b93eec1b524c95bb877ef3b579218c7bf440 [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;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700869 auto resources = ResourceTracker::get();
870 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800871 return vkCreateDescriptorPool_VkResult_return;
872}
873static void entry_vkDestroyDescriptorPool(
874 VkDevice device,
875 VkDescriptorPool descriptorPool,
876 const VkAllocationCallbacks* pAllocator)
877{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800878 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800879 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700880 auto resources = ResourceTracker::get();
881 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800882}
883static VkResult entry_vkResetDescriptorPool(
884 VkDevice device,
885 VkDescriptorPool descriptorPool,
886 VkDescriptorPoolResetFlags flags)
887{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800888 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800889 auto vkEnc = HostConnection::get()->vkEncoder();
890 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700891 auto resources = ResourceTracker::get();
892 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800893 return vkResetDescriptorPool_VkResult_return;
894}
895static VkResult entry_vkAllocateDescriptorSets(
896 VkDevice device,
897 const VkDescriptorSetAllocateInfo* pAllocateInfo,
898 VkDescriptorSet* pDescriptorSets)
899{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800900 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800901 auto vkEnc = HostConnection::get()->vkEncoder();
902 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700903 auto resources = ResourceTracker::get();
904 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800905 return vkAllocateDescriptorSets_VkResult_return;
906}
907static VkResult entry_vkFreeDescriptorSets(
908 VkDevice device,
909 VkDescriptorPool descriptorPool,
910 uint32_t descriptorSetCount,
911 const VkDescriptorSet* pDescriptorSets)
912{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800913 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800914 auto vkEnc = HostConnection::get()->vkEncoder();
915 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700916 auto resources = ResourceTracker::get();
917 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800918 return vkFreeDescriptorSets_VkResult_return;
919}
920static void entry_vkUpdateDescriptorSets(
921 VkDevice device,
922 uint32_t descriptorWriteCount,
923 const VkWriteDescriptorSet* pDescriptorWrites,
924 uint32_t descriptorCopyCount,
925 const VkCopyDescriptorSet* pDescriptorCopies)
926{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800927 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800928 auto vkEnc = HostConnection::get()->vkEncoder();
929 vkEnc->vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
930}
931static VkResult entry_vkCreateFramebuffer(
932 VkDevice device,
933 const VkFramebufferCreateInfo* pCreateInfo,
934 const VkAllocationCallbacks* pAllocator,
935 VkFramebuffer* pFramebuffer)
936{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800937 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800938 auto vkEnc = HostConnection::get()->vkEncoder();
939 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
940 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
941 return vkCreateFramebuffer_VkResult_return;
942}
943static void entry_vkDestroyFramebuffer(
944 VkDevice device,
945 VkFramebuffer framebuffer,
946 const VkAllocationCallbacks* pAllocator)
947{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800948 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800949 auto vkEnc = HostConnection::get()->vkEncoder();
950 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator);
951}
952static VkResult entry_vkCreateRenderPass(
953 VkDevice device,
954 const VkRenderPassCreateInfo* pCreateInfo,
955 const VkAllocationCallbacks* pAllocator,
956 VkRenderPass* pRenderPass)
957{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800958 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800959 auto vkEnc = HostConnection::get()->vkEncoder();
960 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
961 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
962 return vkCreateRenderPass_VkResult_return;
963}
964static void entry_vkDestroyRenderPass(
965 VkDevice device,
966 VkRenderPass renderPass,
967 const VkAllocationCallbacks* pAllocator)
968{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800969 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800970 auto vkEnc = HostConnection::get()->vkEncoder();
971 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator);
972}
973static void entry_vkGetRenderAreaGranularity(
974 VkDevice device,
975 VkRenderPass renderPass,
976 VkExtent2D* pGranularity)
977{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800978 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800979 auto vkEnc = HostConnection::get()->vkEncoder();
980 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity);
981}
982static VkResult entry_vkCreateCommandPool(
983 VkDevice device,
984 const VkCommandPoolCreateInfo* pCreateInfo,
985 const VkAllocationCallbacks* pAllocator,
986 VkCommandPool* pCommandPool)
987{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800988 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800989 auto vkEnc = HostConnection::get()->vkEncoder();
990 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
991 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
992 return vkCreateCommandPool_VkResult_return;
993}
994static void entry_vkDestroyCommandPool(
995 VkDevice device,
996 VkCommandPool commandPool,
997 const VkAllocationCallbacks* pAllocator)
998{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800999 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001000 auto vkEnc = HostConnection::get()->vkEncoder();
1001 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator);
1002}
1003static VkResult entry_vkResetCommandPool(
1004 VkDevice device,
1005 VkCommandPool commandPool,
1006 VkCommandPoolResetFlags flags)
1007{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001008 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001009 auto vkEnc = HostConnection::get()->vkEncoder();
1010 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
1011 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags);
1012 return vkResetCommandPool_VkResult_return;
1013}
1014static VkResult entry_vkAllocateCommandBuffers(
1015 VkDevice device,
1016 const VkCommandBufferAllocateInfo* pAllocateInfo,
1017 VkCommandBuffer* pCommandBuffers)
1018{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001019 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001020 auto vkEnc = HostConnection::get()->vkEncoder();
1021 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1022 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
1023 return vkAllocateCommandBuffers_VkResult_return;
1024}
1025static void entry_vkFreeCommandBuffers(
1026 VkDevice device,
1027 VkCommandPool commandPool,
1028 uint32_t commandBufferCount,
1029 const VkCommandBuffer* pCommandBuffers)
1030{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001031 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001032 auto vkEnc = HostConnection::get()->vkEncoder();
1033 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
1034}
1035static VkResult entry_vkBeginCommandBuffer(
1036 VkCommandBuffer commandBuffer,
1037 const VkCommandBufferBeginInfo* pBeginInfo)
1038{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001039 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001040 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001041 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001042 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001043 auto resources = ResourceTracker::get();
1044 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001045 return vkBeginCommandBuffer_VkResult_return;
1046}
1047static VkResult entry_vkEndCommandBuffer(
1048 VkCommandBuffer commandBuffer)
1049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001050 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001051 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001052 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001053 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001054 auto resources = ResourceTracker::get();
1055 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001056 return vkEndCommandBuffer_VkResult_return;
1057}
1058static VkResult entry_vkResetCommandBuffer(
1059 VkCommandBuffer commandBuffer,
1060 VkCommandBufferResetFlags flags)
1061{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001062 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001063 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001064 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001065 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001066 auto resources = ResourceTracker::get();
1067 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001068 return vkResetCommandBuffer_VkResult_return;
1069}
1070static void entry_vkCmdBindPipeline(
1071 VkCommandBuffer commandBuffer,
1072 VkPipelineBindPoint pipelineBindPoint,
1073 VkPipeline pipeline)
1074{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001075 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001076 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001077 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001078 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
1079}
1080static void entry_vkCmdSetViewport(
1081 VkCommandBuffer commandBuffer,
1082 uint32_t firstViewport,
1083 uint32_t viewportCount,
1084 const VkViewport* pViewports)
1085{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001086 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001087 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001088 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001089 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
1090}
1091static void entry_vkCmdSetScissor(
1092 VkCommandBuffer commandBuffer,
1093 uint32_t firstScissor,
1094 uint32_t scissorCount,
1095 const VkRect2D* pScissors)
1096{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001097 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001098 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001099 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001100 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
1101}
1102static void entry_vkCmdSetLineWidth(
1103 VkCommandBuffer commandBuffer,
1104 float lineWidth)
1105{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001106 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001107 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001108 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001109 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth);
1110}
1111static void entry_vkCmdSetDepthBias(
1112 VkCommandBuffer commandBuffer,
1113 float depthBiasConstantFactor,
1114 float depthBiasClamp,
1115 float depthBiasSlopeFactor)
1116{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001117 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001118 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001119 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001120 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1121}
1122static void entry_vkCmdSetBlendConstants(
1123 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001124 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001125{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001126 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001127 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001128 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001129 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants);
1130}
1131static void entry_vkCmdSetDepthBounds(
1132 VkCommandBuffer commandBuffer,
1133 float minDepthBounds,
1134 float maxDepthBounds)
1135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001136 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001137 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001138 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001139 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1140}
1141static void entry_vkCmdSetStencilCompareMask(
1142 VkCommandBuffer commandBuffer,
1143 VkStencilFaceFlags faceMask,
1144 uint32_t compareMask)
1145{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001146 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001147 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001148 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001149 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1150}
1151static void entry_vkCmdSetStencilWriteMask(
1152 VkCommandBuffer commandBuffer,
1153 VkStencilFaceFlags faceMask,
1154 uint32_t writeMask)
1155{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001156 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001157 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001158 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001159 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1160}
1161static void entry_vkCmdSetStencilReference(
1162 VkCommandBuffer commandBuffer,
1163 VkStencilFaceFlags faceMask,
1164 uint32_t reference)
1165{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001166 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001167 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001168 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001169 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference);
1170}
1171static void entry_vkCmdBindDescriptorSets(
1172 VkCommandBuffer commandBuffer,
1173 VkPipelineBindPoint pipelineBindPoint,
1174 VkPipelineLayout layout,
1175 uint32_t firstSet,
1176 uint32_t descriptorSetCount,
1177 const VkDescriptorSet* pDescriptorSets,
1178 uint32_t dynamicOffsetCount,
1179 const uint32_t* pDynamicOffsets)
1180{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001181 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001182 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001183 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001184 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1185}
1186static void entry_vkCmdBindIndexBuffer(
1187 VkCommandBuffer commandBuffer,
1188 VkBuffer buffer,
1189 VkDeviceSize offset,
1190 VkIndexType indexType)
1191{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001192 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001193 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001194 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001195 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1196}
1197static void entry_vkCmdBindVertexBuffers(
1198 VkCommandBuffer commandBuffer,
1199 uint32_t firstBinding,
1200 uint32_t bindingCount,
1201 const VkBuffer* pBuffers,
1202 const VkDeviceSize* pOffsets)
1203{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001204 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001205 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001206 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001207 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1208}
1209static void entry_vkCmdDraw(
1210 VkCommandBuffer commandBuffer,
1211 uint32_t vertexCount,
1212 uint32_t instanceCount,
1213 uint32_t firstVertex,
1214 uint32_t firstInstance)
1215{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001216 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001217 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001218 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001219 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1220}
1221static void entry_vkCmdDrawIndexed(
1222 VkCommandBuffer commandBuffer,
1223 uint32_t indexCount,
1224 uint32_t instanceCount,
1225 uint32_t firstIndex,
1226 int32_t vertexOffset,
1227 uint32_t firstInstance)
1228{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001229 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001230 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001231 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001232 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1233}
1234static void entry_vkCmdDrawIndirect(
1235 VkCommandBuffer commandBuffer,
1236 VkBuffer buffer,
1237 VkDeviceSize offset,
1238 uint32_t drawCount,
1239 uint32_t stride)
1240{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001241 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001242 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001243 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001244 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1245}
1246static void entry_vkCmdDrawIndexedIndirect(
1247 VkCommandBuffer commandBuffer,
1248 VkBuffer buffer,
1249 VkDeviceSize offset,
1250 uint32_t drawCount,
1251 uint32_t stride)
1252{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001253 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001254 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001255 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001256 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1257}
1258static void entry_vkCmdDispatch(
1259 VkCommandBuffer commandBuffer,
1260 uint32_t groupCountX,
1261 uint32_t groupCountY,
1262 uint32_t groupCountZ)
1263{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001264 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001265 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001266 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001267 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
1268}
1269static void entry_vkCmdDispatchIndirect(
1270 VkCommandBuffer commandBuffer,
1271 VkBuffer buffer,
1272 VkDeviceSize offset)
1273{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001274 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001275 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001276 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001277 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset);
1278}
1279static void entry_vkCmdCopyBuffer(
1280 VkCommandBuffer commandBuffer,
1281 VkBuffer srcBuffer,
1282 VkBuffer dstBuffer,
1283 uint32_t regionCount,
1284 const VkBufferCopy* pRegions)
1285{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001286 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001287 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001288 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001289 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1290}
1291static void entry_vkCmdCopyImage(
1292 VkCommandBuffer commandBuffer,
1293 VkImage srcImage,
1294 VkImageLayout srcImageLayout,
1295 VkImage dstImage,
1296 VkImageLayout dstImageLayout,
1297 uint32_t regionCount,
1298 const VkImageCopy* pRegions)
1299{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001300 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001301 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001302 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001303 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1304}
1305static void entry_vkCmdBlitImage(
1306 VkCommandBuffer commandBuffer,
1307 VkImage srcImage,
1308 VkImageLayout srcImageLayout,
1309 VkImage dstImage,
1310 VkImageLayout dstImageLayout,
1311 uint32_t regionCount,
1312 const VkImageBlit* pRegions,
1313 VkFilter filter)
1314{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001315 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001316 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001317 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001318 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1319}
1320static void entry_vkCmdCopyBufferToImage(
1321 VkCommandBuffer commandBuffer,
1322 VkBuffer srcBuffer,
1323 VkImage dstImage,
1324 VkImageLayout dstImageLayout,
1325 uint32_t regionCount,
1326 const VkBufferImageCopy* pRegions)
1327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001328 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001329 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001330 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001331 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1332}
1333static void entry_vkCmdCopyImageToBuffer(
1334 VkCommandBuffer commandBuffer,
1335 VkImage srcImage,
1336 VkImageLayout srcImageLayout,
1337 VkBuffer dstBuffer,
1338 uint32_t regionCount,
1339 const VkBufferImageCopy* pRegions)
1340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001341 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001342 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001343 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001344 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1345}
1346static void entry_vkCmdUpdateBuffer(
1347 VkCommandBuffer commandBuffer,
1348 VkBuffer dstBuffer,
1349 VkDeviceSize dstOffset,
1350 VkDeviceSize dataSize,
1351 const void* pData)
1352{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001353 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001354 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001355 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001356 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1357}
1358static void entry_vkCmdFillBuffer(
1359 VkCommandBuffer commandBuffer,
1360 VkBuffer dstBuffer,
1361 VkDeviceSize dstOffset,
1362 VkDeviceSize size,
1363 uint32_t data)
1364{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001365 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001366 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001367 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001368 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1369}
1370static void entry_vkCmdClearColorImage(
1371 VkCommandBuffer commandBuffer,
1372 VkImage image,
1373 VkImageLayout imageLayout,
1374 const VkClearColorValue* pColor,
1375 uint32_t rangeCount,
1376 const VkImageSubresourceRange* pRanges)
1377{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001378 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001379 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001380 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001381 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1382}
1383static void entry_vkCmdClearDepthStencilImage(
1384 VkCommandBuffer commandBuffer,
1385 VkImage image,
1386 VkImageLayout imageLayout,
1387 const VkClearDepthStencilValue* pDepthStencil,
1388 uint32_t rangeCount,
1389 const VkImageSubresourceRange* pRanges)
1390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001391 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001392 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001393 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001394 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1395}
1396static void entry_vkCmdClearAttachments(
1397 VkCommandBuffer commandBuffer,
1398 uint32_t attachmentCount,
1399 const VkClearAttachment* pAttachments,
1400 uint32_t rectCount,
1401 const VkClearRect* pRects)
1402{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001403 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001404 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001405 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001406 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1407}
1408static void entry_vkCmdResolveImage(
1409 VkCommandBuffer commandBuffer,
1410 VkImage srcImage,
1411 VkImageLayout srcImageLayout,
1412 VkImage dstImage,
1413 VkImageLayout dstImageLayout,
1414 uint32_t regionCount,
1415 const VkImageResolve* pRegions)
1416{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001417 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001418 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001419 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001420 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1421}
1422static void entry_vkCmdSetEvent(
1423 VkCommandBuffer commandBuffer,
1424 VkEvent event,
1425 VkPipelineStageFlags stageMask)
1426{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001427 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001428 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001429 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001430 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask);
1431}
1432static void entry_vkCmdResetEvent(
1433 VkCommandBuffer commandBuffer,
1434 VkEvent event,
1435 VkPipelineStageFlags stageMask)
1436{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001437 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001438 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001439 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001440 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask);
1441}
1442static void entry_vkCmdWaitEvents(
1443 VkCommandBuffer commandBuffer,
1444 uint32_t eventCount,
1445 const VkEvent* pEvents,
1446 VkPipelineStageFlags srcStageMask,
1447 VkPipelineStageFlags dstStageMask,
1448 uint32_t memoryBarrierCount,
1449 const VkMemoryBarrier* pMemoryBarriers,
1450 uint32_t bufferMemoryBarrierCount,
1451 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1452 uint32_t imageMemoryBarrierCount,
1453 const VkImageMemoryBarrier* pImageMemoryBarriers)
1454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001455 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001456 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001457 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001458 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1459}
1460static void entry_vkCmdPipelineBarrier(
1461 VkCommandBuffer commandBuffer,
1462 VkPipelineStageFlags srcStageMask,
1463 VkPipelineStageFlags dstStageMask,
1464 VkDependencyFlags dependencyFlags,
1465 uint32_t memoryBarrierCount,
1466 const VkMemoryBarrier* pMemoryBarriers,
1467 uint32_t bufferMemoryBarrierCount,
1468 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1469 uint32_t imageMemoryBarrierCount,
1470 const VkImageMemoryBarrier* pImageMemoryBarriers)
1471{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001472 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001473 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001474 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001475 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1476}
1477static void entry_vkCmdBeginQuery(
1478 VkCommandBuffer commandBuffer,
1479 VkQueryPool queryPool,
1480 uint32_t query,
1481 VkQueryControlFlags flags)
1482{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001483 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001484 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001485 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001486 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags);
1487}
1488static void entry_vkCmdEndQuery(
1489 VkCommandBuffer commandBuffer,
1490 VkQueryPool queryPool,
1491 uint32_t query)
1492{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001493 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001494 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001495 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001496 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query);
1497}
1498static void entry_vkCmdResetQueryPool(
1499 VkCommandBuffer commandBuffer,
1500 VkQueryPool queryPool,
1501 uint32_t firstQuery,
1502 uint32_t queryCount)
1503{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001504 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001505 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001506 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001507 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1508}
1509static void entry_vkCmdWriteTimestamp(
1510 VkCommandBuffer commandBuffer,
1511 VkPipelineStageFlagBits pipelineStage,
1512 VkQueryPool queryPool,
1513 uint32_t query)
1514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001515 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001516 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001517 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001518 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1519}
1520static void entry_vkCmdCopyQueryPoolResults(
1521 VkCommandBuffer commandBuffer,
1522 VkQueryPool queryPool,
1523 uint32_t firstQuery,
1524 uint32_t queryCount,
1525 VkBuffer dstBuffer,
1526 VkDeviceSize dstOffset,
1527 VkDeviceSize stride,
1528 VkQueryResultFlags flags)
1529{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001530 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001531 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001532 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001533 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1534}
1535static void entry_vkCmdPushConstants(
1536 VkCommandBuffer commandBuffer,
1537 VkPipelineLayout layout,
1538 VkShaderStageFlags stageFlags,
1539 uint32_t offset,
1540 uint32_t size,
1541 const void* pValues)
1542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001543 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001544 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001545 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001546 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1547}
1548static void entry_vkCmdBeginRenderPass(
1549 VkCommandBuffer commandBuffer,
1550 const VkRenderPassBeginInfo* pRenderPassBegin,
1551 VkSubpassContents contents)
1552{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001553 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001554 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001555 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001556 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1557}
1558static void entry_vkCmdNextSubpass(
1559 VkCommandBuffer commandBuffer,
1560 VkSubpassContents contents)
1561{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001562 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001563 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001564 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001565 vkEnc->vkCmdNextSubpass(commandBuffer, contents);
1566}
1567static void entry_vkCmdEndRenderPass(
1568 VkCommandBuffer commandBuffer)
1569{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001570 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001571 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001572 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001573 vkEnc->vkCmdEndRenderPass(commandBuffer);
1574}
1575static void entry_vkCmdExecuteCommands(
1576 VkCommandBuffer commandBuffer,
1577 uint32_t commandBufferCount,
1578 const VkCommandBuffer* pCommandBuffers)
1579{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001580 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001581 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001582 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001583 vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1584}
1585#endif
1586#ifdef VK_VERSION_1_1
1587static VkResult entry_vkEnumerateInstanceVersion(
1588 uint32_t* pApiVersion)
1589{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001590 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001591 auto vkEnc = HostConnection::get()->vkEncoder();
1592 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1593 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion);
1594 return vkEnumerateInstanceVersion_VkResult_return;
1595}
1596static VkResult entry_vkBindBufferMemory2(
1597 VkDevice device,
1598 uint32_t bindInfoCount,
1599 const VkBindBufferMemoryInfo* pBindInfos)
1600{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001601 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001602 auto vkEnc = HostConnection::get()->vkEncoder();
1603 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001604 auto resources = ResourceTracker::get();
1605 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001606 return vkBindBufferMemory2_VkResult_return;
1607}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001608static VkResult dynCheck_entry_vkBindBufferMemory2(
1609 VkDevice device,
1610 uint32_t bindInfoCount,
1611 const VkBindBufferMemoryInfo* pBindInfos)
1612{
1613 auto resources = ResourceTracker::get();
1614 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1615 {
1616 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1617 }
1618 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1619 auto vkEnc = HostConnection::get()->vkEncoder();
1620 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1621 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1622 return vkBindBufferMemory2_VkResult_return;
1623}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001624static VkResult entry_vkBindImageMemory2(
1625 VkDevice device,
1626 uint32_t bindInfoCount,
1627 const VkBindImageMemoryInfo* pBindInfos)
1628{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001629 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001630 auto vkEnc = HostConnection::get()->vkEncoder();
1631 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001632 auto resources = ResourceTracker::get();
1633 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001634 return vkBindImageMemory2_VkResult_return;
1635}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001636static VkResult dynCheck_entry_vkBindImageMemory2(
1637 VkDevice device,
1638 uint32_t bindInfoCount,
1639 const VkBindImageMemoryInfo* pBindInfos)
1640{
1641 auto resources = ResourceTracker::get();
1642 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1643 {
1644 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1645 }
1646 AEMU_SCOPED_TRACE("vkBindImageMemory2");
1647 auto vkEnc = HostConnection::get()->vkEncoder();
1648 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1649 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1650 return vkBindImageMemory2_VkResult_return;
1651}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001652static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1653 VkDevice device,
1654 uint32_t heapIndex,
1655 uint32_t localDeviceIndex,
1656 uint32_t remoteDeviceIndex,
1657 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1658{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001659 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001660 auto vkEnc = HostConnection::get()->vkEncoder();
1661 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1662}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001663static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1664 VkDevice device,
1665 uint32_t heapIndex,
1666 uint32_t localDeviceIndex,
1667 uint32_t remoteDeviceIndex,
1668 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1669{
1670 auto resources = ResourceTracker::get();
1671 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1672 {
1673 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1674 }
1675 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1676 auto vkEnc = HostConnection::get()->vkEncoder();
1677 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1678}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001679static void entry_vkCmdSetDeviceMask(
1680 VkCommandBuffer commandBuffer,
1681 uint32_t deviceMask)
1682{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001683 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001684 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001685 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001686 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask);
1687}
1688static void entry_vkCmdDispatchBase(
1689 VkCommandBuffer commandBuffer,
1690 uint32_t baseGroupX,
1691 uint32_t baseGroupY,
1692 uint32_t baseGroupZ,
1693 uint32_t groupCountX,
1694 uint32_t groupCountY,
1695 uint32_t groupCountZ)
1696{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001697 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001698 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001699 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001700 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1701}
1702static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1703 VkInstance instance,
1704 uint32_t* pPhysicalDeviceGroupCount,
1705 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1706{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001707 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001708 auto vkEnc = HostConnection::get()->vkEncoder();
1709 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1710 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1711 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1712}
1713static void entry_vkGetImageMemoryRequirements2(
1714 VkDevice device,
1715 const VkImageMemoryRequirementsInfo2* pInfo,
1716 VkMemoryRequirements2* pMemoryRequirements)
1717{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001718 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001719 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001720 auto resources = ResourceTracker::get();
1721 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001722}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001723static void dynCheck_entry_vkGetImageMemoryRequirements2(
1724 VkDevice device,
1725 const VkImageMemoryRequirementsInfo2* pInfo,
1726 VkMemoryRequirements2* pMemoryRequirements)
1727{
1728 auto resources = ResourceTracker::get();
1729 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1730 {
1731 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1732 }
1733 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1734 auto vkEnc = HostConnection::get()->vkEncoder();
1735 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1736}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001737static void entry_vkGetBufferMemoryRequirements2(
1738 VkDevice device,
1739 const VkBufferMemoryRequirementsInfo2* pInfo,
1740 VkMemoryRequirements2* pMemoryRequirements)
1741{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001742 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001743 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001744 auto resources = ResourceTracker::get();
1745 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001746}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001747static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1748 VkDevice device,
1749 const VkBufferMemoryRequirementsInfo2* pInfo,
1750 VkMemoryRequirements2* pMemoryRequirements)
1751{
1752 auto resources = ResourceTracker::get();
1753 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1754 {
1755 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1756 }
1757 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1758 auto vkEnc = HostConnection::get()->vkEncoder();
1759 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1760}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001761static void entry_vkGetImageSparseMemoryRequirements2(
1762 VkDevice device,
1763 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1764 uint32_t* pSparseMemoryRequirementCount,
1765 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1766{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001767 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001768 auto vkEnc = HostConnection::get()->vkEncoder();
1769 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1770}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001771static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1772 VkDevice device,
1773 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1774 uint32_t* pSparseMemoryRequirementCount,
1775 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1776{
1777 auto resources = ResourceTracker::get();
1778 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1779 {
1780 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1781 }
1782 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1783 auto vkEnc = HostConnection::get()->vkEncoder();
1784 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1785}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001786static void entry_vkGetPhysicalDeviceFeatures2(
1787 VkPhysicalDevice physicalDevice,
1788 VkPhysicalDeviceFeatures2* pFeatures)
1789{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001790 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001791 auto vkEnc = HostConnection::get()->vkEncoder();
1792 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
1793}
1794static void entry_vkGetPhysicalDeviceProperties2(
1795 VkPhysicalDevice physicalDevice,
1796 VkPhysicalDeviceProperties2* pProperties)
1797{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001798 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001799 auto vkEnc = HostConnection::get()->vkEncoder();
1800 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
1801}
1802static void entry_vkGetPhysicalDeviceFormatProperties2(
1803 VkPhysicalDevice physicalDevice,
1804 VkFormat format,
1805 VkFormatProperties2* pFormatProperties)
1806{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001807 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001808 auto vkEnc = HostConnection::get()->vkEncoder();
1809 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
1810}
1811static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1812 VkPhysicalDevice physicalDevice,
1813 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1814 VkImageFormatProperties2* pImageFormatProperties)
1815{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001816 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001817 auto vkEnc = HostConnection::get()->vkEncoder();
1818 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001819 auto resources = ResourceTracker::get();
1820 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001821 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1822}
1823static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1824 VkPhysicalDevice physicalDevice,
1825 uint32_t* pQueueFamilyPropertyCount,
1826 VkQueueFamilyProperties2* pQueueFamilyProperties)
1827{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001828 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001829 auto vkEnc = HostConnection::get()->vkEncoder();
1830 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1831}
1832static void entry_vkGetPhysicalDeviceMemoryProperties2(
1833 VkPhysicalDevice physicalDevice,
1834 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1835{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001836 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001837 auto vkEnc = HostConnection::get()->vkEncoder();
1838 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
1839}
1840static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1841 VkPhysicalDevice physicalDevice,
1842 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1843 uint32_t* pPropertyCount,
1844 VkSparseImageFormatProperties2* pProperties)
1845{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001846 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001847 auto vkEnc = HostConnection::get()->vkEncoder();
1848 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
1849}
1850static void entry_vkTrimCommandPool(
1851 VkDevice device,
1852 VkCommandPool commandPool,
1853 VkCommandPoolTrimFlags flags)
1854{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001855 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001856 auto vkEnc = HostConnection::get()->vkEncoder();
1857 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1858}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001859static void dynCheck_entry_vkTrimCommandPool(
1860 VkDevice device,
1861 VkCommandPool commandPool,
1862 VkCommandPoolTrimFlags flags)
1863{
1864 auto resources = ResourceTracker::get();
1865 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1866 {
1867 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1868 }
1869 AEMU_SCOPED_TRACE("vkTrimCommandPool");
1870 auto vkEnc = HostConnection::get()->vkEncoder();
1871 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1872}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001873static void entry_vkGetDeviceQueue2(
1874 VkDevice device,
1875 const VkDeviceQueueInfo2* pQueueInfo,
1876 VkQueue* pQueue)
1877{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001878 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001879 auto vkEnc = HostConnection::get()->vkEncoder();
1880 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1881}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001882static void dynCheck_entry_vkGetDeviceQueue2(
1883 VkDevice device,
1884 const VkDeviceQueueInfo2* pQueueInfo,
1885 VkQueue* pQueue)
1886{
1887 auto resources = ResourceTracker::get();
1888 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1889 {
1890 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1891 }
1892 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1893 auto vkEnc = HostConnection::get()->vkEncoder();
1894 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1895}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001896static VkResult entry_vkCreateSamplerYcbcrConversion(
1897 VkDevice device,
1898 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1899 const VkAllocationCallbacks* pAllocator,
1900 VkSamplerYcbcrConversion* pYcbcrConversion)
1901{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001902 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001903 auto vkEnc = HostConnection::get()->vkEncoder();
1904 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001905 auto resources = ResourceTracker::get();
1906 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001907 return vkCreateSamplerYcbcrConversion_VkResult_return;
1908}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001909static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1910 VkDevice device,
1911 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1912 const VkAllocationCallbacks* pAllocator,
1913 VkSamplerYcbcrConversion* pYcbcrConversion)
1914{
1915 auto resources = ResourceTracker::get();
1916 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1917 {
1918 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1919 }
1920 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1921 auto vkEnc = HostConnection::get()->vkEncoder();
1922 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1923 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1924 return vkCreateSamplerYcbcrConversion_VkResult_return;
1925}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001926static void entry_vkDestroySamplerYcbcrConversion(
1927 VkDevice device,
1928 VkSamplerYcbcrConversion ycbcrConversion,
1929 const VkAllocationCallbacks* pAllocator)
1930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001931 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001932 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001933 auto resources = ResourceTracker::get();
1934 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001935}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001936static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1937 VkDevice device,
1938 VkSamplerYcbcrConversion ycbcrConversion,
1939 const VkAllocationCallbacks* pAllocator)
1940{
1941 auto resources = ResourceTracker::get();
1942 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1943 {
1944 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1945 }
1946 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1947 auto vkEnc = HostConnection::get()->vkEncoder();
1948 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1949}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001950static VkResult entry_vkCreateDescriptorUpdateTemplate(
1951 VkDevice device,
1952 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1953 const VkAllocationCallbacks* pAllocator,
1954 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1955{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001956 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001957 auto vkEnc = HostConnection::get()->vkEncoder();
1958 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1959 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1960 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1961}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001962static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1963 VkDevice device,
1964 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1965 const VkAllocationCallbacks* pAllocator,
1966 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1967{
1968 auto resources = ResourceTracker::get();
1969 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1970 {
1971 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1972 }
1973 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1974 auto vkEnc = HostConnection::get()->vkEncoder();
1975 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1976 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1977 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1978}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001979static void entry_vkDestroyDescriptorUpdateTemplate(
1980 VkDevice device,
1981 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1982 const VkAllocationCallbacks* pAllocator)
1983{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001984 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001985 auto vkEnc = HostConnection::get()->vkEncoder();
1986 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1987}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001988static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1989 VkDevice device,
1990 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1991 const VkAllocationCallbacks* pAllocator)
1992{
1993 auto resources = ResourceTracker::get();
1994 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1995 {
1996 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
1997 }
1998 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
1999 auto vkEnc = HostConnection::get()->vkEncoder();
2000 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
2001}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002002static void entry_vkUpdateDescriptorSetWithTemplate(
2003 VkDevice device,
2004 VkDescriptorSet descriptorSet,
2005 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2006 const void* pData)
2007{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002008 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002009 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07002010 auto resources = ResourceTracker::get();
2011 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002012}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002013static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
2014 VkDevice device,
2015 VkDescriptorSet descriptorSet,
2016 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2017 const void* pData)
2018{
2019 auto resources = ResourceTracker::get();
2020 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2021 {
2022 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
2023 }
2024 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
2025 auto vkEnc = HostConnection::get()->vkEncoder();
2026 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2027}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002028static void entry_vkGetPhysicalDeviceExternalBufferProperties(
2029 VkPhysicalDevice physicalDevice,
2030 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2031 VkExternalBufferProperties* pExternalBufferProperties)
2032{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002033 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002034 auto vkEnc = HostConnection::get()->vkEncoder();
2035 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2036}
2037static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2038 VkPhysicalDevice physicalDevice,
2039 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2040 VkExternalFenceProperties* pExternalFenceProperties)
2041{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002042 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002043 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002044 auto resources = ResourceTracker::get();
2045 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002046}
2047static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2048 VkPhysicalDevice physicalDevice,
2049 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2050 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2051{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002052 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002053 auto vkEnc = HostConnection::get()->vkEncoder();
2054 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2055}
2056static void entry_vkGetDescriptorSetLayoutSupport(
2057 VkDevice device,
2058 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2059 VkDescriptorSetLayoutSupport* pSupport)
2060{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002061 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002062 auto vkEnc = HostConnection::get()->vkEncoder();
2063 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2064}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002065static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2066 VkDevice device,
2067 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2068 VkDescriptorSetLayoutSupport* pSupport)
2069{
2070 auto resources = ResourceTracker::get();
2071 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2072 {
2073 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2074 }
2075 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2076 auto vkEnc = HostConnection::get()->vkEncoder();
2077 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2078}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002079#endif
2080#ifdef VK_KHR_surface
2081static void entry_vkDestroySurfaceKHR(
2082 VkInstance instance,
2083 VkSurfaceKHR surface,
2084 const VkAllocationCallbacks* pAllocator)
2085{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002086 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002087 auto vkEnc = HostConnection::get()->vkEncoder();
2088 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator);
2089}
2090static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2091 VkPhysicalDevice physicalDevice,
2092 uint32_t queueFamilyIndex,
2093 VkSurfaceKHR surface,
2094 VkBool32* pSupported)
2095{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002096 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002097 auto vkEnc = HostConnection::get()->vkEncoder();
2098 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2099 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
2100 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2101}
2102static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2103 VkPhysicalDevice physicalDevice,
2104 VkSurfaceKHR surface,
2105 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2106{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002107 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002108 auto vkEnc = HostConnection::get()->vkEncoder();
2109 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2110 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
2111 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2112}
2113static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2114 VkPhysicalDevice physicalDevice,
2115 VkSurfaceKHR surface,
2116 uint32_t* pSurfaceFormatCount,
2117 VkSurfaceFormatKHR* pSurfaceFormats)
2118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002119 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002120 auto vkEnc = HostConnection::get()->vkEncoder();
2121 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2122 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
2123 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2124}
2125static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2126 VkPhysicalDevice physicalDevice,
2127 VkSurfaceKHR surface,
2128 uint32_t* pPresentModeCount,
2129 VkPresentModeKHR* pPresentModes)
2130{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002131 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002132 auto vkEnc = HostConnection::get()->vkEncoder();
2133 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2134 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
2135 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2136}
2137#endif
2138#ifdef VK_KHR_swapchain
2139static VkResult entry_vkCreateSwapchainKHR(
2140 VkDevice device,
2141 const VkSwapchainCreateInfoKHR* pCreateInfo,
2142 const VkAllocationCallbacks* pAllocator,
2143 VkSwapchainKHR* pSwapchain)
2144{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002145 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002146 auto vkEnc = HostConnection::get()->vkEncoder();
2147 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2148 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2149 return vkCreateSwapchainKHR_VkResult_return;
2150}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002151static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2152 VkDevice device,
2153 const VkSwapchainCreateInfoKHR* pCreateInfo,
2154 const VkAllocationCallbacks* pAllocator,
2155 VkSwapchainKHR* pSwapchain)
2156{
2157 auto resources = ResourceTracker::get();
2158 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2159 {
2160 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2161 }
2162 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2163 auto vkEnc = HostConnection::get()->vkEncoder();
2164 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2165 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2166 return vkCreateSwapchainKHR_VkResult_return;
2167}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002168static void entry_vkDestroySwapchainKHR(
2169 VkDevice device,
2170 VkSwapchainKHR swapchain,
2171 const VkAllocationCallbacks* pAllocator)
2172{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002173 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002174 auto vkEnc = HostConnection::get()->vkEncoder();
2175 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2176}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002177static void dynCheck_entry_vkDestroySwapchainKHR(
2178 VkDevice device,
2179 VkSwapchainKHR swapchain,
2180 const VkAllocationCallbacks* pAllocator)
2181{
2182 auto resources = ResourceTracker::get();
2183 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2184 {
2185 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2186 }
2187 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2188 auto vkEnc = HostConnection::get()->vkEncoder();
2189 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2190}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002191static VkResult entry_vkGetSwapchainImagesKHR(
2192 VkDevice device,
2193 VkSwapchainKHR swapchain,
2194 uint32_t* pSwapchainImageCount,
2195 VkImage* pSwapchainImages)
2196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002197 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002198 auto vkEnc = HostConnection::get()->vkEncoder();
2199 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2200 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2201 return vkGetSwapchainImagesKHR_VkResult_return;
2202}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002203static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2204 VkDevice device,
2205 VkSwapchainKHR swapchain,
2206 uint32_t* pSwapchainImageCount,
2207 VkImage* pSwapchainImages)
2208{
2209 auto resources = ResourceTracker::get();
2210 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2211 {
2212 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2213 }
2214 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2215 auto vkEnc = HostConnection::get()->vkEncoder();
2216 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2217 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2218 return vkGetSwapchainImagesKHR_VkResult_return;
2219}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002220static VkResult entry_vkAcquireNextImageKHR(
2221 VkDevice device,
2222 VkSwapchainKHR swapchain,
2223 uint64_t timeout,
2224 VkSemaphore semaphore,
2225 VkFence fence,
2226 uint32_t* pImageIndex)
2227{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002228 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002229 auto vkEnc = HostConnection::get()->vkEncoder();
2230 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2231 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2232 return vkAcquireNextImageKHR_VkResult_return;
2233}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002234static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2235 VkDevice device,
2236 VkSwapchainKHR swapchain,
2237 uint64_t timeout,
2238 VkSemaphore semaphore,
2239 VkFence fence,
2240 uint32_t* pImageIndex)
2241{
2242 auto resources = ResourceTracker::get();
2243 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2244 {
2245 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2246 }
2247 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2248 auto vkEnc = HostConnection::get()->vkEncoder();
2249 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2250 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2251 return vkAcquireNextImageKHR_VkResult_return;
2252}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002253static VkResult entry_vkQueuePresentKHR(
2254 VkQueue queue,
2255 const VkPresentInfoKHR* pPresentInfo)
2256{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002257 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002258 auto vkEnc = HostConnection::get()->vkEncoder();
2259 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2260 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo);
2261 return vkQueuePresentKHR_VkResult_return;
2262}
2263static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2264 VkDevice device,
2265 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2266{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002267 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002268 auto vkEnc = HostConnection::get()->vkEncoder();
2269 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2270 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2271 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2272}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002273static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2274 VkDevice device,
2275 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2276{
2277 auto resources = ResourceTracker::get();
2278 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2279 {
2280 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2281 }
2282 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2283 auto vkEnc = HostConnection::get()->vkEncoder();
2284 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2285 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2286 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2287}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002288static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2289 VkDevice device,
2290 VkSurfaceKHR surface,
2291 VkDeviceGroupPresentModeFlagsKHR* pModes)
2292{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002293 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002294 auto vkEnc = HostConnection::get()->vkEncoder();
2295 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2296 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2297 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2298}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002299static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2300 VkDevice device,
2301 VkSurfaceKHR surface,
2302 VkDeviceGroupPresentModeFlagsKHR* pModes)
2303{
2304 auto resources = ResourceTracker::get();
2305 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2306 {
2307 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2308 }
2309 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2310 auto vkEnc = HostConnection::get()->vkEncoder();
2311 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2312 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2313 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2314}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002315static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2316 VkPhysicalDevice physicalDevice,
2317 VkSurfaceKHR surface,
2318 uint32_t* pRectCount,
2319 VkRect2D* pRects)
2320{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002321 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002322 auto vkEnc = HostConnection::get()->vkEncoder();
2323 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2324 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
2325 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2326}
2327static VkResult entry_vkAcquireNextImage2KHR(
2328 VkDevice device,
2329 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2330 uint32_t* pImageIndex)
2331{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002332 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002333 auto vkEnc = HostConnection::get()->vkEncoder();
2334 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2335 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2336 return vkAcquireNextImage2KHR_VkResult_return;
2337}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002338static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2339 VkDevice device,
2340 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2341 uint32_t* pImageIndex)
2342{
2343 auto resources = ResourceTracker::get();
2344 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2345 {
2346 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2347 }
2348 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2349 auto vkEnc = HostConnection::get()->vkEncoder();
2350 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2351 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2352 return vkAcquireNextImage2KHR_VkResult_return;
2353}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002354#endif
2355#ifdef VK_KHR_display
2356static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2357 VkPhysicalDevice physicalDevice,
2358 uint32_t* pPropertyCount,
2359 VkDisplayPropertiesKHR* pProperties)
2360{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002361 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002362 auto vkEnc = HostConnection::get()->vkEncoder();
2363 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2364 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2365 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2366}
2367static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2368 VkPhysicalDevice physicalDevice,
2369 uint32_t* pPropertyCount,
2370 VkDisplayPlanePropertiesKHR* pProperties)
2371{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002372 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002373 auto vkEnc = HostConnection::get()->vkEncoder();
2374 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2375 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2376 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2377}
2378static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2379 VkPhysicalDevice physicalDevice,
2380 uint32_t planeIndex,
2381 uint32_t* pDisplayCount,
2382 VkDisplayKHR* pDisplays)
2383{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002384 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002385 auto vkEnc = HostConnection::get()->vkEncoder();
2386 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2387 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
2388 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2389}
2390static VkResult entry_vkGetDisplayModePropertiesKHR(
2391 VkPhysicalDevice physicalDevice,
2392 VkDisplayKHR display,
2393 uint32_t* pPropertyCount,
2394 VkDisplayModePropertiesKHR* pProperties)
2395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002396 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002397 auto vkEnc = HostConnection::get()->vkEncoder();
2398 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2399 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
2400 return vkGetDisplayModePropertiesKHR_VkResult_return;
2401}
2402static VkResult entry_vkCreateDisplayModeKHR(
2403 VkPhysicalDevice physicalDevice,
2404 VkDisplayKHR display,
2405 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2406 const VkAllocationCallbacks* pAllocator,
2407 VkDisplayModeKHR* pMode)
2408{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002409 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002410 auto vkEnc = HostConnection::get()->vkEncoder();
2411 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2412 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
2413 return vkCreateDisplayModeKHR_VkResult_return;
2414}
2415static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2416 VkPhysicalDevice physicalDevice,
2417 VkDisplayModeKHR mode,
2418 uint32_t planeIndex,
2419 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002421 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002422 auto vkEnc = HostConnection::get()->vkEncoder();
2423 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2424 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
2425 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2426}
2427static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2428 VkInstance instance,
2429 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2430 const VkAllocationCallbacks* pAllocator,
2431 VkSurfaceKHR* pSurface)
2432{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002433 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002434 auto vkEnc = HostConnection::get()->vkEncoder();
2435 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2436 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2437 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2438}
2439#endif
2440#ifdef VK_KHR_display_swapchain
2441static VkResult entry_vkCreateSharedSwapchainsKHR(
2442 VkDevice device,
2443 uint32_t swapchainCount,
2444 const VkSwapchainCreateInfoKHR* pCreateInfos,
2445 const VkAllocationCallbacks* pAllocator,
2446 VkSwapchainKHR* pSwapchains)
2447{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002448 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002449 auto vkEnc = HostConnection::get()->vkEncoder();
2450 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2451 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2452 return vkCreateSharedSwapchainsKHR_VkResult_return;
2453}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002454static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2455 VkDevice device,
2456 uint32_t swapchainCount,
2457 const VkSwapchainCreateInfoKHR* pCreateInfos,
2458 const VkAllocationCallbacks* pAllocator,
2459 VkSwapchainKHR* pSwapchains)
2460{
2461 auto resources = ResourceTracker::get();
2462 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2463 {
2464 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2465 }
2466 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2467 auto vkEnc = HostConnection::get()->vkEncoder();
2468 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2469 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2470 return vkCreateSharedSwapchainsKHR_VkResult_return;
2471}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002472#endif
2473#ifdef VK_KHR_xlib_surface
2474static VkResult entry_vkCreateXlibSurfaceKHR(
2475 VkInstance instance,
2476 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2477 const VkAllocationCallbacks* pAllocator,
2478 VkSurfaceKHR* pSurface)
2479{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002480 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002481 auto vkEnc = HostConnection::get()->vkEncoder();
2482 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2483 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2484 return vkCreateXlibSurfaceKHR_VkResult_return;
2485}
2486static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2487 VkPhysicalDevice physicalDevice,
2488 uint32_t queueFamilyIndex,
2489 Display* dpy,
2490 VisualID visualID)
2491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002492 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002493 auto vkEnc = HostConnection::get()->vkEncoder();
2494 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2495 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
2496 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2497}
2498#endif
2499#ifdef VK_KHR_xcb_surface
2500static VkResult entry_vkCreateXcbSurfaceKHR(
2501 VkInstance instance,
2502 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2503 const VkAllocationCallbacks* pAllocator,
2504 VkSurfaceKHR* pSurface)
2505{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002506 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002507 auto vkEnc = HostConnection::get()->vkEncoder();
2508 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2509 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2510 return vkCreateXcbSurfaceKHR_VkResult_return;
2511}
2512static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2513 VkPhysicalDevice physicalDevice,
2514 uint32_t queueFamilyIndex,
2515 xcb_connection_t* connection,
2516 xcb_visualid_t visual_id)
2517{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002518 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002519 auto vkEnc = HostConnection::get()->vkEncoder();
2520 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2521 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
2522 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2523}
2524#endif
2525#ifdef VK_KHR_wayland_surface
2526static VkResult entry_vkCreateWaylandSurfaceKHR(
2527 VkInstance instance,
2528 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2529 const VkAllocationCallbacks* pAllocator,
2530 VkSurfaceKHR* pSurface)
2531{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002532 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002533 auto vkEnc = HostConnection::get()->vkEncoder();
2534 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2535 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2536 return vkCreateWaylandSurfaceKHR_VkResult_return;
2537}
2538static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2539 VkPhysicalDevice physicalDevice,
2540 uint32_t queueFamilyIndex,
2541 wl_display* display)
2542{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002543 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002544 auto vkEnc = HostConnection::get()->vkEncoder();
2545 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2546 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
2547 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2548}
2549#endif
2550#ifdef VK_KHR_mir_surface
2551static VkResult entry_vkCreateMirSurfaceKHR(
2552 VkInstance instance,
2553 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2554 const VkAllocationCallbacks* pAllocator,
2555 VkSurfaceKHR* pSurface)
2556{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002557 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002558 auto vkEnc = HostConnection::get()->vkEncoder();
2559 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
2560 vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2561 return vkCreateMirSurfaceKHR_VkResult_return;
2562}
2563static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2564 VkPhysicalDevice physicalDevice,
2565 uint32_t queueFamilyIndex,
2566 MirConnection* connection)
2567{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002568 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002569 auto vkEnc = HostConnection::get()->vkEncoder();
2570 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2571 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection);
2572 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2573}
2574#endif
2575#ifdef VK_KHR_android_surface
2576static VkResult entry_vkCreateAndroidSurfaceKHR(
2577 VkInstance instance,
2578 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2579 const VkAllocationCallbacks* pAllocator,
2580 VkSurfaceKHR* pSurface)
2581{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002582 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002583 auto vkEnc = HostConnection::get()->vkEncoder();
2584 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2585 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2586 return vkCreateAndroidSurfaceKHR_VkResult_return;
2587}
2588#endif
2589#ifdef VK_KHR_win32_surface
2590static VkResult entry_vkCreateWin32SurfaceKHR(
2591 VkInstance instance,
2592 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2593 const VkAllocationCallbacks* pAllocator,
2594 VkSurfaceKHR* pSurface)
2595{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002596 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002597 auto vkEnc = HostConnection::get()->vkEncoder();
2598 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2599 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2600 return vkCreateWin32SurfaceKHR_VkResult_return;
2601}
2602static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2603 VkPhysicalDevice physicalDevice,
2604 uint32_t queueFamilyIndex)
2605{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002606 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002607 auto vkEnc = HostConnection::get()->vkEncoder();
2608 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2609 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
2610 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2611}
2612#endif
2613#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2614#endif
2615#ifdef VK_KHR_multiview
2616#endif
2617#ifdef VK_KHR_get_physical_device_properties2
2618static void entry_vkGetPhysicalDeviceFeatures2KHR(
2619 VkPhysicalDevice physicalDevice,
2620 VkPhysicalDeviceFeatures2* pFeatures)
2621{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002622 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002623 auto vkEnc = HostConnection::get()->vkEncoder();
2624 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
2625}
2626static void entry_vkGetPhysicalDeviceProperties2KHR(
2627 VkPhysicalDevice physicalDevice,
2628 VkPhysicalDeviceProperties2* pProperties)
2629{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002630 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002631 auto vkEnc = HostConnection::get()->vkEncoder();
2632 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
2633}
2634static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2635 VkPhysicalDevice physicalDevice,
2636 VkFormat format,
2637 VkFormatProperties2* pFormatProperties)
2638{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002639 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002640 auto vkEnc = HostConnection::get()->vkEncoder();
2641 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
2642}
2643static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2644 VkPhysicalDevice physicalDevice,
2645 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2646 VkImageFormatProperties2* pImageFormatProperties)
2647{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002648 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002649 auto vkEnc = HostConnection::get()->vkEncoder();
2650 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002651 auto resources = ResourceTracker::get();
2652 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002653 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2654}
2655static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2656 VkPhysicalDevice physicalDevice,
2657 uint32_t* pQueueFamilyPropertyCount,
2658 VkQueueFamilyProperties2* pQueueFamilyProperties)
2659{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002660 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002661 auto vkEnc = HostConnection::get()->vkEncoder();
2662 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2663}
2664static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2665 VkPhysicalDevice physicalDevice,
2666 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2667{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002668 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002669 auto vkEnc = HostConnection::get()->vkEncoder();
2670 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
2671}
2672static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2673 VkPhysicalDevice physicalDevice,
2674 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2675 uint32_t* pPropertyCount,
2676 VkSparseImageFormatProperties2* pProperties)
2677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002678 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002679 auto vkEnc = HostConnection::get()->vkEncoder();
2680 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2681}
2682#endif
2683#ifdef VK_KHR_device_group
2684static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2685 VkDevice device,
2686 uint32_t heapIndex,
2687 uint32_t localDeviceIndex,
2688 uint32_t remoteDeviceIndex,
2689 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2690{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002691 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002692 auto vkEnc = HostConnection::get()->vkEncoder();
2693 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2694}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002695static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2696 VkDevice device,
2697 uint32_t heapIndex,
2698 uint32_t localDeviceIndex,
2699 uint32_t remoteDeviceIndex,
2700 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2701{
2702 auto resources = ResourceTracker::get();
2703 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2704 {
2705 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2706 }
2707 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2708 auto vkEnc = HostConnection::get()->vkEncoder();
2709 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2710}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002711static void entry_vkCmdSetDeviceMaskKHR(
2712 VkCommandBuffer commandBuffer,
2713 uint32_t deviceMask)
2714{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002715 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002716 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002717 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002718 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2719}
2720static void entry_vkCmdDispatchBaseKHR(
2721 VkCommandBuffer commandBuffer,
2722 uint32_t baseGroupX,
2723 uint32_t baseGroupY,
2724 uint32_t baseGroupZ,
2725 uint32_t groupCountX,
2726 uint32_t groupCountY,
2727 uint32_t groupCountZ)
2728{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002729 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002730 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002731 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002732 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2733}
2734#endif
2735#ifdef VK_KHR_shader_draw_parameters
2736#endif
2737#ifdef VK_KHR_maintenance1
2738static void entry_vkTrimCommandPoolKHR(
2739 VkDevice device,
2740 VkCommandPool commandPool,
2741 VkCommandPoolTrimFlags flags)
2742{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002743 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002744 auto vkEnc = HostConnection::get()->vkEncoder();
2745 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2746}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002747static void dynCheck_entry_vkTrimCommandPoolKHR(
2748 VkDevice device,
2749 VkCommandPool commandPool,
2750 VkCommandPoolTrimFlags flags)
2751{
2752 auto resources = ResourceTracker::get();
2753 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2754 {
2755 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2756 }
2757 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2758 auto vkEnc = HostConnection::get()->vkEncoder();
2759 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2760}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002761#endif
2762#ifdef VK_KHR_device_group_creation
2763static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2764 VkInstance instance,
2765 uint32_t* pPhysicalDeviceGroupCount,
2766 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2767{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002768 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002769 auto vkEnc = HostConnection::get()->vkEncoder();
2770 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2771 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
2772 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2773}
2774#endif
2775#ifdef VK_KHR_external_memory_capabilities
2776static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2777 VkPhysicalDevice physicalDevice,
2778 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2779 VkExternalBufferProperties* pExternalBufferProperties)
2780{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002781 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002782 auto vkEnc = HostConnection::get()->vkEncoder();
2783 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2784}
2785#endif
2786#ifdef VK_KHR_external_memory
2787#endif
2788#ifdef VK_KHR_external_memory_win32
2789static VkResult entry_vkGetMemoryWin32HandleKHR(
2790 VkDevice device,
2791 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2792 HANDLE* pHandle)
2793{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002794 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002795 auto vkEnc = HostConnection::get()->vkEncoder();
2796 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2797 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2798 return vkGetMemoryWin32HandleKHR_VkResult_return;
2799}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002800static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2801 VkDevice device,
2802 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2803 HANDLE* pHandle)
2804{
2805 auto resources = ResourceTracker::get();
2806 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2807 {
2808 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
2809 }
2810 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2811 auto vkEnc = HostConnection::get()->vkEncoder();
2812 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2813 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2814 return vkGetMemoryWin32HandleKHR_VkResult_return;
2815}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002816static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2817 VkDevice device,
2818 VkExternalMemoryHandleTypeFlagBits handleType,
2819 HANDLE handle,
2820 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2821{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002822 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002823 auto vkEnc = HostConnection::get()->vkEncoder();
2824 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2825 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2826 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2827}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002828static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
2829 VkDevice device,
2830 VkExternalMemoryHandleTypeFlagBits handleType,
2831 HANDLE handle,
2832 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2833{
2834 auto resources = ResourceTracker::get();
2835 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2836 {
2837 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
2838 }
2839 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
2840 auto vkEnc = HostConnection::get()->vkEncoder();
2841 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2842 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2843 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2844}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002845#endif
2846#ifdef VK_KHR_external_memory_fd
2847static VkResult entry_vkGetMemoryFdKHR(
2848 VkDevice device,
2849 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2850 int* pFd)
2851{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002852 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002853 auto vkEnc = HostConnection::get()->vkEncoder();
2854 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2855 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2856 return vkGetMemoryFdKHR_VkResult_return;
2857}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002858static VkResult dynCheck_entry_vkGetMemoryFdKHR(
2859 VkDevice device,
2860 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2861 int* pFd)
2862{
2863 auto resources = ResourceTracker::get();
2864 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2865 {
2866 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
2867 }
2868 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
2869 auto vkEnc = HostConnection::get()->vkEncoder();
2870 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2871 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2872 return vkGetMemoryFdKHR_VkResult_return;
2873}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002874static VkResult entry_vkGetMemoryFdPropertiesKHR(
2875 VkDevice device,
2876 VkExternalMemoryHandleTypeFlagBits handleType,
2877 int fd,
2878 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2879{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002880 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002881 auto vkEnc = HostConnection::get()->vkEncoder();
2882 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2883 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2884 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2885}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002886static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
2887 VkDevice device,
2888 VkExternalMemoryHandleTypeFlagBits handleType,
2889 int fd,
2890 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2891{
2892 auto resources = ResourceTracker::get();
2893 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2894 {
2895 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
2896 }
2897 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
2898 auto vkEnc = HostConnection::get()->vkEncoder();
2899 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2900 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2901 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2902}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002903#endif
2904#ifdef VK_KHR_win32_keyed_mutex
2905#endif
2906#ifdef VK_KHR_external_semaphore_capabilities
2907static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2908 VkPhysicalDevice physicalDevice,
2909 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2910 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2911{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002912 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002913 auto vkEnc = HostConnection::get()->vkEncoder();
2914 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2915}
2916#endif
2917#ifdef VK_KHR_external_semaphore
2918#endif
2919#ifdef VK_KHR_external_semaphore_win32
2920static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2921 VkDevice device,
2922 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2923{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002924 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002925 auto vkEnc = HostConnection::get()->vkEncoder();
2926 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2927 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2928 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2929}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002930static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
2931 VkDevice device,
2932 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2933{
2934 auto resources = ResourceTracker::get();
2935 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2936 {
2937 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2938 }
2939 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
2940 auto vkEnc = HostConnection::get()->vkEncoder();
2941 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2942 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2943 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2944}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002945static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2946 VkDevice device,
2947 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2948 HANDLE* pHandle)
2949{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002950 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002951 auto vkEnc = HostConnection::get()->vkEncoder();
2952 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2953 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2954 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2955}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002956static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
2957 VkDevice device,
2958 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2959 HANDLE* pHandle)
2960{
2961 auto resources = ResourceTracker::get();
2962 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2963 {
2964 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2965 }
2966 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
2967 auto vkEnc = HostConnection::get()->vkEncoder();
2968 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2969 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2970 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2971}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002972#endif
2973#ifdef VK_KHR_external_semaphore_fd
2974static VkResult entry_vkImportSemaphoreFdKHR(
2975 VkDevice device,
2976 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2977{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002978 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002979 auto vkEnc = HostConnection::get()->vkEncoder();
2980 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002981 auto resources = ResourceTracker::get();
2982 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002983 return vkImportSemaphoreFdKHR_VkResult_return;
2984}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002985static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
2986 VkDevice device,
2987 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2988{
2989 auto resources = ResourceTracker::get();
2990 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2991 {
2992 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2993 }
2994 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
2995 auto vkEnc = HostConnection::get()->vkEncoder();
2996 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
2997 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
2998 return vkImportSemaphoreFdKHR_VkResult_return;
2999}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003000static VkResult entry_vkGetSemaphoreFdKHR(
3001 VkDevice device,
3002 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3003 int* pFd)
3004{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003005 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003006 auto vkEnc = HostConnection::get()->vkEncoder();
3007 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003008 auto resources = ResourceTracker::get();
3009 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003010 return vkGetSemaphoreFdKHR_VkResult_return;
3011}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003012static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3013 VkDevice device,
3014 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3015 int* pFd)
3016{
3017 auto resources = ResourceTracker::get();
3018 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3019 {
3020 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3021 }
3022 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3023 auto vkEnc = HostConnection::get()->vkEncoder();
3024 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3025 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3026 return vkGetSemaphoreFdKHR_VkResult_return;
3027}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003028#endif
3029#ifdef VK_KHR_push_descriptor
3030static void entry_vkCmdPushDescriptorSetKHR(
3031 VkCommandBuffer commandBuffer,
3032 VkPipelineBindPoint pipelineBindPoint,
3033 VkPipelineLayout layout,
3034 uint32_t set,
3035 uint32_t descriptorWriteCount,
3036 const VkWriteDescriptorSet* pDescriptorWrites)
3037{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003038 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003039 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003040 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003041 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3042}
3043static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3044 VkCommandBuffer commandBuffer,
3045 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3046 VkPipelineLayout layout,
3047 uint32_t set,
3048 const void* pData)
3049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003050 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003051 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003052 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003053 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3054}
3055#endif
3056#ifdef VK_KHR_16bit_storage
3057#endif
3058#ifdef VK_KHR_incremental_present
3059#endif
3060#ifdef VK_KHR_descriptor_update_template
3061static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3062 VkDevice device,
3063 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3064 const VkAllocationCallbacks* pAllocator,
3065 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3066{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003067 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003068 auto vkEnc = HostConnection::get()->vkEncoder();
3069 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3070 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3071 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3072}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003073static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3074 VkDevice device,
3075 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3076 const VkAllocationCallbacks* pAllocator,
3077 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3078{
3079 auto resources = ResourceTracker::get();
3080 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3081 {
3082 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3083 }
3084 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3085 auto vkEnc = HostConnection::get()->vkEncoder();
3086 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3087 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3088 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3089}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003090static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3091 VkDevice device,
3092 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3093 const VkAllocationCallbacks* pAllocator)
3094{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003095 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003096 auto vkEnc = HostConnection::get()->vkEncoder();
3097 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3098}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003099static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3100 VkDevice device,
3101 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3102 const VkAllocationCallbacks* pAllocator)
3103{
3104 auto resources = ResourceTracker::get();
3105 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3106 {
3107 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3108 }
3109 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3110 auto vkEnc = HostConnection::get()->vkEncoder();
3111 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3112}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003113static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3114 VkDevice device,
3115 VkDescriptorSet descriptorSet,
3116 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3117 const void* pData)
3118{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003119 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003120 auto vkEnc = HostConnection::get()->vkEncoder();
3121 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3122}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003123static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3124 VkDevice device,
3125 VkDescriptorSet descriptorSet,
3126 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3127 const void* pData)
3128{
3129 auto resources = ResourceTracker::get();
3130 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3131 {
3132 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3133 }
3134 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3135 auto vkEnc = HostConnection::get()->vkEncoder();
3136 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3137}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003138#endif
3139#ifdef VK_KHR_create_renderpass2
3140static VkResult entry_vkCreateRenderPass2KHR(
3141 VkDevice device,
3142 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3143 const VkAllocationCallbacks* pAllocator,
3144 VkRenderPass* pRenderPass)
3145{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003146 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003147 auto vkEnc = HostConnection::get()->vkEncoder();
3148 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3149 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3150 return vkCreateRenderPass2KHR_VkResult_return;
3151}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003152static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3153 VkDevice device,
3154 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3155 const VkAllocationCallbacks* pAllocator,
3156 VkRenderPass* pRenderPass)
3157{
3158 auto resources = ResourceTracker::get();
3159 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3160 {
3161 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3162 }
3163 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3164 auto vkEnc = HostConnection::get()->vkEncoder();
3165 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3166 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3167 return vkCreateRenderPass2KHR_VkResult_return;
3168}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003169static void entry_vkCmdBeginRenderPass2KHR(
3170 VkCommandBuffer commandBuffer,
3171 const VkRenderPassBeginInfo* pRenderPassBegin,
3172 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
3173{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003174 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003175 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003176 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003177 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3178}
3179static void entry_vkCmdNextSubpass2KHR(
3180 VkCommandBuffer commandBuffer,
3181 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3182 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3183{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003184 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003185 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003186 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003187 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3188}
3189static void entry_vkCmdEndRenderPass2KHR(
3190 VkCommandBuffer commandBuffer,
3191 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3192{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003193 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003194 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003195 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003196 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3197}
3198#endif
3199#ifdef VK_KHR_shared_presentable_image
3200static VkResult entry_vkGetSwapchainStatusKHR(
3201 VkDevice device,
3202 VkSwapchainKHR swapchain)
3203{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003204 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003205 auto vkEnc = HostConnection::get()->vkEncoder();
3206 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3207 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3208 return vkGetSwapchainStatusKHR_VkResult_return;
3209}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003210static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3211 VkDevice device,
3212 VkSwapchainKHR swapchain)
3213{
3214 auto resources = ResourceTracker::get();
3215 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3216 {
3217 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3218 }
3219 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3220 auto vkEnc = HostConnection::get()->vkEncoder();
3221 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3222 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3223 return vkGetSwapchainStatusKHR_VkResult_return;
3224}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003225#endif
3226#ifdef VK_KHR_external_fence_capabilities
3227static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3228 VkPhysicalDevice physicalDevice,
3229 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3230 VkExternalFenceProperties* pExternalFenceProperties)
3231{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003232 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003233 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003234 auto resources = ResourceTracker::get();
3235 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003236}
3237#endif
3238#ifdef VK_KHR_external_fence
3239#endif
3240#ifdef VK_KHR_external_fence_win32
3241static VkResult entry_vkImportFenceWin32HandleKHR(
3242 VkDevice device,
3243 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003245 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003246 auto vkEnc = HostConnection::get()->vkEncoder();
3247 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3248 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3249 return vkImportFenceWin32HandleKHR_VkResult_return;
3250}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003251static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3252 VkDevice device,
3253 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3254{
3255 auto resources = ResourceTracker::get();
3256 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3257 {
3258 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3259 }
3260 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3261 auto vkEnc = HostConnection::get()->vkEncoder();
3262 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3263 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3264 return vkImportFenceWin32HandleKHR_VkResult_return;
3265}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003266static VkResult entry_vkGetFenceWin32HandleKHR(
3267 VkDevice device,
3268 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3269 HANDLE* pHandle)
3270{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003271 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003272 auto vkEnc = HostConnection::get()->vkEncoder();
3273 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3274 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3275 return vkGetFenceWin32HandleKHR_VkResult_return;
3276}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003277static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3278 VkDevice device,
3279 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3280 HANDLE* pHandle)
3281{
3282 auto resources = ResourceTracker::get();
3283 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3284 {
3285 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3286 }
3287 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3288 auto vkEnc = HostConnection::get()->vkEncoder();
3289 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3290 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3291 return vkGetFenceWin32HandleKHR_VkResult_return;
3292}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003293#endif
3294#ifdef VK_KHR_external_fence_fd
3295static VkResult entry_vkImportFenceFdKHR(
3296 VkDevice device,
3297 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003299 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003300 auto vkEnc = HostConnection::get()->vkEncoder();
3301 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003302 auto resources = ResourceTracker::get();
3303 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003304 return vkImportFenceFdKHR_VkResult_return;
3305}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003306static VkResult dynCheck_entry_vkImportFenceFdKHR(
3307 VkDevice device,
3308 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3309{
3310 auto resources = ResourceTracker::get();
3311 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3312 {
3313 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3314 }
3315 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3316 auto vkEnc = HostConnection::get()->vkEncoder();
3317 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3318 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3319 return vkImportFenceFdKHR_VkResult_return;
3320}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003321static VkResult entry_vkGetFenceFdKHR(
3322 VkDevice device,
3323 const VkFenceGetFdInfoKHR* pGetFdInfo,
3324 int* pFd)
3325{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003326 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003327 auto vkEnc = HostConnection::get()->vkEncoder();
3328 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003329 auto resources = ResourceTracker::get();
3330 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003331 return vkGetFenceFdKHR_VkResult_return;
3332}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003333static VkResult dynCheck_entry_vkGetFenceFdKHR(
3334 VkDevice device,
3335 const VkFenceGetFdInfoKHR* pGetFdInfo,
3336 int* pFd)
3337{
3338 auto resources = ResourceTracker::get();
3339 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3340 {
3341 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3342 }
3343 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3344 auto vkEnc = HostConnection::get()->vkEncoder();
3345 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3346 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3347 return vkGetFenceFdKHR_VkResult_return;
3348}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003349#endif
3350#ifdef VK_KHR_maintenance2
3351#endif
3352#ifdef VK_KHR_get_surface_capabilities2
3353static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3354 VkPhysicalDevice physicalDevice,
3355 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3356 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003358 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003359 auto vkEnc = HostConnection::get()->vkEncoder();
3360 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3361 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
3362 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3363}
3364static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3365 VkPhysicalDevice physicalDevice,
3366 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3367 uint32_t* pSurfaceFormatCount,
3368 VkSurfaceFormat2KHR* pSurfaceFormats)
3369{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003370 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003371 auto vkEnc = HostConnection::get()->vkEncoder();
3372 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3373 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
3374 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3375}
3376#endif
3377#ifdef VK_KHR_variable_pointers
3378#endif
3379#ifdef VK_KHR_get_display_properties2
3380static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3381 VkPhysicalDevice physicalDevice,
3382 uint32_t* pPropertyCount,
3383 VkDisplayProperties2KHR* pProperties)
3384{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003385 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003386 auto vkEnc = HostConnection::get()->vkEncoder();
3387 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3388 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3389 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3390}
3391static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3392 VkPhysicalDevice physicalDevice,
3393 uint32_t* pPropertyCount,
3394 VkDisplayPlaneProperties2KHR* pProperties)
3395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003396 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003397 auto vkEnc = HostConnection::get()->vkEncoder();
3398 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3399 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3400 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3401}
3402static VkResult entry_vkGetDisplayModeProperties2KHR(
3403 VkPhysicalDevice physicalDevice,
3404 VkDisplayKHR display,
3405 uint32_t* pPropertyCount,
3406 VkDisplayModeProperties2KHR* pProperties)
3407{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003408 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003409 auto vkEnc = HostConnection::get()->vkEncoder();
3410 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3411 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
3412 return vkGetDisplayModeProperties2KHR_VkResult_return;
3413}
3414static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3415 VkPhysicalDevice physicalDevice,
3416 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3417 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3418{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003419 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003420 auto vkEnc = HostConnection::get()->vkEncoder();
3421 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3422 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
3423 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3424}
3425#endif
3426#ifdef VK_KHR_dedicated_allocation
3427#endif
3428#ifdef VK_KHR_storage_buffer_storage_class
3429#endif
3430#ifdef VK_KHR_relaxed_block_layout
3431#endif
3432#ifdef VK_KHR_get_memory_requirements2
3433static void entry_vkGetImageMemoryRequirements2KHR(
3434 VkDevice device,
3435 const VkImageMemoryRequirementsInfo2* pInfo,
3436 VkMemoryRequirements2* pMemoryRequirements)
3437{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003438 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003439 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003440 auto resources = ResourceTracker::get();
3441 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003442}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003443static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3444 VkDevice device,
3445 const VkImageMemoryRequirementsInfo2* pInfo,
3446 VkMemoryRequirements2* pMemoryRequirements)
3447{
3448 auto resources = ResourceTracker::get();
3449 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3450 {
3451 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3452 }
3453 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3454 auto vkEnc = HostConnection::get()->vkEncoder();
3455 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3456}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003457static void entry_vkGetBufferMemoryRequirements2KHR(
3458 VkDevice device,
3459 const VkBufferMemoryRequirementsInfo2* pInfo,
3460 VkMemoryRequirements2* pMemoryRequirements)
3461{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003462 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003463 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003464 auto resources = ResourceTracker::get();
3465 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003466}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003467static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3468 VkDevice device,
3469 const VkBufferMemoryRequirementsInfo2* pInfo,
3470 VkMemoryRequirements2* pMemoryRequirements)
3471{
3472 auto resources = ResourceTracker::get();
3473 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3474 {
3475 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3476 }
3477 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3478 auto vkEnc = HostConnection::get()->vkEncoder();
3479 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3480}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003481static void entry_vkGetImageSparseMemoryRequirements2KHR(
3482 VkDevice device,
3483 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3484 uint32_t* pSparseMemoryRequirementCount,
3485 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3486{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003487 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003488 auto vkEnc = HostConnection::get()->vkEncoder();
3489 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3490}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003491static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3492 VkDevice device,
3493 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3494 uint32_t* pSparseMemoryRequirementCount,
3495 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3496{
3497 auto resources = ResourceTracker::get();
3498 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3499 {
3500 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3501 }
3502 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3503 auto vkEnc = HostConnection::get()->vkEncoder();
3504 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3505}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003506#endif
3507#ifdef VK_KHR_image_format_list
3508#endif
3509#ifdef VK_KHR_sampler_ycbcr_conversion
3510static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3511 VkDevice device,
3512 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3513 const VkAllocationCallbacks* pAllocator,
3514 VkSamplerYcbcrConversion* pYcbcrConversion)
3515{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003516 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003517 auto vkEnc = HostConnection::get()->vkEncoder();
3518 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003519 auto resources = ResourceTracker::get();
3520 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003521 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3522}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003523static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3524 VkDevice device,
3525 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3526 const VkAllocationCallbacks* pAllocator,
3527 VkSamplerYcbcrConversion* pYcbcrConversion)
3528{
3529 auto resources = ResourceTracker::get();
3530 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3531 {
3532 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3533 }
3534 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3535 auto vkEnc = HostConnection::get()->vkEncoder();
3536 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3537 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3538 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3539}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003540static void entry_vkDestroySamplerYcbcrConversionKHR(
3541 VkDevice device,
3542 VkSamplerYcbcrConversion ycbcrConversion,
3543 const VkAllocationCallbacks* pAllocator)
3544{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003545 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003546 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003547 auto resources = ResourceTracker::get();
3548 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003549}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003550static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3551 VkDevice device,
3552 VkSamplerYcbcrConversion ycbcrConversion,
3553 const VkAllocationCallbacks* pAllocator)
3554{
3555 auto resources = ResourceTracker::get();
3556 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3557 {
3558 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3559 }
3560 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3561 auto vkEnc = HostConnection::get()->vkEncoder();
3562 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3563}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003564#endif
3565#ifdef VK_KHR_bind_memory2
3566static VkResult entry_vkBindBufferMemory2KHR(
3567 VkDevice device,
3568 uint32_t bindInfoCount,
3569 const VkBindBufferMemoryInfo* pBindInfos)
3570{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003571 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003572 auto vkEnc = HostConnection::get()->vkEncoder();
3573 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003574 auto resources = ResourceTracker::get();
3575 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003576 return vkBindBufferMemory2KHR_VkResult_return;
3577}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003578static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3579 VkDevice device,
3580 uint32_t bindInfoCount,
3581 const VkBindBufferMemoryInfo* pBindInfos)
3582{
3583 auto resources = ResourceTracker::get();
3584 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3585 {
3586 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3587 }
3588 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3589 auto vkEnc = HostConnection::get()->vkEncoder();
3590 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3591 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3592 return vkBindBufferMemory2KHR_VkResult_return;
3593}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003594static VkResult entry_vkBindImageMemory2KHR(
3595 VkDevice device,
3596 uint32_t bindInfoCount,
3597 const VkBindImageMemoryInfo* pBindInfos)
3598{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003599 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003600 auto vkEnc = HostConnection::get()->vkEncoder();
3601 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003602 auto resources = ResourceTracker::get();
3603 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003604 return vkBindImageMemory2KHR_VkResult_return;
3605}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003606static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3607 VkDevice device,
3608 uint32_t bindInfoCount,
3609 const VkBindImageMemoryInfo* pBindInfos)
3610{
3611 auto resources = ResourceTracker::get();
3612 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3613 {
3614 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3615 }
3616 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3617 auto vkEnc = HostConnection::get()->vkEncoder();
3618 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3619 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3620 return vkBindImageMemory2KHR_VkResult_return;
3621}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003622#endif
3623#ifdef VK_KHR_maintenance3
3624static void entry_vkGetDescriptorSetLayoutSupportKHR(
3625 VkDevice device,
3626 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3627 VkDescriptorSetLayoutSupport* pSupport)
3628{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003629 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003630 auto vkEnc = HostConnection::get()->vkEncoder();
3631 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3632}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003633static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3634 VkDevice device,
3635 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3636 VkDescriptorSetLayoutSupport* pSupport)
3637{
3638 auto resources = ResourceTracker::get();
3639 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3640 {
3641 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3642 }
3643 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3644 auto vkEnc = HostConnection::get()->vkEncoder();
3645 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3646}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003647#endif
3648#ifdef VK_KHR_draw_indirect_count
3649static void entry_vkCmdDrawIndirectCountKHR(
3650 VkCommandBuffer commandBuffer,
3651 VkBuffer buffer,
3652 VkDeviceSize offset,
3653 VkBuffer countBuffer,
3654 VkDeviceSize countBufferOffset,
3655 uint32_t maxDrawCount,
3656 uint32_t stride)
3657{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003658 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003659 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003660 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003661 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3662}
3663static void entry_vkCmdDrawIndexedIndirectCountKHR(
3664 VkCommandBuffer commandBuffer,
3665 VkBuffer buffer,
3666 VkDeviceSize offset,
3667 VkBuffer countBuffer,
3668 VkDeviceSize countBufferOffset,
3669 uint32_t maxDrawCount,
3670 uint32_t stride)
3671{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003672 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003673 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003674 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003675 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3676}
3677#endif
3678#ifdef VK_KHR_8bit_storage
3679#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08003680#ifdef VK_ANDROID_native_buffer
3681static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3682 VkDevice device,
3683 VkFormat format,
3684 VkImageUsageFlags imageUsage,
3685 int* grallocUsage)
3686{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003687 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003688 auto vkEnc = HostConnection::get()->vkEncoder();
3689 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3690 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3691 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3692}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003693static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3694 VkDevice device,
3695 VkFormat format,
3696 VkImageUsageFlags imageUsage,
3697 int* grallocUsage)
3698{
3699 auto resources = ResourceTracker::get();
3700 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3701 {
3702 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3703 }
3704 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3705 auto vkEnc = HostConnection::get()->vkEncoder();
3706 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3707 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3708 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3709}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003710static VkResult entry_vkAcquireImageANDROID(
3711 VkDevice device,
3712 VkImage image,
3713 int nativeFenceFd,
3714 VkSemaphore semaphore,
3715 VkFence fence)
3716{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003717 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003718 auto vkEnc = HostConnection::get()->vkEncoder();
3719 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3720 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3721 return vkAcquireImageANDROID_VkResult_return;
3722}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003723static VkResult dynCheck_entry_vkAcquireImageANDROID(
3724 VkDevice device,
3725 VkImage image,
3726 int nativeFenceFd,
3727 VkSemaphore semaphore,
3728 VkFence fence)
3729{
3730 auto resources = ResourceTracker::get();
3731 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3732 {
3733 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3734 }
3735 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3736 auto vkEnc = HostConnection::get()->vkEncoder();
3737 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3738 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3739 return vkAcquireImageANDROID_VkResult_return;
3740}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003741static VkResult entry_vkQueueSignalReleaseImageANDROID(
3742 VkQueue queue,
3743 uint32_t waitSemaphoreCount,
3744 const VkSemaphore* pWaitSemaphores,
3745 VkImage image,
3746 int* pNativeFenceFd)
3747{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003748 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003749 auto vkEnc = HostConnection::get()->vkEncoder();
3750 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3751 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
3752 return vkQueueSignalReleaseImageANDROID_VkResult_return;
3753}
3754#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003755#ifdef VK_EXT_debug_report
3756static VkResult entry_vkCreateDebugReportCallbackEXT(
3757 VkInstance instance,
3758 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3759 const VkAllocationCallbacks* pAllocator,
3760 VkDebugReportCallbackEXT* pCallback)
3761{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003762 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003763 auto vkEnc = HostConnection::get()->vkEncoder();
3764 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
3765 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
3766 return vkCreateDebugReportCallbackEXT_VkResult_return;
3767}
3768static void entry_vkDestroyDebugReportCallbackEXT(
3769 VkInstance instance,
3770 VkDebugReportCallbackEXT callback,
3771 const VkAllocationCallbacks* pAllocator)
3772{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003773 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003774 auto vkEnc = HostConnection::get()->vkEncoder();
3775 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
3776}
3777static void entry_vkDebugReportMessageEXT(
3778 VkInstance instance,
3779 VkDebugReportFlagsEXT flags,
3780 VkDebugReportObjectTypeEXT objectType,
3781 uint64_t object,
3782 size_t location,
3783 int32_t messageCode,
3784 const char* pLayerPrefix,
3785 const char* pMessage)
3786{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003787 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003788 auto vkEnc = HostConnection::get()->vkEncoder();
3789 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
3790}
3791#endif
3792#ifdef VK_NV_glsl_shader
3793#endif
3794#ifdef VK_EXT_depth_range_unrestricted
3795#endif
3796#ifdef VK_IMG_filter_cubic
3797#endif
3798#ifdef VK_AMD_rasterization_order
3799#endif
3800#ifdef VK_AMD_shader_trinary_minmax
3801#endif
3802#ifdef VK_AMD_shader_explicit_vertex_parameter
3803#endif
3804#ifdef VK_EXT_debug_marker
3805static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3806 VkDevice device,
3807 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3808{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003809 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003810 auto vkEnc = HostConnection::get()->vkEncoder();
3811 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3812 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3813 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3814}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003815static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3816 VkDevice device,
3817 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3818{
3819 auto resources = ResourceTracker::get();
3820 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3821 {
3822 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3823 }
3824 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3825 auto vkEnc = HostConnection::get()->vkEncoder();
3826 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3827 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3828 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3829}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003830static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3831 VkDevice device,
3832 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3833{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003834 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003835 auto vkEnc = HostConnection::get()->vkEncoder();
3836 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3837 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3838 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3839}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003840static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3841 VkDevice device,
3842 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3843{
3844 auto resources = ResourceTracker::get();
3845 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3846 {
3847 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3848 }
3849 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3850 auto vkEnc = HostConnection::get()->vkEncoder();
3851 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3852 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3853 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3854}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003855static void entry_vkCmdDebugMarkerBeginEXT(
3856 VkCommandBuffer commandBuffer,
3857 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3858{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003859 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003860 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003861 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003862 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3863}
3864static void entry_vkCmdDebugMarkerEndEXT(
3865 VkCommandBuffer commandBuffer)
3866{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003867 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003868 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003869 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003870 vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer);
3871}
3872static void entry_vkCmdDebugMarkerInsertEXT(
3873 VkCommandBuffer commandBuffer,
3874 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3875{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003876 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003877 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003878 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003879 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3880}
3881#endif
3882#ifdef VK_AMD_gcn_shader
3883#endif
3884#ifdef VK_NV_dedicated_allocation
3885#endif
3886#ifdef VK_AMD_draw_indirect_count
3887static void entry_vkCmdDrawIndirectCountAMD(
3888 VkCommandBuffer commandBuffer,
3889 VkBuffer buffer,
3890 VkDeviceSize offset,
3891 VkBuffer countBuffer,
3892 VkDeviceSize countBufferOffset,
3893 uint32_t maxDrawCount,
3894 uint32_t stride)
3895{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003896 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003897 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003898 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003899 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3900}
3901static void entry_vkCmdDrawIndexedIndirectCountAMD(
3902 VkCommandBuffer commandBuffer,
3903 VkBuffer buffer,
3904 VkDeviceSize offset,
3905 VkBuffer countBuffer,
3906 VkDeviceSize countBufferOffset,
3907 uint32_t maxDrawCount,
3908 uint32_t stride)
3909{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003910 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003911 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003912 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003913 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3914}
3915#endif
3916#ifdef VK_AMD_negative_viewport_height
3917#endif
3918#ifdef VK_AMD_gpu_shader_half_float
3919#endif
3920#ifdef VK_AMD_shader_ballot
3921#endif
3922#ifdef VK_AMD_texture_gather_bias_lod
3923#endif
3924#ifdef VK_AMD_shader_info
3925static VkResult entry_vkGetShaderInfoAMD(
3926 VkDevice device,
3927 VkPipeline pipeline,
3928 VkShaderStageFlagBits shaderStage,
3929 VkShaderInfoTypeAMD infoType,
3930 size_t* pInfoSize,
3931 void* pInfo)
3932{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003933 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003934 auto vkEnc = HostConnection::get()->vkEncoder();
3935 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3936 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3937 return vkGetShaderInfoAMD_VkResult_return;
3938}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003939static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3940 VkDevice device,
3941 VkPipeline pipeline,
3942 VkShaderStageFlagBits shaderStage,
3943 VkShaderInfoTypeAMD infoType,
3944 size_t* pInfoSize,
3945 void* pInfo)
3946{
3947 auto resources = ResourceTracker::get();
3948 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3949 {
3950 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3951 }
3952 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3953 auto vkEnc = HostConnection::get()->vkEncoder();
3954 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3955 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3956 return vkGetShaderInfoAMD_VkResult_return;
3957}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003958#endif
3959#ifdef VK_AMD_shader_image_load_store_lod
3960#endif
3961#ifdef VK_IMG_format_pvrtc
3962#endif
3963#ifdef VK_NV_external_memory_capabilities
3964static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3965 VkPhysicalDevice physicalDevice,
3966 VkFormat format,
3967 VkImageType type,
3968 VkImageTiling tiling,
3969 VkImageUsageFlags usage,
3970 VkImageCreateFlags flags,
3971 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3972 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003974 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003975 auto vkEnc = HostConnection::get()->vkEncoder();
3976 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3977 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3978 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3979}
3980#endif
3981#ifdef VK_NV_external_memory
3982#endif
3983#ifdef VK_NV_external_memory_win32
3984static VkResult entry_vkGetMemoryWin32HandleNV(
3985 VkDevice device,
3986 VkDeviceMemory memory,
3987 VkExternalMemoryHandleTypeFlagsNV handleType,
3988 HANDLE* pHandle)
3989{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003990 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003991 auto vkEnc = HostConnection::get()->vkEncoder();
3992 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
3993 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
3994 return vkGetMemoryWin32HandleNV_VkResult_return;
3995}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003996static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
3997 VkDevice device,
3998 VkDeviceMemory memory,
3999 VkExternalMemoryHandleTypeFlagsNV handleType,
4000 HANDLE* pHandle)
4001{
4002 auto resources = ResourceTracker::get();
4003 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4004 {
4005 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4006 }
4007 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4008 auto vkEnc = HostConnection::get()->vkEncoder();
4009 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4010 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4011 return vkGetMemoryWin32HandleNV_VkResult_return;
4012}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004013#endif
4014#ifdef VK_NV_win32_keyed_mutex
4015#endif
4016#ifdef VK_EXT_validation_flags
4017#endif
4018#ifdef VK_NN_vi_surface
4019static VkResult entry_vkCreateViSurfaceNN(
4020 VkInstance instance,
4021 const VkViSurfaceCreateInfoNN* pCreateInfo,
4022 const VkAllocationCallbacks* pAllocator,
4023 VkSurfaceKHR* pSurface)
4024{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004025 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004026 auto vkEnc = HostConnection::get()->vkEncoder();
4027 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4028 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
4029 return vkCreateViSurfaceNN_VkResult_return;
4030}
4031#endif
4032#ifdef VK_EXT_shader_subgroup_ballot
4033#endif
4034#ifdef VK_EXT_shader_subgroup_vote
4035#endif
4036#ifdef VK_EXT_conditional_rendering
4037static void entry_vkCmdBeginConditionalRenderingEXT(
4038 VkCommandBuffer commandBuffer,
4039 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4040{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004041 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004042 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004043 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004044 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4045}
4046static void entry_vkCmdEndConditionalRenderingEXT(
4047 VkCommandBuffer commandBuffer)
4048{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004049 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004050 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004051 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004052 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
4053}
4054#endif
4055#ifdef VK_NVX_device_generated_commands
4056static void entry_vkCmdProcessCommandsNVX(
4057 VkCommandBuffer commandBuffer,
4058 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4059{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004060 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004061 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004062 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004063 vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
4064}
4065static void entry_vkCmdReserveSpaceForCommandsNVX(
4066 VkCommandBuffer commandBuffer,
4067 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004069 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004070 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004071 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004072 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
4073}
4074static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4075 VkDevice device,
4076 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4077 const VkAllocationCallbacks* pAllocator,
4078 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4079{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004080 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004081 auto vkEnc = HostConnection::get()->vkEncoder();
4082 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4083 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4084 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4085}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004086static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4087 VkDevice device,
4088 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4089 const VkAllocationCallbacks* pAllocator,
4090 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4091{
4092 auto resources = ResourceTracker::get();
4093 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4094 {
4095 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4096 }
4097 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4098 auto vkEnc = HostConnection::get()->vkEncoder();
4099 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4100 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4101 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4102}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004103static void entry_vkDestroyIndirectCommandsLayoutNVX(
4104 VkDevice device,
4105 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4106 const VkAllocationCallbacks* pAllocator)
4107{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004108 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004109 auto vkEnc = HostConnection::get()->vkEncoder();
4110 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4111}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004112static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4113 VkDevice device,
4114 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4115 const VkAllocationCallbacks* pAllocator)
4116{
4117 auto resources = ResourceTracker::get();
4118 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4119 {
4120 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4121 }
4122 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4123 auto vkEnc = HostConnection::get()->vkEncoder();
4124 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4125}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004126static VkResult entry_vkCreateObjectTableNVX(
4127 VkDevice device,
4128 const VkObjectTableCreateInfoNVX* pCreateInfo,
4129 const VkAllocationCallbacks* pAllocator,
4130 VkObjectTableNVX* pObjectTable)
4131{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004132 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004133 auto vkEnc = HostConnection::get()->vkEncoder();
4134 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4135 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4136 return vkCreateObjectTableNVX_VkResult_return;
4137}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004138static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4139 VkDevice device,
4140 const VkObjectTableCreateInfoNVX* pCreateInfo,
4141 const VkAllocationCallbacks* pAllocator,
4142 VkObjectTableNVX* pObjectTable)
4143{
4144 auto resources = ResourceTracker::get();
4145 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4146 {
4147 sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4148 }
4149 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4150 auto vkEnc = HostConnection::get()->vkEncoder();
4151 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4152 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4153 return vkCreateObjectTableNVX_VkResult_return;
4154}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004155static void entry_vkDestroyObjectTableNVX(
4156 VkDevice device,
4157 VkObjectTableNVX objectTable,
4158 const VkAllocationCallbacks* pAllocator)
4159{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004160 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004161 auto vkEnc = HostConnection::get()->vkEncoder();
4162 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4163}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004164static void dynCheck_entry_vkDestroyObjectTableNVX(
4165 VkDevice device,
4166 VkObjectTableNVX objectTable,
4167 const VkAllocationCallbacks* pAllocator)
4168{
4169 auto resources = ResourceTracker::get();
4170 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4171 {
4172 sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4173 }
4174 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4175 auto vkEnc = HostConnection::get()->vkEncoder();
4176 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4177}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004178static VkResult entry_vkRegisterObjectsNVX(
4179 VkDevice device,
4180 VkObjectTableNVX objectTable,
4181 uint32_t objectCount,
4182 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4183 const uint32_t* pObjectIndices)
4184{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004185 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004186 auto vkEnc = HostConnection::get()->vkEncoder();
4187 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4188 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4189 return vkRegisterObjectsNVX_VkResult_return;
4190}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004191static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4192 VkDevice device,
4193 VkObjectTableNVX objectTable,
4194 uint32_t objectCount,
4195 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4196 const uint32_t* pObjectIndices)
4197{
4198 auto resources = ResourceTracker::get();
4199 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4200 {
4201 sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4202 }
4203 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4204 auto vkEnc = HostConnection::get()->vkEncoder();
4205 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4206 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4207 return vkRegisterObjectsNVX_VkResult_return;
4208}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004209static VkResult entry_vkUnregisterObjectsNVX(
4210 VkDevice device,
4211 VkObjectTableNVX objectTable,
4212 uint32_t objectCount,
4213 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4214 const uint32_t* pObjectIndices)
4215{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004216 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004217 auto vkEnc = HostConnection::get()->vkEncoder();
4218 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4219 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4220 return vkUnregisterObjectsNVX_VkResult_return;
4221}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004222static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4223 VkDevice device,
4224 VkObjectTableNVX objectTable,
4225 uint32_t objectCount,
4226 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4227 const uint32_t* pObjectIndices)
4228{
4229 auto resources = ResourceTracker::get();
4230 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4231 {
4232 sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4233 }
4234 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4235 auto vkEnc = HostConnection::get()->vkEncoder();
4236 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4237 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4238 return vkUnregisterObjectsNVX_VkResult_return;
4239}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004240static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4241 VkPhysicalDevice physicalDevice,
4242 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4243 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4244{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004245 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004246 auto vkEnc = HostConnection::get()->vkEncoder();
4247 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
4248}
4249#endif
4250#ifdef VK_NV_clip_space_w_scaling
4251static void entry_vkCmdSetViewportWScalingNV(
4252 VkCommandBuffer commandBuffer,
4253 uint32_t firstViewport,
4254 uint32_t viewportCount,
4255 const VkViewportWScalingNV* pViewportWScalings)
4256{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004257 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004258 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004259 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004260 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4261}
4262#endif
4263#ifdef VK_EXT_direct_mode_display
4264static VkResult entry_vkReleaseDisplayEXT(
4265 VkPhysicalDevice physicalDevice,
4266 VkDisplayKHR display)
4267{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004268 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004269 auto vkEnc = HostConnection::get()->vkEncoder();
4270 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4271 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
4272 return vkReleaseDisplayEXT_VkResult_return;
4273}
4274#endif
4275#ifdef VK_EXT_acquire_xlib_display
4276static VkResult entry_vkAcquireXlibDisplayEXT(
4277 VkPhysicalDevice physicalDevice,
4278 Display* dpy,
4279 VkDisplayKHR display)
4280{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004281 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004282 auto vkEnc = HostConnection::get()->vkEncoder();
4283 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4284 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
4285 return vkAcquireXlibDisplayEXT_VkResult_return;
4286}
4287static VkResult entry_vkGetRandROutputDisplayEXT(
4288 VkPhysicalDevice physicalDevice,
4289 Display* dpy,
4290 RROutput rrOutput,
4291 VkDisplayKHR* pDisplay)
4292{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004293 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004294 auto vkEnc = HostConnection::get()->vkEncoder();
4295 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4296 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
4297 return vkGetRandROutputDisplayEXT_VkResult_return;
4298}
4299#endif
4300#ifdef VK_EXT_display_surface_counter
4301static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4302 VkPhysicalDevice physicalDevice,
4303 VkSurfaceKHR surface,
4304 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4305{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004306 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004307 auto vkEnc = HostConnection::get()->vkEncoder();
4308 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4309 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
4310 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4311}
4312#endif
4313#ifdef VK_EXT_display_control
4314static VkResult entry_vkDisplayPowerControlEXT(
4315 VkDevice device,
4316 VkDisplayKHR display,
4317 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4318{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004319 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004320 auto vkEnc = HostConnection::get()->vkEncoder();
4321 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4322 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4323 return vkDisplayPowerControlEXT_VkResult_return;
4324}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004325static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4326 VkDevice device,
4327 VkDisplayKHR display,
4328 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4329{
4330 auto resources = ResourceTracker::get();
4331 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4332 {
4333 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4334 }
4335 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4336 auto vkEnc = HostConnection::get()->vkEncoder();
4337 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4338 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4339 return vkDisplayPowerControlEXT_VkResult_return;
4340}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004341static VkResult entry_vkRegisterDeviceEventEXT(
4342 VkDevice device,
4343 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4344 const VkAllocationCallbacks* pAllocator,
4345 VkFence* pFence)
4346{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004347 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004348 auto vkEnc = HostConnection::get()->vkEncoder();
4349 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4350 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4351 return vkRegisterDeviceEventEXT_VkResult_return;
4352}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004353static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4354 VkDevice device,
4355 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4356 const VkAllocationCallbacks* pAllocator,
4357 VkFence* pFence)
4358{
4359 auto resources = ResourceTracker::get();
4360 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4361 {
4362 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4363 }
4364 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4365 auto vkEnc = HostConnection::get()->vkEncoder();
4366 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4367 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4368 return vkRegisterDeviceEventEXT_VkResult_return;
4369}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004370static VkResult entry_vkRegisterDisplayEventEXT(
4371 VkDevice device,
4372 VkDisplayKHR display,
4373 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4374 const VkAllocationCallbacks* pAllocator,
4375 VkFence* pFence)
4376{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004377 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004378 auto vkEnc = HostConnection::get()->vkEncoder();
4379 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4380 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4381 return vkRegisterDisplayEventEXT_VkResult_return;
4382}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004383static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4384 VkDevice device,
4385 VkDisplayKHR display,
4386 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4387 const VkAllocationCallbacks* pAllocator,
4388 VkFence* pFence)
4389{
4390 auto resources = ResourceTracker::get();
4391 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4392 {
4393 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4394 }
4395 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4396 auto vkEnc = HostConnection::get()->vkEncoder();
4397 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4398 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4399 return vkRegisterDisplayEventEXT_VkResult_return;
4400}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004401static VkResult entry_vkGetSwapchainCounterEXT(
4402 VkDevice device,
4403 VkSwapchainKHR swapchain,
4404 VkSurfaceCounterFlagBitsEXT counter,
4405 uint64_t* pCounterValue)
4406{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004407 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004408 auto vkEnc = HostConnection::get()->vkEncoder();
4409 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4410 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4411 return vkGetSwapchainCounterEXT_VkResult_return;
4412}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004413static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4414 VkDevice device,
4415 VkSwapchainKHR swapchain,
4416 VkSurfaceCounterFlagBitsEXT counter,
4417 uint64_t* pCounterValue)
4418{
4419 auto resources = ResourceTracker::get();
4420 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4421 {
4422 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4423 }
4424 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4425 auto vkEnc = HostConnection::get()->vkEncoder();
4426 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4427 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4428 return vkGetSwapchainCounterEXT_VkResult_return;
4429}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004430#endif
4431#ifdef VK_GOOGLE_display_timing
4432static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4433 VkDevice device,
4434 VkSwapchainKHR swapchain,
4435 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4436{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004437 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004438 auto vkEnc = HostConnection::get()->vkEncoder();
4439 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4440 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4441 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4442}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004443static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4444 VkDevice device,
4445 VkSwapchainKHR swapchain,
4446 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4447{
4448 auto resources = ResourceTracker::get();
4449 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4450 {
4451 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4452 }
4453 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4454 auto vkEnc = HostConnection::get()->vkEncoder();
4455 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4456 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4457 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4458}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004459static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4460 VkDevice device,
4461 VkSwapchainKHR swapchain,
4462 uint32_t* pPresentationTimingCount,
4463 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4464{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004465 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004466 auto vkEnc = HostConnection::get()->vkEncoder();
4467 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4468 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4469 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4470}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004471static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4472 VkDevice device,
4473 VkSwapchainKHR swapchain,
4474 uint32_t* pPresentationTimingCount,
4475 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4476{
4477 auto resources = ResourceTracker::get();
4478 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4479 {
4480 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4481 }
4482 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4483 auto vkEnc = HostConnection::get()->vkEncoder();
4484 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4485 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4486 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4487}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004488#endif
4489#ifdef VK_NV_sample_mask_override_coverage
4490#endif
4491#ifdef VK_NV_geometry_shader_passthrough
4492#endif
4493#ifdef VK_NV_viewport_array2
4494#endif
4495#ifdef VK_NVX_multiview_per_view_attributes
4496#endif
4497#ifdef VK_NV_viewport_swizzle
4498#endif
4499#ifdef VK_EXT_discard_rectangles
4500static void entry_vkCmdSetDiscardRectangleEXT(
4501 VkCommandBuffer commandBuffer,
4502 uint32_t firstDiscardRectangle,
4503 uint32_t discardRectangleCount,
4504 const VkRect2D* pDiscardRectangles)
4505{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004506 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004507 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004508 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004509 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4510}
4511#endif
4512#ifdef VK_EXT_conservative_rasterization
4513#endif
4514#ifdef VK_EXT_swapchain_colorspace
4515#endif
4516#ifdef VK_EXT_hdr_metadata
4517static void entry_vkSetHdrMetadataEXT(
4518 VkDevice device,
4519 uint32_t swapchainCount,
4520 const VkSwapchainKHR* pSwapchains,
4521 const VkHdrMetadataEXT* pMetadata)
4522{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004523 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004524 auto vkEnc = HostConnection::get()->vkEncoder();
4525 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4526}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004527static void dynCheck_entry_vkSetHdrMetadataEXT(
4528 VkDevice device,
4529 uint32_t swapchainCount,
4530 const VkSwapchainKHR* pSwapchains,
4531 const VkHdrMetadataEXT* pMetadata)
4532{
4533 auto resources = ResourceTracker::get();
4534 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4535 {
4536 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4537 }
4538 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4539 auto vkEnc = HostConnection::get()->vkEncoder();
4540 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4541}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004542#endif
4543#ifdef VK_MVK_ios_surface
4544static VkResult entry_vkCreateIOSSurfaceMVK(
4545 VkInstance instance,
4546 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4547 const VkAllocationCallbacks* pAllocator,
4548 VkSurfaceKHR* pSurface)
4549{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004550 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004551 auto vkEnc = HostConnection::get()->vkEncoder();
4552 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
4553 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4554 return vkCreateIOSSurfaceMVK_VkResult_return;
4555}
4556#endif
4557#ifdef VK_MVK_macos_surface
4558static VkResult entry_vkCreateMacOSSurfaceMVK(
4559 VkInstance instance,
4560 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4561 const VkAllocationCallbacks* pAllocator,
4562 VkSurfaceKHR* pSurface)
4563{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004564 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004565 auto vkEnc = HostConnection::get()->vkEncoder();
4566 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
4567 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4568 return vkCreateMacOSSurfaceMVK_VkResult_return;
4569}
4570#endif
4571#ifdef VK_EXT_external_memory_dma_buf
4572#endif
4573#ifdef VK_EXT_queue_family_foreign
4574#endif
4575#ifdef VK_EXT_debug_utils
4576static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4577 VkDevice device,
4578 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4579{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004580 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004581 auto vkEnc = HostConnection::get()->vkEncoder();
4582 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4583 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4584 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4585}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004586static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4587 VkDevice device,
4588 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4589{
4590 auto resources = ResourceTracker::get();
4591 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4592 {
4593 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4594 }
4595 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4596 auto vkEnc = HostConnection::get()->vkEncoder();
4597 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4598 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4599 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4600}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004601static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4602 VkDevice device,
4603 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4604{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004605 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004606 auto vkEnc = HostConnection::get()->vkEncoder();
4607 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4608 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4609 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4610}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004611static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4612 VkDevice device,
4613 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4614{
4615 auto resources = ResourceTracker::get();
4616 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4617 {
4618 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4619 }
4620 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4621 auto vkEnc = HostConnection::get()->vkEncoder();
4622 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4623 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4624 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4625}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004626static void entry_vkQueueBeginDebugUtilsLabelEXT(
4627 VkQueue queue,
4628 const VkDebugUtilsLabelEXT* pLabelInfo)
4629{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004630 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004631 auto vkEnc = HostConnection::get()->vkEncoder();
4632 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4633}
4634static void entry_vkQueueEndDebugUtilsLabelEXT(
4635 VkQueue queue)
4636{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004637 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004638 auto vkEnc = HostConnection::get()->vkEncoder();
4639 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
4640}
4641static void entry_vkQueueInsertDebugUtilsLabelEXT(
4642 VkQueue queue,
4643 const VkDebugUtilsLabelEXT* pLabelInfo)
4644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004645 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004646 auto vkEnc = HostConnection::get()->vkEncoder();
4647 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4648}
4649static void entry_vkCmdBeginDebugUtilsLabelEXT(
4650 VkCommandBuffer commandBuffer,
4651 const VkDebugUtilsLabelEXT* pLabelInfo)
4652{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004653 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004654 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004655 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004656 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4657}
4658static void entry_vkCmdEndDebugUtilsLabelEXT(
4659 VkCommandBuffer commandBuffer)
4660{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004661 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004662 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004663 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004664 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
4665}
4666static void entry_vkCmdInsertDebugUtilsLabelEXT(
4667 VkCommandBuffer commandBuffer,
4668 const VkDebugUtilsLabelEXT* pLabelInfo)
4669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004670 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004671 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004672 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004673 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4674}
4675static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4676 VkInstance instance,
4677 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4678 const VkAllocationCallbacks* pAllocator,
4679 VkDebugUtilsMessengerEXT* pMessenger)
4680{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004681 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004682 auto vkEnc = HostConnection::get()->vkEncoder();
4683 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
4684 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
4685 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4686}
4687static void entry_vkDestroyDebugUtilsMessengerEXT(
4688 VkInstance instance,
4689 VkDebugUtilsMessengerEXT messenger,
4690 const VkAllocationCallbacks* pAllocator)
4691{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004692 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004693 auto vkEnc = HostConnection::get()->vkEncoder();
4694 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
4695}
4696static void entry_vkSubmitDebugUtilsMessageEXT(
4697 VkInstance instance,
4698 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4699 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4700 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004702 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004703 auto vkEnc = HostConnection::get()->vkEncoder();
4704 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
4705}
4706#endif
4707#ifdef VK_ANDROID_external_memory_android_hardware_buffer
4708static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4709 VkDevice device,
4710 const AHardwareBuffer* buffer,
4711 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4712{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004713 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004714 auto vkEnc = HostConnection::get()->vkEncoder();
4715 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004716 auto resources = ResourceTracker::get();
4717 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004718 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4719}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004720static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4721 VkDevice device,
4722 const AHardwareBuffer* buffer,
4723 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4724{
4725 auto resources = ResourceTracker::get();
4726 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4727 {
4728 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4729 }
4730 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4731 auto vkEnc = HostConnection::get()->vkEncoder();
4732 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4733 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4734 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4735}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004736static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4737 VkDevice device,
4738 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4739 AHardwareBuffer** pBuffer)
4740{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004741 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004742 auto vkEnc = HostConnection::get()->vkEncoder();
4743 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004744 auto resources = ResourceTracker::get();
4745 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004746 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4747}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004748static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4749 VkDevice device,
4750 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4751 AHardwareBuffer** pBuffer)
4752{
4753 auto resources = ResourceTracker::get();
4754 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4755 {
4756 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4757 }
4758 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4759 auto vkEnc = HostConnection::get()->vkEncoder();
4760 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4761 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4762 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4763}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004764#endif
4765#ifdef VK_EXT_sampler_filter_minmax
4766#endif
4767#ifdef VK_AMD_gpu_shader_int16
4768#endif
4769#ifdef VK_AMD_mixed_attachment_samples
4770#endif
4771#ifdef VK_AMD_shader_fragment_mask
4772#endif
4773#ifdef VK_EXT_shader_stencil_export
4774#endif
4775#ifdef VK_EXT_sample_locations
4776static void entry_vkCmdSetSampleLocationsEXT(
4777 VkCommandBuffer commandBuffer,
4778 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4779{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004780 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004781 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004782 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004783 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4784}
4785static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4786 VkPhysicalDevice physicalDevice,
4787 VkSampleCountFlagBits samples,
4788 VkMultisamplePropertiesEXT* pMultisampleProperties)
4789{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004790 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004791 auto vkEnc = HostConnection::get()->vkEncoder();
4792 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
4793}
4794#endif
4795#ifdef VK_EXT_blend_operation_advanced
4796#endif
4797#ifdef VK_NV_fragment_coverage_to_color
4798#endif
4799#ifdef VK_NV_framebuffer_mixed_samples
4800#endif
4801#ifdef VK_NV_fill_rectangle
4802#endif
4803#ifdef VK_EXT_post_depth_coverage
4804#endif
4805#ifdef VK_EXT_validation_cache
4806static VkResult entry_vkCreateValidationCacheEXT(
4807 VkDevice device,
4808 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4809 const VkAllocationCallbacks* pAllocator,
4810 VkValidationCacheEXT* pValidationCache)
4811{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004812 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004813 auto vkEnc = HostConnection::get()->vkEncoder();
4814 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4815 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4816 return vkCreateValidationCacheEXT_VkResult_return;
4817}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004818static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4819 VkDevice device,
4820 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4821 const VkAllocationCallbacks* pAllocator,
4822 VkValidationCacheEXT* pValidationCache)
4823{
4824 auto resources = ResourceTracker::get();
4825 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4826 {
4827 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4828 }
4829 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4830 auto vkEnc = HostConnection::get()->vkEncoder();
4831 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4832 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4833 return vkCreateValidationCacheEXT_VkResult_return;
4834}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004835static void entry_vkDestroyValidationCacheEXT(
4836 VkDevice device,
4837 VkValidationCacheEXT validationCache,
4838 const VkAllocationCallbacks* pAllocator)
4839{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004840 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004841 auto vkEnc = HostConnection::get()->vkEncoder();
4842 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4843}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004844static void dynCheck_entry_vkDestroyValidationCacheEXT(
4845 VkDevice device,
4846 VkValidationCacheEXT validationCache,
4847 const VkAllocationCallbacks* pAllocator)
4848{
4849 auto resources = ResourceTracker::get();
4850 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4851 {
4852 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4853 }
4854 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4855 auto vkEnc = HostConnection::get()->vkEncoder();
4856 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4857}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004858static VkResult entry_vkMergeValidationCachesEXT(
4859 VkDevice device,
4860 VkValidationCacheEXT dstCache,
4861 uint32_t srcCacheCount,
4862 const VkValidationCacheEXT* pSrcCaches)
4863{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004864 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004865 auto vkEnc = HostConnection::get()->vkEncoder();
4866 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4867 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4868 return vkMergeValidationCachesEXT_VkResult_return;
4869}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004870static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4871 VkDevice device,
4872 VkValidationCacheEXT dstCache,
4873 uint32_t srcCacheCount,
4874 const VkValidationCacheEXT* pSrcCaches)
4875{
4876 auto resources = ResourceTracker::get();
4877 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4878 {
4879 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4880 }
4881 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4882 auto vkEnc = HostConnection::get()->vkEncoder();
4883 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4884 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4885 return vkMergeValidationCachesEXT_VkResult_return;
4886}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004887static VkResult entry_vkGetValidationCacheDataEXT(
4888 VkDevice device,
4889 VkValidationCacheEXT validationCache,
4890 size_t* pDataSize,
4891 void* pData)
4892{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004893 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004894 auto vkEnc = HostConnection::get()->vkEncoder();
4895 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4896 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4897 return vkGetValidationCacheDataEXT_VkResult_return;
4898}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004899static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4900 VkDevice device,
4901 VkValidationCacheEXT validationCache,
4902 size_t* pDataSize,
4903 void* pData)
4904{
4905 auto resources = ResourceTracker::get();
4906 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4907 {
4908 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4909 }
4910 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4911 auto vkEnc = HostConnection::get()->vkEncoder();
4912 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4913 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4914 return vkGetValidationCacheDataEXT_VkResult_return;
4915}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004916#endif
4917#ifdef VK_EXT_descriptor_indexing
4918#endif
4919#ifdef VK_EXT_shader_viewport_index_layer
4920#endif
4921#ifdef VK_EXT_global_priority
4922#endif
4923#ifdef VK_EXT_external_memory_host
4924static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4925 VkDevice device,
4926 VkExternalMemoryHandleTypeFlagBits handleType,
4927 const void* pHostPointer,
4928 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4929{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004930 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004931 auto vkEnc = HostConnection::get()->vkEncoder();
4932 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4933 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4934 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4935}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004936static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4937 VkDevice device,
4938 VkExternalMemoryHandleTypeFlagBits handleType,
4939 const void* pHostPointer,
4940 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4941{
4942 auto resources = ResourceTracker::get();
4943 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4944 {
4945 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4946 }
4947 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4948 auto vkEnc = HostConnection::get()->vkEncoder();
4949 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4950 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4951 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4952}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004953#endif
4954#ifdef VK_AMD_buffer_marker
4955static void entry_vkCmdWriteBufferMarkerAMD(
4956 VkCommandBuffer commandBuffer,
4957 VkPipelineStageFlagBits pipelineStage,
4958 VkBuffer dstBuffer,
4959 VkDeviceSize dstOffset,
4960 uint32_t marker)
4961{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004962 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004963 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004964 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004965 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
4966}
4967#endif
4968#ifdef VK_AMD_shader_core_properties
4969#endif
4970#ifdef VK_EXT_vertex_attribute_divisor
4971#endif
4972#ifdef VK_NV_shader_subgroup_partitioned
4973#endif
4974#ifdef VK_NV_device_diagnostic_checkpoints
4975static void entry_vkCmdSetCheckpointNV(
4976 VkCommandBuffer commandBuffer,
4977 const void* pCheckpointMarker)
4978{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004979 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004980 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004981 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004982 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
4983}
4984static void entry_vkGetQueueCheckpointDataNV(
4985 VkQueue queue,
4986 uint32_t* pCheckpointDataCount,
4987 VkCheckpointDataNV* pCheckpointData)
4988{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004989 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004990 auto vkEnc = HostConnection::get()->vkEncoder();
4991 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
4992}
4993#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08004994#ifdef VK_GOOGLE_address_space
4995static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
4996 VkDevice device,
4997 VkDeviceMemory memory,
4998 uint64_t* pAddress)
4999{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005000 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005001 auto vkEnc = HostConnection::get()->vkEncoder();
5002 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5003 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5004 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5005}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005006static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5007 VkDevice device,
5008 VkDeviceMemory memory,
5009 uint64_t* pAddress)
5010{
5011 auto resources = ResourceTracker::get();
5012 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
5013 {
5014 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
5015 }
5016 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5017 auto vkEnc = HostConnection::get()->vkEncoder();
5018 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5019 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5020 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5021}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005022#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005023#ifdef VK_GOOGLE_color_buffer
5024static VkResult entry_vkRegisterImageColorBufferGOOGLE(
5025 VkDevice device,
5026 VkImage image,
5027 uint32_t colorBuffer)
5028{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005029 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005030 auto vkEnc = HostConnection::get()->vkEncoder();
5031 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5032 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5033 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5034}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005035static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
5036 VkDevice device,
5037 VkImage image,
5038 uint32_t colorBuffer)
5039{
5040 auto resources = ResourceTracker::get();
5041 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5042 {
5043 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5044 }
5045 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5046 auto vkEnc = HostConnection::get()->vkEncoder();
5047 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5048 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5049 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5050}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005051static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
5052 VkDevice device,
5053 VkBuffer buffer,
5054 uint32_t colorBuffer)
5055{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005056 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005057 auto vkEnc = HostConnection::get()->vkEncoder();
5058 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5059 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5060 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5061}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005062static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
5063 VkDevice device,
5064 VkBuffer buffer,
5065 uint32_t colorBuffer)
5066{
5067 auto resources = ResourceTracker::get();
5068 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5069 {
5070 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5071 }
5072 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5073 auto vkEnc = HostConnection::get()->vkEncoder();
5074 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5075 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5076 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5077}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005078#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005079#ifdef VK_GOOGLE_sized_descriptor_update_template
5080static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5081 VkDevice device,
5082 VkDescriptorSet descriptorSet,
5083 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5084 uint32_t imageInfoCount,
5085 uint32_t bufferInfoCount,
5086 uint32_t bufferViewCount,
5087 const uint32_t* pImageInfoEntryIndices,
5088 const uint32_t* pBufferInfoEntryIndices,
5089 const uint32_t* pBufferViewEntryIndices,
5090 const VkDescriptorImageInfo* pImageInfos,
5091 const VkDescriptorBufferInfo* pBufferInfos,
5092 const VkBufferView* pBufferViews)
5093{
5094 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5095 auto vkEnc = HostConnection::get()->vkEncoder();
5096 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5097}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005098static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5099 VkDevice device,
5100 VkDescriptorSet descriptorSet,
5101 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5102 uint32_t imageInfoCount,
5103 uint32_t bufferInfoCount,
5104 uint32_t bufferViewCount,
5105 const uint32_t* pImageInfoEntryIndices,
5106 const uint32_t* pBufferInfoEntryIndices,
5107 const uint32_t* pBufferViewEntryIndices,
5108 const VkDescriptorImageInfo* pImageInfos,
5109 const VkDescriptorBufferInfo* pBufferInfos,
5110 const VkBufferView* pBufferViews)
5111{
5112 auto resources = ResourceTracker::get();
5113 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5114 {
5115 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5116 }
5117 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5118 auto vkEnc = HostConnection::get()->vkEncoder();
5119 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5120}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005121#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005122#ifdef VK_GOOGLE_async_command_buffers
5123static void entry_vkBeginCommandBufferAsyncGOOGLE(
5124 VkCommandBuffer commandBuffer,
5125 const VkCommandBufferBeginInfo* pBeginInfo)
5126{
5127 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
5128 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005129 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005130 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
5131}
5132static void entry_vkEndCommandBufferAsyncGOOGLE(
5133 VkCommandBuffer commandBuffer)
5134{
5135 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
5136 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005137 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005138 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
5139}
5140static void entry_vkResetCommandBufferAsyncGOOGLE(
5141 VkCommandBuffer commandBuffer,
5142 VkCommandBufferResetFlags flags)
5143{
5144 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
5145 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005146 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005147 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
5148}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005149static void entry_vkCommandBufferHostSyncGOOGLE(
5150 VkCommandBuffer commandBuffer,
5151 uint32_t needHostSync,
5152 uint32_t sequenceNumber)
5153{
5154 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
5155 auto vkEnc = HostConnection::get()->vkEncoder();
5156 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5157 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
5158}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005159#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005160#ifdef VK_GOOGLE_create_resources_with_requirements
5161static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5162 VkDevice device,
5163 const VkImageCreateInfo* pCreateInfo,
5164 const VkAllocationCallbacks* pAllocator,
5165 VkImage* pImage,
5166 VkMemoryRequirements* pMemoryRequirements)
5167{
5168 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5169 auto vkEnc = HostConnection::get()->vkEncoder();
5170 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5171 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5172 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5173}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005174static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5175 VkDevice device,
5176 const VkImageCreateInfo* pCreateInfo,
5177 const VkAllocationCallbacks* pAllocator,
5178 VkImage* pImage,
5179 VkMemoryRequirements* pMemoryRequirements)
5180{
5181 auto resources = ResourceTracker::get();
5182 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5183 {
5184 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5185 }
5186 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5187 auto vkEnc = HostConnection::get()->vkEncoder();
5188 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5189 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5190 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5191}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005192static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5193 VkDevice device,
5194 const VkBufferCreateInfo* pCreateInfo,
5195 const VkAllocationCallbacks* pAllocator,
5196 VkBuffer* pBuffer,
5197 VkMemoryRequirements* pMemoryRequirements)
5198{
5199 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5200 auto vkEnc = HostConnection::get()->vkEncoder();
5201 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5202 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5203 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5204}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005205static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5206 VkDevice device,
5207 const VkBufferCreateInfo* pCreateInfo,
5208 const VkAllocationCallbacks* pAllocator,
5209 VkBuffer* pBuffer,
5210 VkMemoryRequirements* pMemoryRequirements)
5211{
5212 auto resources = ResourceTracker::get();
5213 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5214 {
5215 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5216 }
5217 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5218 auto vkEnc = HostConnection::get()->vkEncoder();
5219 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5220 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5221 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5222}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005223#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08005224#ifdef VK_GOOGLE_address_space_info
5225static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5226 VkDevice device,
5227 VkDeviceMemory memory,
5228 uint64_t* pAddress,
5229 uint64_t* pSize,
5230 uint64_t* pHostmemId)
5231{
5232 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5233 auto vkEnc = HostConnection::get()->vkEncoder();
5234 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5235 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5236 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5237}
5238static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5239 VkDevice device,
5240 VkDeviceMemory memory,
5241 uint64_t* pAddress,
5242 uint64_t* pSize,
5243 uint64_t* pHostmemId)
5244{
5245 auto resources = ResourceTracker::get();
5246 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5247 {
5248 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5249 }
5250 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5251 auto vkEnc = HostConnection::get()->vkEncoder();
5252 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5253 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5254 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5255}
5256#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005257void* goldfish_vulkan_get_proc_address(const char* name){
5258#ifdef VK_VERSION_1_0
5259 if (!strcmp(name, "vkCreateInstance"))
5260 {
5261 return (void*)entry_vkCreateInstance;
5262 }
5263 if (!strcmp(name, "vkDestroyInstance"))
5264 {
5265 return (void*)entry_vkDestroyInstance;
5266 }
5267 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5268 {
5269 return (void*)entry_vkEnumeratePhysicalDevices;
5270 }
5271 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5272 {
5273 return (void*)entry_vkGetPhysicalDeviceFeatures;
5274 }
5275 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5276 {
5277 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5278 }
5279 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5280 {
5281 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5282 }
5283 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5284 {
5285 return (void*)entry_vkGetPhysicalDeviceProperties;
5286 }
5287 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5288 {
5289 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5290 }
5291 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5292 {
5293 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5294 }
5295 if (!strcmp(name, "vkGetInstanceProcAddr"))
5296 {
5297 return (void*)entry_vkGetInstanceProcAddr;
5298 }
5299 if (!strcmp(name, "vkGetDeviceProcAddr"))
5300 {
5301 return (void*)entry_vkGetDeviceProcAddr;
5302 }
5303 if (!strcmp(name, "vkCreateDevice"))
5304 {
5305 return (void*)entry_vkCreateDevice;
5306 }
5307 if (!strcmp(name, "vkDestroyDevice"))
5308 {
5309 return (void*)entry_vkDestroyDevice;
5310 }
5311 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5312 {
5313 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5314 }
5315 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5316 {
5317 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5318 }
5319 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5320 {
5321 return (void*)entry_vkEnumerateInstanceLayerProperties;
5322 }
5323 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5324 {
5325 return (void*)entry_vkEnumerateDeviceLayerProperties;
5326 }
5327 if (!strcmp(name, "vkGetDeviceQueue"))
5328 {
5329 return (void*)entry_vkGetDeviceQueue;
5330 }
5331 if (!strcmp(name, "vkQueueSubmit"))
5332 {
5333 return (void*)entry_vkQueueSubmit;
5334 }
5335 if (!strcmp(name, "vkQueueWaitIdle"))
5336 {
5337 return (void*)entry_vkQueueWaitIdle;
5338 }
5339 if (!strcmp(name, "vkDeviceWaitIdle"))
5340 {
5341 return (void*)entry_vkDeviceWaitIdle;
5342 }
5343 if (!strcmp(name, "vkAllocateMemory"))
5344 {
5345 return (void*)entry_vkAllocateMemory;
5346 }
5347 if (!strcmp(name, "vkFreeMemory"))
5348 {
5349 return (void*)entry_vkFreeMemory;
5350 }
5351 if (!strcmp(name, "vkMapMemory"))
5352 {
5353 return (void*)entry_vkMapMemory;
5354 }
5355 if (!strcmp(name, "vkUnmapMemory"))
5356 {
5357 return (void*)entry_vkUnmapMemory;
5358 }
5359 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5360 {
5361 return (void*)entry_vkFlushMappedMemoryRanges;
5362 }
5363 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5364 {
5365 return (void*)entry_vkInvalidateMappedMemoryRanges;
5366 }
5367 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5368 {
5369 return (void*)entry_vkGetDeviceMemoryCommitment;
5370 }
5371 if (!strcmp(name, "vkBindBufferMemory"))
5372 {
5373 return (void*)entry_vkBindBufferMemory;
5374 }
5375 if (!strcmp(name, "vkBindImageMemory"))
5376 {
5377 return (void*)entry_vkBindImageMemory;
5378 }
5379 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5380 {
5381 return (void*)entry_vkGetBufferMemoryRequirements;
5382 }
5383 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5384 {
5385 return (void*)entry_vkGetImageMemoryRequirements;
5386 }
5387 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5388 {
5389 return (void*)entry_vkGetImageSparseMemoryRequirements;
5390 }
5391 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5392 {
5393 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5394 }
5395 if (!strcmp(name, "vkQueueBindSparse"))
5396 {
5397 return (void*)entry_vkQueueBindSparse;
5398 }
5399 if (!strcmp(name, "vkCreateFence"))
5400 {
5401 return (void*)entry_vkCreateFence;
5402 }
5403 if (!strcmp(name, "vkDestroyFence"))
5404 {
5405 return (void*)entry_vkDestroyFence;
5406 }
5407 if (!strcmp(name, "vkResetFences"))
5408 {
5409 return (void*)entry_vkResetFences;
5410 }
5411 if (!strcmp(name, "vkGetFenceStatus"))
5412 {
5413 return (void*)entry_vkGetFenceStatus;
5414 }
5415 if (!strcmp(name, "vkWaitForFences"))
5416 {
5417 return (void*)entry_vkWaitForFences;
5418 }
5419 if (!strcmp(name, "vkCreateSemaphore"))
5420 {
5421 return (void*)entry_vkCreateSemaphore;
5422 }
5423 if (!strcmp(name, "vkDestroySemaphore"))
5424 {
5425 return (void*)entry_vkDestroySemaphore;
5426 }
5427 if (!strcmp(name, "vkCreateEvent"))
5428 {
5429 return (void*)entry_vkCreateEvent;
5430 }
5431 if (!strcmp(name, "vkDestroyEvent"))
5432 {
5433 return (void*)entry_vkDestroyEvent;
5434 }
5435 if (!strcmp(name, "vkGetEventStatus"))
5436 {
5437 return (void*)entry_vkGetEventStatus;
5438 }
5439 if (!strcmp(name, "vkSetEvent"))
5440 {
5441 return (void*)entry_vkSetEvent;
5442 }
5443 if (!strcmp(name, "vkResetEvent"))
5444 {
5445 return (void*)entry_vkResetEvent;
5446 }
5447 if (!strcmp(name, "vkCreateQueryPool"))
5448 {
5449 return (void*)entry_vkCreateQueryPool;
5450 }
5451 if (!strcmp(name, "vkDestroyQueryPool"))
5452 {
5453 return (void*)entry_vkDestroyQueryPool;
5454 }
5455 if (!strcmp(name, "vkGetQueryPoolResults"))
5456 {
5457 return (void*)entry_vkGetQueryPoolResults;
5458 }
5459 if (!strcmp(name, "vkCreateBuffer"))
5460 {
5461 return (void*)entry_vkCreateBuffer;
5462 }
5463 if (!strcmp(name, "vkDestroyBuffer"))
5464 {
5465 return (void*)entry_vkDestroyBuffer;
5466 }
5467 if (!strcmp(name, "vkCreateBufferView"))
5468 {
5469 return (void*)entry_vkCreateBufferView;
5470 }
5471 if (!strcmp(name, "vkDestroyBufferView"))
5472 {
5473 return (void*)entry_vkDestroyBufferView;
5474 }
5475 if (!strcmp(name, "vkCreateImage"))
5476 {
5477 return (void*)entry_vkCreateImage;
5478 }
5479 if (!strcmp(name, "vkDestroyImage"))
5480 {
5481 return (void*)entry_vkDestroyImage;
5482 }
5483 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5484 {
5485 return (void*)entry_vkGetImageSubresourceLayout;
5486 }
5487 if (!strcmp(name, "vkCreateImageView"))
5488 {
5489 return (void*)entry_vkCreateImageView;
5490 }
5491 if (!strcmp(name, "vkDestroyImageView"))
5492 {
5493 return (void*)entry_vkDestroyImageView;
5494 }
5495 if (!strcmp(name, "vkCreateShaderModule"))
5496 {
5497 return (void*)entry_vkCreateShaderModule;
5498 }
5499 if (!strcmp(name, "vkDestroyShaderModule"))
5500 {
5501 return (void*)entry_vkDestroyShaderModule;
5502 }
5503 if (!strcmp(name, "vkCreatePipelineCache"))
5504 {
5505 return (void*)entry_vkCreatePipelineCache;
5506 }
5507 if (!strcmp(name, "vkDestroyPipelineCache"))
5508 {
5509 return (void*)entry_vkDestroyPipelineCache;
5510 }
5511 if (!strcmp(name, "vkGetPipelineCacheData"))
5512 {
5513 return (void*)entry_vkGetPipelineCacheData;
5514 }
5515 if (!strcmp(name, "vkMergePipelineCaches"))
5516 {
5517 return (void*)entry_vkMergePipelineCaches;
5518 }
5519 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5520 {
5521 return (void*)entry_vkCreateGraphicsPipelines;
5522 }
5523 if (!strcmp(name, "vkCreateComputePipelines"))
5524 {
5525 return (void*)entry_vkCreateComputePipelines;
5526 }
5527 if (!strcmp(name, "vkDestroyPipeline"))
5528 {
5529 return (void*)entry_vkDestroyPipeline;
5530 }
5531 if (!strcmp(name, "vkCreatePipelineLayout"))
5532 {
5533 return (void*)entry_vkCreatePipelineLayout;
5534 }
5535 if (!strcmp(name, "vkDestroyPipelineLayout"))
5536 {
5537 return (void*)entry_vkDestroyPipelineLayout;
5538 }
5539 if (!strcmp(name, "vkCreateSampler"))
5540 {
5541 return (void*)entry_vkCreateSampler;
5542 }
5543 if (!strcmp(name, "vkDestroySampler"))
5544 {
5545 return (void*)entry_vkDestroySampler;
5546 }
5547 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5548 {
5549 return (void*)entry_vkCreateDescriptorSetLayout;
5550 }
5551 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5552 {
5553 return (void*)entry_vkDestroyDescriptorSetLayout;
5554 }
5555 if (!strcmp(name, "vkCreateDescriptorPool"))
5556 {
5557 return (void*)entry_vkCreateDescriptorPool;
5558 }
5559 if (!strcmp(name, "vkDestroyDescriptorPool"))
5560 {
5561 return (void*)entry_vkDestroyDescriptorPool;
5562 }
5563 if (!strcmp(name, "vkResetDescriptorPool"))
5564 {
5565 return (void*)entry_vkResetDescriptorPool;
5566 }
5567 if (!strcmp(name, "vkAllocateDescriptorSets"))
5568 {
5569 return (void*)entry_vkAllocateDescriptorSets;
5570 }
5571 if (!strcmp(name, "vkFreeDescriptorSets"))
5572 {
5573 return (void*)entry_vkFreeDescriptorSets;
5574 }
5575 if (!strcmp(name, "vkUpdateDescriptorSets"))
5576 {
5577 return (void*)entry_vkUpdateDescriptorSets;
5578 }
5579 if (!strcmp(name, "vkCreateFramebuffer"))
5580 {
5581 return (void*)entry_vkCreateFramebuffer;
5582 }
5583 if (!strcmp(name, "vkDestroyFramebuffer"))
5584 {
5585 return (void*)entry_vkDestroyFramebuffer;
5586 }
5587 if (!strcmp(name, "vkCreateRenderPass"))
5588 {
5589 return (void*)entry_vkCreateRenderPass;
5590 }
5591 if (!strcmp(name, "vkDestroyRenderPass"))
5592 {
5593 return (void*)entry_vkDestroyRenderPass;
5594 }
5595 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5596 {
5597 return (void*)entry_vkGetRenderAreaGranularity;
5598 }
5599 if (!strcmp(name, "vkCreateCommandPool"))
5600 {
5601 return (void*)entry_vkCreateCommandPool;
5602 }
5603 if (!strcmp(name, "vkDestroyCommandPool"))
5604 {
5605 return (void*)entry_vkDestroyCommandPool;
5606 }
5607 if (!strcmp(name, "vkResetCommandPool"))
5608 {
5609 return (void*)entry_vkResetCommandPool;
5610 }
5611 if (!strcmp(name, "vkAllocateCommandBuffers"))
5612 {
5613 return (void*)entry_vkAllocateCommandBuffers;
5614 }
5615 if (!strcmp(name, "vkFreeCommandBuffers"))
5616 {
5617 return (void*)entry_vkFreeCommandBuffers;
5618 }
5619 if (!strcmp(name, "vkBeginCommandBuffer"))
5620 {
5621 return (void*)entry_vkBeginCommandBuffer;
5622 }
5623 if (!strcmp(name, "vkEndCommandBuffer"))
5624 {
5625 return (void*)entry_vkEndCommandBuffer;
5626 }
5627 if (!strcmp(name, "vkResetCommandBuffer"))
5628 {
5629 return (void*)entry_vkResetCommandBuffer;
5630 }
5631 if (!strcmp(name, "vkCmdBindPipeline"))
5632 {
5633 return (void*)entry_vkCmdBindPipeline;
5634 }
5635 if (!strcmp(name, "vkCmdSetViewport"))
5636 {
5637 return (void*)entry_vkCmdSetViewport;
5638 }
5639 if (!strcmp(name, "vkCmdSetScissor"))
5640 {
5641 return (void*)entry_vkCmdSetScissor;
5642 }
5643 if (!strcmp(name, "vkCmdSetLineWidth"))
5644 {
5645 return (void*)entry_vkCmdSetLineWidth;
5646 }
5647 if (!strcmp(name, "vkCmdSetDepthBias"))
5648 {
5649 return (void*)entry_vkCmdSetDepthBias;
5650 }
5651 if (!strcmp(name, "vkCmdSetBlendConstants"))
5652 {
5653 return (void*)entry_vkCmdSetBlendConstants;
5654 }
5655 if (!strcmp(name, "vkCmdSetDepthBounds"))
5656 {
5657 return (void*)entry_vkCmdSetDepthBounds;
5658 }
5659 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5660 {
5661 return (void*)entry_vkCmdSetStencilCompareMask;
5662 }
5663 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5664 {
5665 return (void*)entry_vkCmdSetStencilWriteMask;
5666 }
5667 if (!strcmp(name, "vkCmdSetStencilReference"))
5668 {
5669 return (void*)entry_vkCmdSetStencilReference;
5670 }
5671 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5672 {
5673 return (void*)entry_vkCmdBindDescriptorSets;
5674 }
5675 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5676 {
5677 return (void*)entry_vkCmdBindIndexBuffer;
5678 }
5679 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5680 {
5681 return (void*)entry_vkCmdBindVertexBuffers;
5682 }
5683 if (!strcmp(name, "vkCmdDraw"))
5684 {
5685 return (void*)entry_vkCmdDraw;
5686 }
5687 if (!strcmp(name, "vkCmdDrawIndexed"))
5688 {
5689 return (void*)entry_vkCmdDrawIndexed;
5690 }
5691 if (!strcmp(name, "vkCmdDrawIndirect"))
5692 {
5693 return (void*)entry_vkCmdDrawIndirect;
5694 }
5695 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5696 {
5697 return (void*)entry_vkCmdDrawIndexedIndirect;
5698 }
5699 if (!strcmp(name, "vkCmdDispatch"))
5700 {
5701 return (void*)entry_vkCmdDispatch;
5702 }
5703 if (!strcmp(name, "vkCmdDispatchIndirect"))
5704 {
5705 return (void*)entry_vkCmdDispatchIndirect;
5706 }
5707 if (!strcmp(name, "vkCmdCopyBuffer"))
5708 {
5709 return (void*)entry_vkCmdCopyBuffer;
5710 }
5711 if (!strcmp(name, "vkCmdCopyImage"))
5712 {
5713 return (void*)entry_vkCmdCopyImage;
5714 }
5715 if (!strcmp(name, "vkCmdBlitImage"))
5716 {
5717 return (void*)entry_vkCmdBlitImage;
5718 }
5719 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5720 {
5721 return (void*)entry_vkCmdCopyBufferToImage;
5722 }
5723 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5724 {
5725 return (void*)entry_vkCmdCopyImageToBuffer;
5726 }
5727 if (!strcmp(name, "vkCmdUpdateBuffer"))
5728 {
5729 return (void*)entry_vkCmdUpdateBuffer;
5730 }
5731 if (!strcmp(name, "vkCmdFillBuffer"))
5732 {
5733 return (void*)entry_vkCmdFillBuffer;
5734 }
5735 if (!strcmp(name, "vkCmdClearColorImage"))
5736 {
5737 return (void*)entry_vkCmdClearColorImage;
5738 }
5739 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5740 {
5741 return (void*)entry_vkCmdClearDepthStencilImage;
5742 }
5743 if (!strcmp(name, "vkCmdClearAttachments"))
5744 {
5745 return (void*)entry_vkCmdClearAttachments;
5746 }
5747 if (!strcmp(name, "vkCmdResolveImage"))
5748 {
5749 return (void*)entry_vkCmdResolveImage;
5750 }
5751 if (!strcmp(name, "vkCmdSetEvent"))
5752 {
5753 return (void*)entry_vkCmdSetEvent;
5754 }
5755 if (!strcmp(name, "vkCmdResetEvent"))
5756 {
5757 return (void*)entry_vkCmdResetEvent;
5758 }
5759 if (!strcmp(name, "vkCmdWaitEvents"))
5760 {
5761 return (void*)entry_vkCmdWaitEvents;
5762 }
5763 if (!strcmp(name, "vkCmdPipelineBarrier"))
5764 {
5765 return (void*)entry_vkCmdPipelineBarrier;
5766 }
5767 if (!strcmp(name, "vkCmdBeginQuery"))
5768 {
5769 return (void*)entry_vkCmdBeginQuery;
5770 }
5771 if (!strcmp(name, "vkCmdEndQuery"))
5772 {
5773 return (void*)entry_vkCmdEndQuery;
5774 }
5775 if (!strcmp(name, "vkCmdResetQueryPool"))
5776 {
5777 return (void*)entry_vkCmdResetQueryPool;
5778 }
5779 if (!strcmp(name, "vkCmdWriteTimestamp"))
5780 {
5781 return (void*)entry_vkCmdWriteTimestamp;
5782 }
5783 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5784 {
5785 return (void*)entry_vkCmdCopyQueryPoolResults;
5786 }
5787 if (!strcmp(name, "vkCmdPushConstants"))
5788 {
5789 return (void*)entry_vkCmdPushConstants;
5790 }
5791 if (!strcmp(name, "vkCmdBeginRenderPass"))
5792 {
5793 return (void*)entry_vkCmdBeginRenderPass;
5794 }
5795 if (!strcmp(name, "vkCmdNextSubpass"))
5796 {
5797 return (void*)entry_vkCmdNextSubpass;
5798 }
5799 if (!strcmp(name, "vkCmdEndRenderPass"))
5800 {
5801 return (void*)entry_vkCmdEndRenderPass;
5802 }
5803 if (!strcmp(name, "vkCmdExecuteCommands"))
5804 {
5805 return (void*)entry_vkCmdExecuteCommands;
5806 }
5807#endif
5808#ifdef VK_VERSION_1_1
5809 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5810 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005811 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005812 }
5813 if (!strcmp(name, "vkBindBufferMemory2"))
5814 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005815 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005816 }
5817 if (!strcmp(name, "vkBindImageMemory2"))
5818 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005819 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005820 }
5821 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5822 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005823 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005824 }
5825 if (!strcmp(name, "vkCmdSetDeviceMask"))
5826 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005827 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005828 }
5829 if (!strcmp(name, "vkCmdDispatchBase"))
5830 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005831 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005832 }
5833 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5834 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005835 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005836 }
5837 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5838 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005839 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005840 }
5841 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5842 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005843 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005844 }
5845 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5846 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005847 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005848 }
5849 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5850 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005851 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005852 }
5853 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5854 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005855 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005856 }
5857 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5858 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005859 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005860 }
5861 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5862 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005863 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005864 }
5865 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5866 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005867 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005868 }
5869 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5870 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005871 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005872 }
5873 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5874 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005875 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005876 }
5877 if (!strcmp(name, "vkTrimCommandPool"))
5878 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005879 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005880 }
5881 if (!strcmp(name, "vkGetDeviceQueue2"))
5882 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005883 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005884 }
5885 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5886 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005887 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005888 }
5889 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5890 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005891 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005892 }
5893 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5894 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005895 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005896 }
5897 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005900 }
5901 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005904 }
5905 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5906 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005907 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005908 }
5909 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5910 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005911 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005912 }
5913 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5914 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005915 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005916 }
5917 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
5918 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005920 }
5921#endif
5922#ifdef VK_KHR_surface
5923 if (!strcmp(name, "vkDestroySurfaceKHR"))
5924 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005925 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005926 }
5927 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
5928 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005929 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005930 }
5931 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
5932 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005933 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005934 }
5935 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
5936 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005937 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005938 }
5939 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
5940 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005941 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005942 }
5943#endif
5944#ifdef VK_KHR_swapchain
5945 if (!strcmp(name, "vkCreateSwapchainKHR"))
5946 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005947 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005948 }
5949 if (!strcmp(name, "vkDestroySwapchainKHR"))
5950 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005951 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005952 }
5953 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
5954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005956 }
5957 if (!strcmp(name, "vkAcquireNextImageKHR"))
5958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005959 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005960 }
5961 if (!strcmp(name, "vkQueuePresentKHR"))
5962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005963 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005964 }
5965 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
5966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005968 }
5969 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
5970 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005971 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005972 }
5973 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
5974 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005975 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005976 }
5977 if (!strcmp(name, "vkAcquireNextImage2KHR"))
5978 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005979 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005980 }
5981#endif
5982#ifdef VK_KHR_display
5983 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
5984 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005985 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005986 }
5987 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
5988 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005989 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005990 }
5991 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
5992 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005993 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005994 }
5995 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
5996 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005997 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005998 }
5999 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6000 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006001 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006002 }
6003 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6004 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006005 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006006 }
6007 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006010 }
6011#endif
6012#ifdef VK_KHR_display_swapchain
6013 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6014 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006015 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006016 }
6017#endif
6018#ifdef VK_KHR_xlib_surface
6019 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006022 }
6023 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6024 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006025 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006026 }
6027#endif
6028#ifdef VK_KHR_xcb_surface
6029 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6030 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006031 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006032 }
6033 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6034 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006035 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006036 }
6037#endif
6038#ifdef VK_KHR_wayland_surface
6039 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6040 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006041 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006042 }
6043 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6044 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006045 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006046 }
6047#endif
6048#ifdef VK_KHR_mir_surface
6049 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006052 }
6053 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6054 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006055 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006056 }
6057#endif
6058#ifdef VK_KHR_android_surface
6059 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6060 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006061 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006062 }
6063#endif
6064#ifdef VK_KHR_win32_surface
6065 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6066 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006067 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006068 }
6069 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6070 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006071 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006072 }
6073#endif
6074#ifdef VK_KHR_get_physical_device_properties2
6075 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006078 }
6079 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6080 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006081 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006082 }
6083 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6084 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006085 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006086 }
6087 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6088 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006089 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006090 }
6091 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6092 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006093 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006094 }
6095 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6096 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006097 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006098 }
6099 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6100 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006101 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006102 }
6103#endif
6104#ifdef VK_KHR_device_group
6105 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6106 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006107 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006108 }
6109 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6110 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006111 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006112 }
6113 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6114 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006115 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006116 }
6117#endif
6118#ifdef VK_KHR_maintenance1
6119 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6120 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006121 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006122 }
6123#endif
6124#ifdef VK_KHR_device_group_creation
6125 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6126 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006127 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006128 }
6129#endif
6130#ifdef VK_KHR_external_memory_capabilities
6131 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6132 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006133 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006134 }
6135#endif
6136#ifdef VK_KHR_external_memory_win32
6137 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6138 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006139 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006140 }
6141 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6142 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006143 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006144 }
6145#endif
6146#ifdef VK_KHR_external_memory_fd
6147 if (!strcmp(name, "vkGetMemoryFdKHR"))
6148 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006149 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006150 }
6151 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6152 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006153 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006154 }
6155#endif
6156#ifdef VK_KHR_external_semaphore_capabilities
6157 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6158 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006159 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006160 }
6161#endif
6162#ifdef VK_KHR_external_semaphore_win32
6163 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6164 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006165 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006166 }
6167 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6168 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006169 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006170 }
6171#endif
6172#ifdef VK_KHR_external_semaphore_fd
6173 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6174 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006175 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006176 }
6177 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6178 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006179 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006180 }
6181#endif
6182#ifdef VK_KHR_push_descriptor
6183 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6184 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006185 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006186 }
6187 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6188 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006189 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006190 }
6191#endif
6192#ifdef VK_KHR_descriptor_update_template
6193 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6194 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006195 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006196 }
6197 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6198 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006199 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006200 }
6201 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6202 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006203 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006204 }
6205#endif
6206#ifdef VK_KHR_create_renderpass2
6207 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6208 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006209 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006210 }
6211 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6212 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006213 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006214 }
6215 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6216 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006217 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006218 }
6219 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6220 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006221 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006222 }
6223#endif
6224#ifdef VK_KHR_shared_presentable_image
6225 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6226 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006227 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006228 }
6229#endif
6230#ifdef VK_KHR_external_fence_capabilities
6231 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6232 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006233 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006234 }
6235#endif
6236#ifdef VK_KHR_external_fence_win32
6237 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6238 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006239 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006240 }
6241 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6242 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006243 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006244 }
6245#endif
6246#ifdef VK_KHR_external_fence_fd
6247 if (!strcmp(name, "vkImportFenceFdKHR"))
6248 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006249 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006250 }
6251 if (!strcmp(name, "vkGetFenceFdKHR"))
6252 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006253 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006254 }
6255#endif
6256#ifdef VK_KHR_get_surface_capabilities2
6257 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6258 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006259 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006260 }
6261 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6262 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006263 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006264 }
6265#endif
6266#ifdef VK_KHR_get_display_properties2
6267 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6268 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006269 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006270 }
6271 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006273 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006274 }
6275 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6276 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006277 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006278 }
6279 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6280 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006281 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006282 }
6283#endif
6284#ifdef VK_KHR_get_memory_requirements2
6285 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6286 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006287 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006288 }
6289 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6290 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006291 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006292 }
6293 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6294 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006295 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006296 }
6297#endif
6298#ifdef VK_KHR_sampler_ycbcr_conversion
6299 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6300 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006301 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006302 }
6303 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6304 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006305 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006306 }
6307#endif
6308#ifdef VK_KHR_bind_memory2
6309 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6310 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006311 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006312 }
6313 if (!strcmp(name, "vkBindImageMemory2KHR"))
6314 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006315 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006316 }
6317#endif
6318#ifdef VK_KHR_maintenance3
6319 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6320 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006321 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006322 }
6323#endif
6324#ifdef VK_KHR_draw_indirect_count
6325 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6326 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006327 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006328 }
6329 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6330 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006331 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006332 }
6333#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006334#ifdef VK_ANDROID_native_buffer
6335 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6336 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006337 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006338 }
6339 if (!strcmp(name, "vkAcquireImageANDROID"))
6340 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006341 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006342 }
6343 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6344 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006345 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006346 }
6347#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006348#ifdef VK_EXT_debug_report
6349 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6350 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006351 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006352 }
6353 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6354 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006355 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006356 }
6357 if (!strcmp(name, "vkDebugReportMessageEXT"))
6358 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006359 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006360 }
6361#endif
6362#ifdef VK_EXT_debug_marker
6363 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6364 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006365 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006366 }
6367 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6368 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006369 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006370 }
6371 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6372 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006373 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006374 }
6375 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6376 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006377 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006378 }
6379 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6380 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006381 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006382 }
6383#endif
6384#ifdef VK_AMD_draw_indirect_count
6385 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6386 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006387 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006388 }
6389 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6390 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006391 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006392 }
6393#endif
6394#ifdef VK_AMD_shader_info
6395 if (!strcmp(name, "vkGetShaderInfoAMD"))
6396 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006397 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006398 }
6399#endif
6400#ifdef VK_NV_external_memory_capabilities
6401 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6402 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006403 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006404 }
6405#endif
6406#ifdef VK_NV_external_memory_win32
6407 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6408 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006409 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006410 }
6411#endif
6412#ifdef VK_NN_vi_surface
6413 if (!strcmp(name, "vkCreateViSurfaceNN"))
6414 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006415 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006416 }
6417#endif
6418#ifdef VK_EXT_conditional_rendering
6419 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6420 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006421 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006422 }
6423 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6424 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006425 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006426 }
6427#endif
6428#ifdef VK_NVX_device_generated_commands
6429 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6430 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006431 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006432 }
6433 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6434 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006435 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006436 }
6437 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6438 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006439 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006440 }
6441 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006443 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006444 }
6445 if (!strcmp(name, "vkCreateObjectTableNVX"))
6446 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006447 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006448 }
6449 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6450 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006451 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006452 }
6453 if (!strcmp(name, "vkRegisterObjectsNVX"))
6454 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006455 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006456 }
6457 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6458 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006459 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006460 }
6461 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6462 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006463 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006464 }
6465#endif
6466#ifdef VK_NV_clip_space_w_scaling
6467 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6468 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006469 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006470 }
6471#endif
6472#ifdef VK_EXT_direct_mode_display
6473 if (!strcmp(name, "vkReleaseDisplayEXT"))
6474 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006475 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006476 }
6477#endif
6478#ifdef VK_EXT_acquire_xlib_display
6479 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6480 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006481 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006482 }
6483 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6484 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006485 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006486 }
6487#endif
6488#ifdef VK_EXT_display_surface_counter
6489 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6490 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006491 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006492 }
6493#endif
6494#ifdef VK_EXT_display_control
6495 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6496 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006497 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006498 }
6499 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6500 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006501 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006502 }
6503 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006506 }
6507 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6508 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006509 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006510 }
6511#endif
6512#ifdef VK_GOOGLE_display_timing
6513 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006516 }
6517 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6518 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006520 }
6521#endif
6522#ifdef VK_EXT_discard_rectangles
6523 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6524 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006525 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006526 }
6527#endif
6528#ifdef VK_EXT_hdr_metadata
6529 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006532 }
6533#endif
6534#ifdef VK_MVK_ios_surface
6535 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6536 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006537 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006538 }
6539#endif
6540#ifdef VK_MVK_macos_surface
6541 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006544 }
6545#endif
6546#ifdef VK_EXT_debug_utils
6547 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6548 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006549 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006550 }
6551 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6552 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006553 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006554 }
6555 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6556 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006557 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006558 }
6559 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6560 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006561 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006562 }
6563 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6564 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006565 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006566 }
6567 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6568 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006569 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006570 }
6571 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6572 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006573 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006574 }
6575 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6576 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006577 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006578 }
6579 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6580 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006581 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006582 }
6583 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6584 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006585 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006586 }
6587 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006590 }
6591#endif
6592#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6593 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6594 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006595 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006596 }
6597 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6598 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006599 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006600 }
6601#endif
6602#ifdef VK_EXT_sample_locations
6603 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6604 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006605 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006606 }
6607 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6608 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006609 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006610 }
6611#endif
6612#ifdef VK_EXT_validation_cache
6613 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6614 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006615 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006616 }
6617 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6618 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006619 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006620 }
6621 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6622 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006623 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006624 }
6625 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6626 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006627 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006628 }
6629#endif
6630#ifdef VK_EXT_external_memory_host
6631 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006634 }
6635#endif
6636#ifdef VK_AMD_buffer_marker
6637 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6638 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006639 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006640 }
6641#endif
6642#ifdef VK_NV_device_diagnostic_checkpoints
6643 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6644 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006645 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006646 }
6647 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6648 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006649 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006650 }
6651#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006652#ifdef VK_GOOGLE_address_space
6653 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6654 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006655 return nullptr;
6656 }
6657#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006658#ifdef VK_GOOGLE_color_buffer
6659 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6660 {
6661 return nullptr;
6662 }
6663 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6664 {
6665 return nullptr;
6666 }
6667#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006668#ifdef VK_GOOGLE_sized_descriptor_update_template
6669 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6670 {
6671 return nullptr;
6672 }
6673#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006674#ifdef VK_GOOGLE_async_command_buffers
6675 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6676 {
6677 return nullptr;
6678 }
6679 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6680 {
6681 return nullptr;
6682 }
6683 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6684 {
6685 return nullptr;
6686 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006687 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6688 {
6689 return nullptr;
6690 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006691#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006692#ifdef VK_GOOGLE_create_resources_with_requirements
6693 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6694 {
6695 return nullptr;
6696 }
6697 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6698 {
6699 return nullptr;
6700 }
6701#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006702#ifdef VK_GOOGLE_address_space_info
6703 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6704 {
6705 return nullptr;
6706 }
6707#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006708 return nullptr;
6709}
6710void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6711 auto resources = ResourceTracker::get();
6712 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6713#ifdef VK_VERSION_1_0
6714 if (!strcmp(name, "vkCreateInstance"))
6715 {
6716 return (void*)entry_vkCreateInstance;
6717 }
6718 if (!strcmp(name, "vkDestroyInstance"))
6719 {
6720 return (void*)entry_vkDestroyInstance;
6721 }
6722 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6723 {
6724 return (void*)entry_vkEnumeratePhysicalDevices;
6725 }
6726 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6727 {
6728 return (void*)entry_vkGetPhysicalDeviceFeatures;
6729 }
6730 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6731 {
6732 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6733 }
6734 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6735 {
6736 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6737 }
6738 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6739 {
6740 return (void*)entry_vkGetPhysicalDeviceProperties;
6741 }
6742 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6743 {
6744 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6745 }
6746 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6747 {
6748 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6749 }
6750 if (!strcmp(name, "vkGetInstanceProcAddr"))
6751 {
6752 return (void*)entry_vkGetInstanceProcAddr;
6753 }
6754 if (!strcmp(name, "vkGetDeviceProcAddr"))
6755 {
6756 return (void*)entry_vkGetDeviceProcAddr;
6757 }
6758 if (!strcmp(name, "vkCreateDevice"))
6759 {
6760 return (void*)entry_vkCreateDevice;
6761 }
6762 if (!strcmp(name, "vkDestroyDevice"))
6763 {
6764 return (void*)entry_vkDestroyDevice;
6765 }
6766 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6767 {
6768 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6769 }
6770 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6771 {
6772 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6773 }
6774 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6775 {
6776 return (void*)entry_vkEnumerateInstanceLayerProperties;
6777 }
6778 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6779 {
6780 return (void*)entry_vkEnumerateDeviceLayerProperties;
6781 }
6782 if (!strcmp(name, "vkGetDeviceQueue"))
6783 {
6784 return (void*)entry_vkGetDeviceQueue;
6785 }
6786 if (!strcmp(name, "vkQueueSubmit"))
6787 {
6788 return (void*)entry_vkQueueSubmit;
6789 }
6790 if (!strcmp(name, "vkQueueWaitIdle"))
6791 {
6792 return (void*)entry_vkQueueWaitIdle;
6793 }
6794 if (!strcmp(name, "vkDeviceWaitIdle"))
6795 {
6796 return (void*)entry_vkDeviceWaitIdle;
6797 }
6798 if (!strcmp(name, "vkAllocateMemory"))
6799 {
6800 return (void*)entry_vkAllocateMemory;
6801 }
6802 if (!strcmp(name, "vkFreeMemory"))
6803 {
6804 return (void*)entry_vkFreeMemory;
6805 }
6806 if (!strcmp(name, "vkMapMemory"))
6807 {
6808 return (void*)entry_vkMapMemory;
6809 }
6810 if (!strcmp(name, "vkUnmapMemory"))
6811 {
6812 return (void*)entry_vkUnmapMemory;
6813 }
6814 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6815 {
6816 return (void*)entry_vkFlushMappedMemoryRanges;
6817 }
6818 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6819 {
6820 return (void*)entry_vkInvalidateMappedMemoryRanges;
6821 }
6822 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6823 {
6824 return (void*)entry_vkGetDeviceMemoryCommitment;
6825 }
6826 if (!strcmp(name, "vkBindBufferMemory"))
6827 {
6828 return (void*)entry_vkBindBufferMemory;
6829 }
6830 if (!strcmp(name, "vkBindImageMemory"))
6831 {
6832 return (void*)entry_vkBindImageMemory;
6833 }
6834 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6835 {
6836 return (void*)entry_vkGetBufferMemoryRequirements;
6837 }
6838 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6839 {
6840 return (void*)entry_vkGetImageMemoryRequirements;
6841 }
6842 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6843 {
6844 return (void*)entry_vkGetImageSparseMemoryRequirements;
6845 }
6846 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6847 {
6848 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6849 }
6850 if (!strcmp(name, "vkQueueBindSparse"))
6851 {
6852 return (void*)entry_vkQueueBindSparse;
6853 }
6854 if (!strcmp(name, "vkCreateFence"))
6855 {
6856 return (void*)entry_vkCreateFence;
6857 }
6858 if (!strcmp(name, "vkDestroyFence"))
6859 {
6860 return (void*)entry_vkDestroyFence;
6861 }
6862 if (!strcmp(name, "vkResetFences"))
6863 {
6864 return (void*)entry_vkResetFences;
6865 }
6866 if (!strcmp(name, "vkGetFenceStatus"))
6867 {
6868 return (void*)entry_vkGetFenceStatus;
6869 }
6870 if (!strcmp(name, "vkWaitForFences"))
6871 {
6872 return (void*)entry_vkWaitForFences;
6873 }
6874 if (!strcmp(name, "vkCreateSemaphore"))
6875 {
6876 return (void*)entry_vkCreateSemaphore;
6877 }
6878 if (!strcmp(name, "vkDestroySemaphore"))
6879 {
6880 return (void*)entry_vkDestroySemaphore;
6881 }
6882 if (!strcmp(name, "vkCreateEvent"))
6883 {
6884 return (void*)entry_vkCreateEvent;
6885 }
6886 if (!strcmp(name, "vkDestroyEvent"))
6887 {
6888 return (void*)entry_vkDestroyEvent;
6889 }
6890 if (!strcmp(name, "vkGetEventStatus"))
6891 {
6892 return (void*)entry_vkGetEventStatus;
6893 }
6894 if (!strcmp(name, "vkSetEvent"))
6895 {
6896 return (void*)entry_vkSetEvent;
6897 }
6898 if (!strcmp(name, "vkResetEvent"))
6899 {
6900 return (void*)entry_vkResetEvent;
6901 }
6902 if (!strcmp(name, "vkCreateQueryPool"))
6903 {
6904 return (void*)entry_vkCreateQueryPool;
6905 }
6906 if (!strcmp(name, "vkDestroyQueryPool"))
6907 {
6908 return (void*)entry_vkDestroyQueryPool;
6909 }
6910 if (!strcmp(name, "vkGetQueryPoolResults"))
6911 {
6912 return (void*)entry_vkGetQueryPoolResults;
6913 }
6914 if (!strcmp(name, "vkCreateBuffer"))
6915 {
6916 return (void*)entry_vkCreateBuffer;
6917 }
6918 if (!strcmp(name, "vkDestroyBuffer"))
6919 {
6920 return (void*)entry_vkDestroyBuffer;
6921 }
6922 if (!strcmp(name, "vkCreateBufferView"))
6923 {
6924 return (void*)entry_vkCreateBufferView;
6925 }
6926 if (!strcmp(name, "vkDestroyBufferView"))
6927 {
6928 return (void*)entry_vkDestroyBufferView;
6929 }
6930 if (!strcmp(name, "vkCreateImage"))
6931 {
6932 return (void*)entry_vkCreateImage;
6933 }
6934 if (!strcmp(name, "vkDestroyImage"))
6935 {
6936 return (void*)entry_vkDestroyImage;
6937 }
6938 if (!strcmp(name, "vkGetImageSubresourceLayout"))
6939 {
6940 return (void*)entry_vkGetImageSubresourceLayout;
6941 }
6942 if (!strcmp(name, "vkCreateImageView"))
6943 {
6944 return (void*)entry_vkCreateImageView;
6945 }
6946 if (!strcmp(name, "vkDestroyImageView"))
6947 {
6948 return (void*)entry_vkDestroyImageView;
6949 }
6950 if (!strcmp(name, "vkCreateShaderModule"))
6951 {
6952 return (void*)entry_vkCreateShaderModule;
6953 }
6954 if (!strcmp(name, "vkDestroyShaderModule"))
6955 {
6956 return (void*)entry_vkDestroyShaderModule;
6957 }
6958 if (!strcmp(name, "vkCreatePipelineCache"))
6959 {
6960 return (void*)entry_vkCreatePipelineCache;
6961 }
6962 if (!strcmp(name, "vkDestroyPipelineCache"))
6963 {
6964 return (void*)entry_vkDestroyPipelineCache;
6965 }
6966 if (!strcmp(name, "vkGetPipelineCacheData"))
6967 {
6968 return (void*)entry_vkGetPipelineCacheData;
6969 }
6970 if (!strcmp(name, "vkMergePipelineCaches"))
6971 {
6972 return (void*)entry_vkMergePipelineCaches;
6973 }
6974 if (!strcmp(name, "vkCreateGraphicsPipelines"))
6975 {
6976 return (void*)entry_vkCreateGraphicsPipelines;
6977 }
6978 if (!strcmp(name, "vkCreateComputePipelines"))
6979 {
6980 return (void*)entry_vkCreateComputePipelines;
6981 }
6982 if (!strcmp(name, "vkDestroyPipeline"))
6983 {
6984 return (void*)entry_vkDestroyPipeline;
6985 }
6986 if (!strcmp(name, "vkCreatePipelineLayout"))
6987 {
6988 return (void*)entry_vkCreatePipelineLayout;
6989 }
6990 if (!strcmp(name, "vkDestroyPipelineLayout"))
6991 {
6992 return (void*)entry_vkDestroyPipelineLayout;
6993 }
6994 if (!strcmp(name, "vkCreateSampler"))
6995 {
6996 return (void*)entry_vkCreateSampler;
6997 }
6998 if (!strcmp(name, "vkDestroySampler"))
6999 {
7000 return (void*)entry_vkDestroySampler;
7001 }
7002 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7003 {
7004 return (void*)entry_vkCreateDescriptorSetLayout;
7005 }
7006 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7007 {
7008 return (void*)entry_vkDestroyDescriptorSetLayout;
7009 }
7010 if (!strcmp(name, "vkCreateDescriptorPool"))
7011 {
7012 return (void*)entry_vkCreateDescriptorPool;
7013 }
7014 if (!strcmp(name, "vkDestroyDescriptorPool"))
7015 {
7016 return (void*)entry_vkDestroyDescriptorPool;
7017 }
7018 if (!strcmp(name, "vkResetDescriptorPool"))
7019 {
7020 return (void*)entry_vkResetDescriptorPool;
7021 }
7022 if (!strcmp(name, "vkAllocateDescriptorSets"))
7023 {
7024 return (void*)entry_vkAllocateDescriptorSets;
7025 }
7026 if (!strcmp(name, "vkFreeDescriptorSets"))
7027 {
7028 return (void*)entry_vkFreeDescriptorSets;
7029 }
7030 if (!strcmp(name, "vkUpdateDescriptorSets"))
7031 {
7032 return (void*)entry_vkUpdateDescriptorSets;
7033 }
7034 if (!strcmp(name, "vkCreateFramebuffer"))
7035 {
7036 return (void*)entry_vkCreateFramebuffer;
7037 }
7038 if (!strcmp(name, "vkDestroyFramebuffer"))
7039 {
7040 return (void*)entry_vkDestroyFramebuffer;
7041 }
7042 if (!strcmp(name, "vkCreateRenderPass"))
7043 {
7044 return (void*)entry_vkCreateRenderPass;
7045 }
7046 if (!strcmp(name, "vkDestroyRenderPass"))
7047 {
7048 return (void*)entry_vkDestroyRenderPass;
7049 }
7050 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7051 {
7052 return (void*)entry_vkGetRenderAreaGranularity;
7053 }
7054 if (!strcmp(name, "vkCreateCommandPool"))
7055 {
7056 return (void*)entry_vkCreateCommandPool;
7057 }
7058 if (!strcmp(name, "vkDestroyCommandPool"))
7059 {
7060 return (void*)entry_vkDestroyCommandPool;
7061 }
7062 if (!strcmp(name, "vkResetCommandPool"))
7063 {
7064 return (void*)entry_vkResetCommandPool;
7065 }
7066 if (!strcmp(name, "vkAllocateCommandBuffers"))
7067 {
7068 return (void*)entry_vkAllocateCommandBuffers;
7069 }
7070 if (!strcmp(name, "vkFreeCommandBuffers"))
7071 {
7072 return (void*)entry_vkFreeCommandBuffers;
7073 }
7074 if (!strcmp(name, "vkBeginCommandBuffer"))
7075 {
7076 return (void*)entry_vkBeginCommandBuffer;
7077 }
7078 if (!strcmp(name, "vkEndCommandBuffer"))
7079 {
7080 return (void*)entry_vkEndCommandBuffer;
7081 }
7082 if (!strcmp(name, "vkResetCommandBuffer"))
7083 {
7084 return (void*)entry_vkResetCommandBuffer;
7085 }
7086 if (!strcmp(name, "vkCmdBindPipeline"))
7087 {
7088 return (void*)entry_vkCmdBindPipeline;
7089 }
7090 if (!strcmp(name, "vkCmdSetViewport"))
7091 {
7092 return (void*)entry_vkCmdSetViewport;
7093 }
7094 if (!strcmp(name, "vkCmdSetScissor"))
7095 {
7096 return (void*)entry_vkCmdSetScissor;
7097 }
7098 if (!strcmp(name, "vkCmdSetLineWidth"))
7099 {
7100 return (void*)entry_vkCmdSetLineWidth;
7101 }
7102 if (!strcmp(name, "vkCmdSetDepthBias"))
7103 {
7104 return (void*)entry_vkCmdSetDepthBias;
7105 }
7106 if (!strcmp(name, "vkCmdSetBlendConstants"))
7107 {
7108 return (void*)entry_vkCmdSetBlendConstants;
7109 }
7110 if (!strcmp(name, "vkCmdSetDepthBounds"))
7111 {
7112 return (void*)entry_vkCmdSetDepthBounds;
7113 }
7114 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7115 {
7116 return (void*)entry_vkCmdSetStencilCompareMask;
7117 }
7118 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7119 {
7120 return (void*)entry_vkCmdSetStencilWriteMask;
7121 }
7122 if (!strcmp(name, "vkCmdSetStencilReference"))
7123 {
7124 return (void*)entry_vkCmdSetStencilReference;
7125 }
7126 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7127 {
7128 return (void*)entry_vkCmdBindDescriptorSets;
7129 }
7130 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7131 {
7132 return (void*)entry_vkCmdBindIndexBuffer;
7133 }
7134 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7135 {
7136 return (void*)entry_vkCmdBindVertexBuffers;
7137 }
7138 if (!strcmp(name, "vkCmdDraw"))
7139 {
7140 return (void*)entry_vkCmdDraw;
7141 }
7142 if (!strcmp(name, "vkCmdDrawIndexed"))
7143 {
7144 return (void*)entry_vkCmdDrawIndexed;
7145 }
7146 if (!strcmp(name, "vkCmdDrawIndirect"))
7147 {
7148 return (void*)entry_vkCmdDrawIndirect;
7149 }
7150 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7151 {
7152 return (void*)entry_vkCmdDrawIndexedIndirect;
7153 }
7154 if (!strcmp(name, "vkCmdDispatch"))
7155 {
7156 return (void*)entry_vkCmdDispatch;
7157 }
7158 if (!strcmp(name, "vkCmdDispatchIndirect"))
7159 {
7160 return (void*)entry_vkCmdDispatchIndirect;
7161 }
7162 if (!strcmp(name, "vkCmdCopyBuffer"))
7163 {
7164 return (void*)entry_vkCmdCopyBuffer;
7165 }
7166 if (!strcmp(name, "vkCmdCopyImage"))
7167 {
7168 return (void*)entry_vkCmdCopyImage;
7169 }
7170 if (!strcmp(name, "vkCmdBlitImage"))
7171 {
7172 return (void*)entry_vkCmdBlitImage;
7173 }
7174 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7175 {
7176 return (void*)entry_vkCmdCopyBufferToImage;
7177 }
7178 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7179 {
7180 return (void*)entry_vkCmdCopyImageToBuffer;
7181 }
7182 if (!strcmp(name, "vkCmdUpdateBuffer"))
7183 {
7184 return (void*)entry_vkCmdUpdateBuffer;
7185 }
7186 if (!strcmp(name, "vkCmdFillBuffer"))
7187 {
7188 return (void*)entry_vkCmdFillBuffer;
7189 }
7190 if (!strcmp(name, "vkCmdClearColorImage"))
7191 {
7192 return (void*)entry_vkCmdClearColorImage;
7193 }
7194 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7195 {
7196 return (void*)entry_vkCmdClearDepthStencilImage;
7197 }
7198 if (!strcmp(name, "vkCmdClearAttachments"))
7199 {
7200 return (void*)entry_vkCmdClearAttachments;
7201 }
7202 if (!strcmp(name, "vkCmdResolveImage"))
7203 {
7204 return (void*)entry_vkCmdResolveImage;
7205 }
7206 if (!strcmp(name, "vkCmdSetEvent"))
7207 {
7208 return (void*)entry_vkCmdSetEvent;
7209 }
7210 if (!strcmp(name, "vkCmdResetEvent"))
7211 {
7212 return (void*)entry_vkCmdResetEvent;
7213 }
7214 if (!strcmp(name, "vkCmdWaitEvents"))
7215 {
7216 return (void*)entry_vkCmdWaitEvents;
7217 }
7218 if (!strcmp(name, "vkCmdPipelineBarrier"))
7219 {
7220 return (void*)entry_vkCmdPipelineBarrier;
7221 }
7222 if (!strcmp(name, "vkCmdBeginQuery"))
7223 {
7224 return (void*)entry_vkCmdBeginQuery;
7225 }
7226 if (!strcmp(name, "vkCmdEndQuery"))
7227 {
7228 return (void*)entry_vkCmdEndQuery;
7229 }
7230 if (!strcmp(name, "vkCmdResetQueryPool"))
7231 {
7232 return (void*)entry_vkCmdResetQueryPool;
7233 }
7234 if (!strcmp(name, "vkCmdWriteTimestamp"))
7235 {
7236 return (void*)entry_vkCmdWriteTimestamp;
7237 }
7238 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7239 {
7240 return (void*)entry_vkCmdCopyQueryPoolResults;
7241 }
7242 if (!strcmp(name, "vkCmdPushConstants"))
7243 {
7244 return (void*)entry_vkCmdPushConstants;
7245 }
7246 if (!strcmp(name, "vkCmdBeginRenderPass"))
7247 {
7248 return (void*)entry_vkCmdBeginRenderPass;
7249 }
7250 if (!strcmp(name, "vkCmdNextSubpass"))
7251 {
7252 return (void*)entry_vkCmdNextSubpass;
7253 }
7254 if (!strcmp(name, "vkCmdEndRenderPass"))
7255 {
7256 return (void*)entry_vkCmdEndRenderPass;
7257 }
7258 if (!strcmp(name, "vkCmdExecuteCommands"))
7259 {
7260 return (void*)entry_vkCmdExecuteCommands;
7261 }
7262#endif
7263#ifdef VK_VERSION_1_1
7264 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7265 {
7266 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7267 }
7268 if (!strcmp(name, "vkBindBufferMemory2"))
7269 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007270 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007271 }
7272 if (!strcmp(name, "vkBindImageMemory2"))
7273 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007274 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007275 }
7276 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7277 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007278 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007279 }
7280 if (!strcmp(name, "vkCmdSetDeviceMask"))
7281 {
7282 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7283 }
7284 if (!strcmp(name, "vkCmdDispatchBase"))
7285 {
7286 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7287 }
7288 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7289 {
7290 return nullptr;
7291 }
7292 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7293 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007294 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007295 }
7296 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7297 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007298 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007299 }
7300 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7301 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007302 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007303 }
7304 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7305 {
7306 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7307 }
7308 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7309 {
7310 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7311 }
7312 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7313 {
7314 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7315 }
7316 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7317 {
7318 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7319 }
7320 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7321 {
7322 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7323 }
7324 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7325 {
7326 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7327 }
7328 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7329 {
7330 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7331 }
7332 if (!strcmp(name, "vkTrimCommandPool"))
7333 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007334 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007335 }
7336 if (!strcmp(name, "vkGetDeviceQueue2"))
7337 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007338 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007339 }
7340 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7341 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007342 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007343 }
7344 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7345 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007346 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007347 }
7348 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7349 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007350 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007351 }
7352 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7353 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007354 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007355 }
7356 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7357 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007358 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007359 }
7360 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7361 {
7362 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7363 }
7364 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7365 {
7366 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7367 }
7368 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7369 {
7370 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7371 }
7372 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7373 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007374 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007375 }
7376#endif
7377#ifdef VK_KHR_surface
7378 if (!strcmp(name, "vkDestroySurfaceKHR"))
7379 {
7380 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7381 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7382 }
7383 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7384 {
7385 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7386 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7387 }
7388 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7389 {
7390 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7391 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7392 }
7393 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7394 {
7395 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7396 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7397 }
7398 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7399 {
7400 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7401 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7402 }
7403#endif
7404#ifdef VK_KHR_swapchain
7405 if (!strcmp(name, "vkCreateSwapchainKHR"))
7406 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007407 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007408 }
7409 if (!strcmp(name, "vkDestroySwapchainKHR"))
7410 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007411 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007412 }
7413 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7414 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007415 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007416 }
7417 if (!strcmp(name, "vkAcquireNextImageKHR"))
7418 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007419 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007420 }
7421 if (!strcmp(name, "vkQueuePresentKHR"))
7422 {
7423 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7424 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7425 }
7426 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7427 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007428 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007429 }
7430 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7431 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007432 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007433 }
7434 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7435 {
7436 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7437 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7438 }
7439 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7440 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007441 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007442 }
7443#endif
7444#ifdef VK_KHR_display
7445 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7446 {
7447 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7448 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7449 }
7450 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7451 {
7452 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7453 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7454 }
7455 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7456 {
7457 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7458 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7459 }
7460 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7461 {
7462 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7463 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7464 }
7465 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7466 {
7467 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7468 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7469 }
7470 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7471 {
7472 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7473 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7474 }
7475 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7476 {
7477 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7478 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7479 }
7480#endif
7481#ifdef VK_KHR_display_swapchain
7482 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7483 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007484 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007485 }
7486#endif
7487#ifdef VK_KHR_xlib_surface
7488 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7489 {
7490 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7491 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7492 }
7493 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7494 {
7495 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7496 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7497 }
7498#endif
7499#ifdef VK_KHR_xcb_surface
7500 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7501 {
7502 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7503 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7504 }
7505 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7506 {
7507 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7508 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7509 }
7510#endif
7511#ifdef VK_KHR_wayland_surface
7512 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7513 {
7514 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7515 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7516 }
7517 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7518 {
7519 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7520 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7521 }
7522#endif
7523#ifdef VK_KHR_mir_surface
7524 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7525 {
7526 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7527 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7528 }
7529 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7530 {
7531 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7532 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7533 }
7534#endif
7535#ifdef VK_KHR_android_surface
7536 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7537 {
7538 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7539 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7540 }
7541#endif
7542#ifdef VK_KHR_win32_surface
7543 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7544 {
7545 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7546 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7547 }
7548 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7549 {
7550 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7551 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7552 }
7553#endif
7554#ifdef VK_KHR_get_physical_device_properties2
7555 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7556 {
7557 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7558 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7559 }
7560 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7561 {
7562 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7563 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7564 }
7565 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7566 {
7567 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7568 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7569 }
7570 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7571 {
7572 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7573 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7574 }
7575 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7576 {
7577 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7578 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7579 }
7580 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7581 {
7582 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7583 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7584 }
7585 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7586 {
7587 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7588 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7589 }
7590#endif
7591#ifdef VK_KHR_device_group
7592 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7593 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007594 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007595 }
7596 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7597 {
7598 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7599 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7600 }
7601 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7602 {
7603 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7604 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7605 }
7606#endif
7607#ifdef VK_KHR_maintenance1
7608 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7609 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007610 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007611 }
7612#endif
7613#ifdef VK_KHR_device_group_creation
7614 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7615 {
7616 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7617 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7618 }
7619#endif
7620#ifdef VK_KHR_external_memory_capabilities
7621 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7622 {
7623 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7624 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7625 }
7626#endif
7627#ifdef VK_KHR_external_memory_win32
7628 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7629 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007630 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007631 }
7632 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7633 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007634 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007635 }
7636#endif
7637#ifdef VK_KHR_external_memory_fd
7638 if (!strcmp(name, "vkGetMemoryFdKHR"))
7639 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007640 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007641 }
7642 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7643 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007644 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007645 }
7646#endif
7647#ifdef VK_KHR_external_semaphore_capabilities
7648 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7649 {
7650 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7651 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7652 }
7653#endif
7654#ifdef VK_KHR_external_semaphore_win32
7655 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7656 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007657 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007658 }
7659 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7660 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007661 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007662 }
7663#endif
7664#ifdef VK_KHR_external_semaphore_fd
7665 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7666 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007667 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007668 }
7669 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7670 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007671 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007672 }
7673#endif
7674#ifdef VK_KHR_push_descriptor
7675 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7676 {
7677 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7678 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7679 }
7680 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7681 {
7682 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7683 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7684 }
7685#endif
7686#ifdef VK_KHR_descriptor_update_template
7687 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7688 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007689 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007690 }
7691 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7692 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007693 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007694 }
7695 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7696 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007697 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007698 }
7699#endif
7700#ifdef VK_KHR_create_renderpass2
7701 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7702 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007703 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007704 }
7705 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7706 {
7707 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7708 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7709 }
7710 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7711 {
7712 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7713 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7714 }
7715 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7716 {
7717 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7718 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7719 }
7720#endif
7721#ifdef VK_KHR_shared_presentable_image
7722 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7723 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007724 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007725 }
7726#endif
7727#ifdef VK_KHR_external_fence_capabilities
7728 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7729 {
7730 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7731 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7732 }
7733#endif
7734#ifdef VK_KHR_external_fence_win32
7735 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7736 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007737 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007738 }
7739 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7740 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007741 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007742 }
7743#endif
7744#ifdef VK_KHR_external_fence_fd
7745 if (!strcmp(name, "vkImportFenceFdKHR"))
7746 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007747 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007748 }
7749 if (!strcmp(name, "vkGetFenceFdKHR"))
7750 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007751 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007752 }
7753#endif
7754#ifdef VK_KHR_get_surface_capabilities2
7755 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7756 {
7757 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7758 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7759 }
7760 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7761 {
7762 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7763 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7764 }
7765#endif
7766#ifdef VK_KHR_get_display_properties2
7767 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7768 {
7769 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7770 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7771 }
7772 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7773 {
7774 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7775 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7776 }
7777 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7778 {
7779 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7780 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7781 }
7782 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7783 {
7784 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7785 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7786 }
7787#endif
7788#ifdef VK_KHR_get_memory_requirements2
7789 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7790 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007791 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007792 }
7793 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7794 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007795 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007796 }
7797 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7798 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007799 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007800 }
7801#endif
7802#ifdef VK_KHR_sampler_ycbcr_conversion
7803 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7804 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007805 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007806 }
7807 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7808 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007809 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007810 }
7811#endif
7812#ifdef VK_KHR_bind_memory2
7813 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7814 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007815 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007816 }
7817 if (!strcmp(name, "vkBindImageMemory2KHR"))
7818 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007819 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007820 }
7821#endif
7822#ifdef VK_KHR_maintenance3
7823 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7824 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007825 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007826 }
7827#endif
7828#ifdef VK_KHR_draw_indirect_count
7829 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7830 {
7831 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7832 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7833 }
7834 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7835 {
7836 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7837 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7838 }
7839#endif
7840#ifdef VK_ANDROID_native_buffer
7841 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7842 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007843 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007844 }
7845 if (!strcmp(name, "vkAcquireImageANDROID"))
7846 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007847 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007848 }
7849 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7850 {
7851 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7852 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7853 }
7854#endif
7855#ifdef VK_EXT_debug_report
7856 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7857 {
7858 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7859 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7860 }
7861 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7862 {
7863 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7864 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7865 }
7866 if (!strcmp(name, "vkDebugReportMessageEXT"))
7867 {
7868 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7869 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7870 }
7871#endif
7872#ifdef VK_EXT_debug_marker
7873 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7874 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007875 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007876 }
7877 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7878 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007879 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007880 }
7881 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7882 {
7883 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7884 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7885 }
7886 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7887 {
7888 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7889 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7890 }
7891 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
7892 {
7893 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7894 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
7895 }
7896#endif
7897#ifdef VK_AMD_draw_indirect_count
7898 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
7899 {
7900 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7901 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
7902 }
7903 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
7904 {
7905 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
7906 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
7907 }
7908#endif
7909#ifdef VK_AMD_shader_info
7910 if (!strcmp(name, "vkGetShaderInfoAMD"))
7911 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007912 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007913 }
7914#endif
7915#ifdef VK_NV_external_memory_capabilities
7916 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
7917 {
7918 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
7919 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
7920 }
7921#endif
7922#ifdef VK_NV_external_memory_win32
7923 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
7924 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007925 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007926 }
7927#endif
7928#ifdef VK_NN_vi_surface
7929 if (!strcmp(name, "vkCreateViSurfaceNN"))
7930 {
7931 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
7932 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
7933 }
7934#endif
7935#ifdef VK_EXT_conditional_rendering
7936 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
7937 {
7938 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7939 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
7940 }
7941 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
7942 {
7943 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
7944 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
7945 }
7946#endif
7947#ifdef VK_NVX_device_generated_commands
7948 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
7949 {
7950 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7951 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
7952 }
7953 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
7954 {
7955 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7956 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
7957 }
7958 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
7959 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007960 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007961 }
7962 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
7963 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007964 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007965 }
7966 if (!strcmp(name, "vkCreateObjectTableNVX"))
7967 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007968 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007969 }
7970 if (!strcmp(name, "vkDestroyObjectTableNVX"))
7971 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007972 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007973 }
7974 if (!strcmp(name, "vkRegisterObjectsNVX"))
7975 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007976 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007977 }
7978 if (!strcmp(name, "vkUnregisterObjectsNVX"))
7979 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007980 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007981 }
7982 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
7983 {
7984 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
7985 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
7986 }
7987#endif
7988#ifdef VK_NV_clip_space_w_scaling
7989 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
7990 {
7991 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
7992 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
7993 }
7994#endif
7995#ifdef VK_EXT_direct_mode_display
7996 if (!strcmp(name, "vkReleaseDisplayEXT"))
7997 {
7998 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
7999 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8000 }
8001#endif
8002#ifdef VK_EXT_acquire_xlib_display
8003 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8004 {
8005 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8006 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8007 }
8008 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8009 {
8010 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8011 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8012 }
8013#endif
8014#ifdef VK_EXT_display_surface_counter
8015 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8016 {
8017 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8018 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8019 }
8020#endif
8021#ifdef VK_EXT_display_control
8022 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8023 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008024 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008025 }
8026 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8027 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008028 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008029 }
8030 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8031 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008032 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008033 }
8034 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8035 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008036 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008037 }
8038#endif
8039#ifdef VK_GOOGLE_display_timing
8040 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8041 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008042 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008043 }
8044 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8045 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008046 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008047 }
8048#endif
8049#ifdef VK_EXT_discard_rectangles
8050 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8051 {
8052 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8053 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8054 }
8055#endif
8056#ifdef VK_EXT_hdr_metadata
8057 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8058 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008059 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008060 }
8061#endif
8062#ifdef VK_MVK_ios_surface
8063 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8064 {
8065 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8066 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8067 }
8068#endif
8069#ifdef VK_MVK_macos_surface
8070 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8071 {
8072 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8073 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8074 }
8075#endif
8076#ifdef VK_EXT_debug_utils
8077 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8078 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008079 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008080 }
8081 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8082 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008083 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008084 }
8085 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8086 {
8087 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8088 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8089 }
8090 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8091 {
8092 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8093 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8094 }
8095 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8096 {
8097 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8098 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8099 }
8100 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8101 {
8102 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8103 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8104 }
8105 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8106 {
8107 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8108 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8109 }
8110 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8111 {
8112 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8113 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8114 }
8115 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8116 {
8117 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8118 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8119 }
8120 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8121 {
8122 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8123 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8124 }
8125 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8126 {
8127 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8128 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8129 }
8130#endif
8131#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8132 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8133 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008134 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008135 }
8136 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8137 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008138 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008139 }
8140#endif
8141#ifdef VK_EXT_sample_locations
8142 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8143 {
8144 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8145 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8146 }
8147 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8148 {
8149 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8150 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8151 }
8152#endif
8153#ifdef VK_EXT_validation_cache
8154 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8155 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008156 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008157 }
8158 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8159 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008160 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008161 }
8162 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8163 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008164 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008165 }
8166 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8167 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008168 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008169 }
8170#endif
8171#ifdef VK_EXT_external_memory_host
8172 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8173 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008174 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008175 }
8176#endif
8177#ifdef VK_AMD_buffer_marker
8178 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8179 {
8180 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8181 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8182 }
8183#endif
8184#ifdef VK_NV_device_diagnostic_checkpoints
8185 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8186 {
8187 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8188 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8189 }
8190 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8191 {
8192 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8193 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8194 }
8195#endif
8196#ifdef VK_GOOGLE_address_space
8197 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8198 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008199 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008200 }
8201#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008202#ifdef VK_GOOGLE_color_buffer
8203 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8204 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008205 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008206 }
8207 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8208 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008209 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008210 }
8211#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008212#ifdef VK_GOOGLE_sized_descriptor_update_template
8213 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8214 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008215 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008216 }
8217#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008218#ifdef VK_GOOGLE_async_command_buffers
8219 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8220 {
8221 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8222 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8223 }
8224 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8225 {
8226 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8227 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8228 }
8229 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8230 {
8231 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8232 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8233 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008234 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8235 {
8236 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8237 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8238 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008239#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008240#ifdef VK_GOOGLE_create_resources_with_requirements
8241 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8242 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008243 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008244 }
8245 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8246 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008247 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008248 }
8249#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008250#ifdef VK_GOOGLE_address_space_info
8251 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8252 {
8253 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8254 }
8255#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008256 return nullptr;
8257}
8258void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8259 auto resources = ResourceTracker::get();
8260 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8261#ifdef VK_VERSION_1_0
8262 if (!strcmp(name, "vkCreateInstance"))
8263 {
8264 return (void*)entry_vkCreateInstance;
8265 }
8266 if (!strcmp(name, "vkDestroyInstance"))
8267 {
8268 return (void*)entry_vkDestroyInstance;
8269 }
8270 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8271 {
8272 return (void*)entry_vkEnumeratePhysicalDevices;
8273 }
8274 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8275 {
8276 return (void*)entry_vkGetPhysicalDeviceFeatures;
8277 }
8278 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8279 {
8280 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8281 }
8282 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8283 {
8284 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8285 }
8286 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8287 {
8288 return (void*)entry_vkGetPhysicalDeviceProperties;
8289 }
8290 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8291 {
8292 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8293 }
8294 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8295 {
8296 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8297 }
8298 if (!strcmp(name, "vkGetInstanceProcAddr"))
8299 {
8300 return (void*)entry_vkGetInstanceProcAddr;
8301 }
8302 if (!strcmp(name, "vkGetDeviceProcAddr"))
8303 {
8304 return (void*)entry_vkGetDeviceProcAddr;
8305 }
8306 if (!strcmp(name, "vkCreateDevice"))
8307 {
8308 return (void*)entry_vkCreateDevice;
8309 }
8310 if (!strcmp(name, "vkDestroyDevice"))
8311 {
8312 return (void*)entry_vkDestroyDevice;
8313 }
8314 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8315 {
8316 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8317 }
8318 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8319 {
8320 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8321 }
8322 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8323 {
8324 return (void*)entry_vkEnumerateInstanceLayerProperties;
8325 }
8326 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8327 {
8328 return (void*)entry_vkEnumerateDeviceLayerProperties;
8329 }
8330 if (!strcmp(name, "vkGetDeviceQueue"))
8331 {
8332 return (void*)entry_vkGetDeviceQueue;
8333 }
8334 if (!strcmp(name, "vkQueueSubmit"))
8335 {
8336 return (void*)entry_vkQueueSubmit;
8337 }
8338 if (!strcmp(name, "vkQueueWaitIdle"))
8339 {
8340 return (void*)entry_vkQueueWaitIdle;
8341 }
8342 if (!strcmp(name, "vkDeviceWaitIdle"))
8343 {
8344 return (void*)entry_vkDeviceWaitIdle;
8345 }
8346 if (!strcmp(name, "vkAllocateMemory"))
8347 {
8348 return (void*)entry_vkAllocateMemory;
8349 }
8350 if (!strcmp(name, "vkFreeMemory"))
8351 {
8352 return (void*)entry_vkFreeMemory;
8353 }
8354 if (!strcmp(name, "vkMapMemory"))
8355 {
8356 return (void*)entry_vkMapMemory;
8357 }
8358 if (!strcmp(name, "vkUnmapMemory"))
8359 {
8360 return (void*)entry_vkUnmapMemory;
8361 }
8362 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8363 {
8364 return (void*)entry_vkFlushMappedMemoryRanges;
8365 }
8366 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8367 {
8368 return (void*)entry_vkInvalidateMappedMemoryRanges;
8369 }
8370 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8371 {
8372 return (void*)entry_vkGetDeviceMemoryCommitment;
8373 }
8374 if (!strcmp(name, "vkBindBufferMemory"))
8375 {
8376 return (void*)entry_vkBindBufferMemory;
8377 }
8378 if (!strcmp(name, "vkBindImageMemory"))
8379 {
8380 return (void*)entry_vkBindImageMemory;
8381 }
8382 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8383 {
8384 return (void*)entry_vkGetBufferMemoryRequirements;
8385 }
8386 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8387 {
8388 return (void*)entry_vkGetImageMemoryRequirements;
8389 }
8390 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8391 {
8392 return (void*)entry_vkGetImageSparseMemoryRequirements;
8393 }
8394 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8395 {
8396 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8397 }
8398 if (!strcmp(name, "vkQueueBindSparse"))
8399 {
8400 return (void*)entry_vkQueueBindSparse;
8401 }
8402 if (!strcmp(name, "vkCreateFence"))
8403 {
8404 return (void*)entry_vkCreateFence;
8405 }
8406 if (!strcmp(name, "vkDestroyFence"))
8407 {
8408 return (void*)entry_vkDestroyFence;
8409 }
8410 if (!strcmp(name, "vkResetFences"))
8411 {
8412 return (void*)entry_vkResetFences;
8413 }
8414 if (!strcmp(name, "vkGetFenceStatus"))
8415 {
8416 return (void*)entry_vkGetFenceStatus;
8417 }
8418 if (!strcmp(name, "vkWaitForFences"))
8419 {
8420 return (void*)entry_vkWaitForFences;
8421 }
8422 if (!strcmp(name, "vkCreateSemaphore"))
8423 {
8424 return (void*)entry_vkCreateSemaphore;
8425 }
8426 if (!strcmp(name, "vkDestroySemaphore"))
8427 {
8428 return (void*)entry_vkDestroySemaphore;
8429 }
8430 if (!strcmp(name, "vkCreateEvent"))
8431 {
8432 return (void*)entry_vkCreateEvent;
8433 }
8434 if (!strcmp(name, "vkDestroyEvent"))
8435 {
8436 return (void*)entry_vkDestroyEvent;
8437 }
8438 if (!strcmp(name, "vkGetEventStatus"))
8439 {
8440 return (void*)entry_vkGetEventStatus;
8441 }
8442 if (!strcmp(name, "vkSetEvent"))
8443 {
8444 return (void*)entry_vkSetEvent;
8445 }
8446 if (!strcmp(name, "vkResetEvent"))
8447 {
8448 return (void*)entry_vkResetEvent;
8449 }
8450 if (!strcmp(name, "vkCreateQueryPool"))
8451 {
8452 return (void*)entry_vkCreateQueryPool;
8453 }
8454 if (!strcmp(name, "vkDestroyQueryPool"))
8455 {
8456 return (void*)entry_vkDestroyQueryPool;
8457 }
8458 if (!strcmp(name, "vkGetQueryPoolResults"))
8459 {
8460 return (void*)entry_vkGetQueryPoolResults;
8461 }
8462 if (!strcmp(name, "vkCreateBuffer"))
8463 {
8464 return (void*)entry_vkCreateBuffer;
8465 }
8466 if (!strcmp(name, "vkDestroyBuffer"))
8467 {
8468 return (void*)entry_vkDestroyBuffer;
8469 }
8470 if (!strcmp(name, "vkCreateBufferView"))
8471 {
8472 return (void*)entry_vkCreateBufferView;
8473 }
8474 if (!strcmp(name, "vkDestroyBufferView"))
8475 {
8476 return (void*)entry_vkDestroyBufferView;
8477 }
8478 if (!strcmp(name, "vkCreateImage"))
8479 {
8480 return (void*)entry_vkCreateImage;
8481 }
8482 if (!strcmp(name, "vkDestroyImage"))
8483 {
8484 return (void*)entry_vkDestroyImage;
8485 }
8486 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8487 {
8488 return (void*)entry_vkGetImageSubresourceLayout;
8489 }
8490 if (!strcmp(name, "vkCreateImageView"))
8491 {
8492 return (void*)entry_vkCreateImageView;
8493 }
8494 if (!strcmp(name, "vkDestroyImageView"))
8495 {
8496 return (void*)entry_vkDestroyImageView;
8497 }
8498 if (!strcmp(name, "vkCreateShaderModule"))
8499 {
8500 return (void*)entry_vkCreateShaderModule;
8501 }
8502 if (!strcmp(name, "vkDestroyShaderModule"))
8503 {
8504 return (void*)entry_vkDestroyShaderModule;
8505 }
8506 if (!strcmp(name, "vkCreatePipelineCache"))
8507 {
8508 return (void*)entry_vkCreatePipelineCache;
8509 }
8510 if (!strcmp(name, "vkDestroyPipelineCache"))
8511 {
8512 return (void*)entry_vkDestroyPipelineCache;
8513 }
8514 if (!strcmp(name, "vkGetPipelineCacheData"))
8515 {
8516 return (void*)entry_vkGetPipelineCacheData;
8517 }
8518 if (!strcmp(name, "vkMergePipelineCaches"))
8519 {
8520 return (void*)entry_vkMergePipelineCaches;
8521 }
8522 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8523 {
8524 return (void*)entry_vkCreateGraphicsPipelines;
8525 }
8526 if (!strcmp(name, "vkCreateComputePipelines"))
8527 {
8528 return (void*)entry_vkCreateComputePipelines;
8529 }
8530 if (!strcmp(name, "vkDestroyPipeline"))
8531 {
8532 return (void*)entry_vkDestroyPipeline;
8533 }
8534 if (!strcmp(name, "vkCreatePipelineLayout"))
8535 {
8536 return (void*)entry_vkCreatePipelineLayout;
8537 }
8538 if (!strcmp(name, "vkDestroyPipelineLayout"))
8539 {
8540 return (void*)entry_vkDestroyPipelineLayout;
8541 }
8542 if (!strcmp(name, "vkCreateSampler"))
8543 {
8544 return (void*)entry_vkCreateSampler;
8545 }
8546 if (!strcmp(name, "vkDestroySampler"))
8547 {
8548 return (void*)entry_vkDestroySampler;
8549 }
8550 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8551 {
8552 return (void*)entry_vkCreateDescriptorSetLayout;
8553 }
8554 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8555 {
8556 return (void*)entry_vkDestroyDescriptorSetLayout;
8557 }
8558 if (!strcmp(name, "vkCreateDescriptorPool"))
8559 {
8560 return (void*)entry_vkCreateDescriptorPool;
8561 }
8562 if (!strcmp(name, "vkDestroyDescriptorPool"))
8563 {
8564 return (void*)entry_vkDestroyDescriptorPool;
8565 }
8566 if (!strcmp(name, "vkResetDescriptorPool"))
8567 {
8568 return (void*)entry_vkResetDescriptorPool;
8569 }
8570 if (!strcmp(name, "vkAllocateDescriptorSets"))
8571 {
8572 return (void*)entry_vkAllocateDescriptorSets;
8573 }
8574 if (!strcmp(name, "vkFreeDescriptorSets"))
8575 {
8576 return (void*)entry_vkFreeDescriptorSets;
8577 }
8578 if (!strcmp(name, "vkUpdateDescriptorSets"))
8579 {
8580 return (void*)entry_vkUpdateDescriptorSets;
8581 }
8582 if (!strcmp(name, "vkCreateFramebuffer"))
8583 {
8584 return (void*)entry_vkCreateFramebuffer;
8585 }
8586 if (!strcmp(name, "vkDestroyFramebuffer"))
8587 {
8588 return (void*)entry_vkDestroyFramebuffer;
8589 }
8590 if (!strcmp(name, "vkCreateRenderPass"))
8591 {
8592 return (void*)entry_vkCreateRenderPass;
8593 }
8594 if (!strcmp(name, "vkDestroyRenderPass"))
8595 {
8596 return (void*)entry_vkDestroyRenderPass;
8597 }
8598 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8599 {
8600 return (void*)entry_vkGetRenderAreaGranularity;
8601 }
8602 if (!strcmp(name, "vkCreateCommandPool"))
8603 {
8604 return (void*)entry_vkCreateCommandPool;
8605 }
8606 if (!strcmp(name, "vkDestroyCommandPool"))
8607 {
8608 return (void*)entry_vkDestroyCommandPool;
8609 }
8610 if (!strcmp(name, "vkResetCommandPool"))
8611 {
8612 return (void*)entry_vkResetCommandPool;
8613 }
8614 if (!strcmp(name, "vkAllocateCommandBuffers"))
8615 {
8616 return (void*)entry_vkAllocateCommandBuffers;
8617 }
8618 if (!strcmp(name, "vkFreeCommandBuffers"))
8619 {
8620 return (void*)entry_vkFreeCommandBuffers;
8621 }
8622 if (!strcmp(name, "vkBeginCommandBuffer"))
8623 {
8624 return (void*)entry_vkBeginCommandBuffer;
8625 }
8626 if (!strcmp(name, "vkEndCommandBuffer"))
8627 {
8628 return (void*)entry_vkEndCommandBuffer;
8629 }
8630 if (!strcmp(name, "vkResetCommandBuffer"))
8631 {
8632 return (void*)entry_vkResetCommandBuffer;
8633 }
8634 if (!strcmp(name, "vkCmdBindPipeline"))
8635 {
8636 return (void*)entry_vkCmdBindPipeline;
8637 }
8638 if (!strcmp(name, "vkCmdSetViewport"))
8639 {
8640 return (void*)entry_vkCmdSetViewport;
8641 }
8642 if (!strcmp(name, "vkCmdSetScissor"))
8643 {
8644 return (void*)entry_vkCmdSetScissor;
8645 }
8646 if (!strcmp(name, "vkCmdSetLineWidth"))
8647 {
8648 return (void*)entry_vkCmdSetLineWidth;
8649 }
8650 if (!strcmp(name, "vkCmdSetDepthBias"))
8651 {
8652 return (void*)entry_vkCmdSetDepthBias;
8653 }
8654 if (!strcmp(name, "vkCmdSetBlendConstants"))
8655 {
8656 return (void*)entry_vkCmdSetBlendConstants;
8657 }
8658 if (!strcmp(name, "vkCmdSetDepthBounds"))
8659 {
8660 return (void*)entry_vkCmdSetDepthBounds;
8661 }
8662 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8663 {
8664 return (void*)entry_vkCmdSetStencilCompareMask;
8665 }
8666 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8667 {
8668 return (void*)entry_vkCmdSetStencilWriteMask;
8669 }
8670 if (!strcmp(name, "vkCmdSetStencilReference"))
8671 {
8672 return (void*)entry_vkCmdSetStencilReference;
8673 }
8674 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8675 {
8676 return (void*)entry_vkCmdBindDescriptorSets;
8677 }
8678 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8679 {
8680 return (void*)entry_vkCmdBindIndexBuffer;
8681 }
8682 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8683 {
8684 return (void*)entry_vkCmdBindVertexBuffers;
8685 }
8686 if (!strcmp(name, "vkCmdDraw"))
8687 {
8688 return (void*)entry_vkCmdDraw;
8689 }
8690 if (!strcmp(name, "vkCmdDrawIndexed"))
8691 {
8692 return (void*)entry_vkCmdDrawIndexed;
8693 }
8694 if (!strcmp(name, "vkCmdDrawIndirect"))
8695 {
8696 return (void*)entry_vkCmdDrawIndirect;
8697 }
8698 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8699 {
8700 return (void*)entry_vkCmdDrawIndexedIndirect;
8701 }
8702 if (!strcmp(name, "vkCmdDispatch"))
8703 {
8704 return (void*)entry_vkCmdDispatch;
8705 }
8706 if (!strcmp(name, "vkCmdDispatchIndirect"))
8707 {
8708 return (void*)entry_vkCmdDispatchIndirect;
8709 }
8710 if (!strcmp(name, "vkCmdCopyBuffer"))
8711 {
8712 return (void*)entry_vkCmdCopyBuffer;
8713 }
8714 if (!strcmp(name, "vkCmdCopyImage"))
8715 {
8716 return (void*)entry_vkCmdCopyImage;
8717 }
8718 if (!strcmp(name, "vkCmdBlitImage"))
8719 {
8720 return (void*)entry_vkCmdBlitImage;
8721 }
8722 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8723 {
8724 return (void*)entry_vkCmdCopyBufferToImage;
8725 }
8726 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8727 {
8728 return (void*)entry_vkCmdCopyImageToBuffer;
8729 }
8730 if (!strcmp(name, "vkCmdUpdateBuffer"))
8731 {
8732 return (void*)entry_vkCmdUpdateBuffer;
8733 }
8734 if (!strcmp(name, "vkCmdFillBuffer"))
8735 {
8736 return (void*)entry_vkCmdFillBuffer;
8737 }
8738 if (!strcmp(name, "vkCmdClearColorImage"))
8739 {
8740 return (void*)entry_vkCmdClearColorImage;
8741 }
8742 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8743 {
8744 return (void*)entry_vkCmdClearDepthStencilImage;
8745 }
8746 if (!strcmp(name, "vkCmdClearAttachments"))
8747 {
8748 return (void*)entry_vkCmdClearAttachments;
8749 }
8750 if (!strcmp(name, "vkCmdResolveImage"))
8751 {
8752 return (void*)entry_vkCmdResolveImage;
8753 }
8754 if (!strcmp(name, "vkCmdSetEvent"))
8755 {
8756 return (void*)entry_vkCmdSetEvent;
8757 }
8758 if (!strcmp(name, "vkCmdResetEvent"))
8759 {
8760 return (void*)entry_vkCmdResetEvent;
8761 }
8762 if (!strcmp(name, "vkCmdWaitEvents"))
8763 {
8764 return (void*)entry_vkCmdWaitEvents;
8765 }
8766 if (!strcmp(name, "vkCmdPipelineBarrier"))
8767 {
8768 return (void*)entry_vkCmdPipelineBarrier;
8769 }
8770 if (!strcmp(name, "vkCmdBeginQuery"))
8771 {
8772 return (void*)entry_vkCmdBeginQuery;
8773 }
8774 if (!strcmp(name, "vkCmdEndQuery"))
8775 {
8776 return (void*)entry_vkCmdEndQuery;
8777 }
8778 if (!strcmp(name, "vkCmdResetQueryPool"))
8779 {
8780 return (void*)entry_vkCmdResetQueryPool;
8781 }
8782 if (!strcmp(name, "vkCmdWriteTimestamp"))
8783 {
8784 return (void*)entry_vkCmdWriteTimestamp;
8785 }
8786 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8787 {
8788 return (void*)entry_vkCmdCopyQueryPoolResults;
8789 }
8790 if (!strcmp(name, "vkCmdPushConstants"))
8791 {
8792 return (void*)entry_vkCmdPushConstants;
8793 }
8794 if (!strcmp(name, "vkCmdBeginRenderPass"))
8795 {
8796 return (void*)entry_vkCmdBeginRenderPass;
8797 }
8798 if (!strcmp(name, "vkCmdNextSubpass"))
8799 {
8800 return (void*)entry_vkCmdNextSubpass;
8801 }
8802 if (!strcmp(name, "vkCmdEndRenderPass"))
8803 {
8804 return (void*)entry_vkCmdEndRenderPass;
8805 }
8806 if (!strcmp(name, "vkCmdExecuteCommands"))
8807 {
8808 return (void*)entry_vkCmdExecuteCommands;
8809 }
8810#endif
8811#ifdef VK_VERSION_1_1
8812 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8813 {
8814 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8815 }
8816 if (!strcmp(name, "vkBindBufferMemory2"))
8817 {
8818 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8819 }
8820 if (!strcmp(name, "vkBindImageMemory2"))
8821 {
8822 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8823 }
8824 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8825 {
8826 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8827 }
8828 if (!strcmp(name, "vkCmdSetDeviceMask"))
8829 {
8830 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8831 }
8832 if (!strcmp(name, "vkCmdDispatchBase"))
8833 {
8834 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8835 }
8836 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8837 {
8838 return nullptr;
8839 }
8840 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8841 {
8842 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8843 }
8844 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8845 {
8846 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8847 }
8848 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8849 {
8850 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8851 }
8852 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8853 {
8854 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8855 }
8856 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8857 {
8858 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8859 }
8860 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8861 {
8862 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8863 }
8864 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
8865 {
8866 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
8867 }
8868 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
8869 {
8870 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
8871 }
8872 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
8873 {
8874 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
8875 }
8876 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
8877 {
8878 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
8879 }
8880 if (!strcmp(name, "vkTrimCommandPool"))
8881 {
8882 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
8883 }
8884 if (!strcmp(name, "vkGetDeviceQueue2"))
8885 {
8886 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
8887 }
8888 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
8889 {
8890 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
8891 }
8892 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
8893 {
8894 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
8895 }
8896 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
8897 {
8898 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
8899 }
8900 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
8901 {
8902 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
8903 }
8904 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
8905 {
8906 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
8907 }
8908 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
8909 {
8910 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
8911 }
8912 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
8913 {
8914 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
8915 }
8916 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
8917 {
8918 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
8919 }
8920 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
8921 {
8922 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
8923 }
8924#endif
8925#ifdef VK_KHR_surface
8926 if (!strcmp(name, "vkDestroySurfaceKHR"))
8927 {
8928 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8929 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
8930 }
8931 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
8932 {
8933 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8934 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
8935 }
8936 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
8937 {
8938 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8939 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
8940 }
8941 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
8942 {
8943 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8944 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
8945 }
8946 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
8947 {
8948 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
8949 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
8950 }
8951#endif
8952#ifdef VK_KHR_swapchain
8953 if (!strcmp(name, "vkCreateSwapchainKHR"))
8954 {
8955 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8956 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
8957 }
8958 if (!strcmp(name, "vkDestroySwapchainKHR"))
8959 {
8960 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8961 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
8962 }
8963 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
8964 {
8965 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8966 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
8967 }
8968 if (!strcmp(name, "vkAcquireNextImageKHR"))
8969 {
8970 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8971 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
8972 }
8973 if (!strcmp(name, "vkQueuePresentKHR"))
8974 {
8975 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8976 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
8977 }
8978 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
8979 {
8980 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8981 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
8982 }
8983 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
8984 {
8985 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8986 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
8987 }
8988 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
8989 {
8990 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8991 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
8992 }
8993 if (!strcmp(name, "vkAcquireNextImage2KHR"))
8994 {
8995 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
8996 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
8997 }
8998#endif
8999#ifdef VK_KHR_display
9000 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9001 {
9002 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9003 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9004 }
9005 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9006 {
9007 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9008 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9009 }
9010 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9011 {
9012 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9013 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9014 }
9015 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9016 {
9017 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9018 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9019 }
9020 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9021 {
9022 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9023 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9024 }
9025 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9026 {
9027 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9028 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9029 }
9030 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9031 {
9032 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9033 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9034 }
9035#endif
9036#ifdef VK_KHR_display_swapchain
9037 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9038 {
9039 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9040 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9041 }
9042#endif
9043#ifdef VK_KHR_xlib_surface
9044 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9045 {
9046 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9047 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9048 }
9049 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9050 {
9051 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9052 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9053 }
9054#endif
9055#ifdef VK_KHR_xcb_surface
9056 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9057 {
9058 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9059 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9060 }
9061 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9062 {
9063 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9064 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9065 }
9066#endif
9067#ifdef VK_KHR_wayland_surface
9068 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9069 {
9070 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9071 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9072 }
9073 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9074 {
9075 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9076 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9077 }
9078#endif
9079#ifdef VK_KHR_mir_surface
9080 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9081 {
9082 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9083 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9084 }
9085 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9086 {
9087 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9088 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9089 }
9090#endif
9091#ifdef VK_KHR_android_surface
9092 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9093 {
9094 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9095 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9096 }
9097#endif
9098#ifdef VK_KHR_win32_surface
9099 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9100 {
9101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9102 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9103 }
9104 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9105 {
9106 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9107 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9108 }
9109#endif
9110#ifdef VK_KHR_get_physical_device_properties2
9111 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9112 {
9113 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9114 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9115 }
9116 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9117 {
9118 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9119 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9120 }
9121 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9122 {
9123 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9124 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9125 }
9126 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9127 {
9128 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9129 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9130 }
9131 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9132 {
9133 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9134 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9135 }
9136 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9137 {
9138 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9139 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9140 }
9141 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9142 {
9143 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9144 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9145 }
9146#endif
9147#ifdef VK_KHR_device_group
9148 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9149 {
9150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9151 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9152 }
9153 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9154 {
9155 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9156 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9157 }
9158 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9159 {
9160 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9161 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9162 }
9163#endif
9164#ifdef VK_KHR_maintenance1
9165 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9166 {
9167 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9168 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9169 }
9170#endif
9171#ifdef VK_KHR_device_group_creation
9172 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9173 {
9174 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9175 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9176 }
9177#endif
9178#ifdef VK_KHR_external_memory_capabilities
9179 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9180 {
9181 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9182 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9183 }
9184#endif
9185#ifdef VK_KHR_external_memory_win32
9186 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9187 {
9188 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9189 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9190 }
9191 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9192 {
9193 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9194 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9195 }
9196#endif
9197#ifdef VK_KHR_external_memory_fd
9198 if (!strcmp(name, "vkGetMemoryFdKHR"))
9199 {
9200 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9201 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9202 }
9203 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9204 {
9205 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9206 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9207 }
9208#endif
9209#ifdef VK_KHR_external_semaphore_capabilities
9210 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9211 {
9212 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9213 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9214 }
9215#endif
9216#ifdef VK_KHR_external_semaphore_win32
9217 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9218 {
9219 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9220 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9221 }
9222 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9223 {
9224 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9225 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9226 }
9227#endif
9228#ifdef VK_KHR_external_semaphore_fd
9229 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9230 {
9231 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9232 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9233 }
9234 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9235 {
9236 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9237 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9238 }
9239#endif
9240#ifdef VK_KHR_push_descriptor
9241 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9242 {
9243 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9244 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9245 }
9246 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9247 {
9248 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9249 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9250 }
9251#endif
9252#ifdef VK_KHR_descriptor_update_template
9253 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9254 {
9255 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9256 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9257 }
9258 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9259 {
9260 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9261 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9262 }
9263 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9264 {
9265 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9266 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9267 }
9268#endif
9269#ifdef VK_KHR_create_renderpass2
9270 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9271 {
9272 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9273 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9274 }
9275 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9276 {
9277 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9278 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9279 }
9280 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9281 {
9282 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9283 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9284 }
9285 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9286 {
9287 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9288 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9289 }
9290#endif
9291#ifdef VK_KHR_shared_presentable_image
9292 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9293 {
9294 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9295 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9296 }
9297#endif
9298#ifdef VK_KHR_external_fence_capabilities
9299 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9300 {
9301 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9302 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9303 }
9304#endif
9305#ifdef VK_KHR_external_fence_win32
9306 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9307 {
9308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9309 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9310 }
9311 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9312 {
9313 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9314 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9315 }
9316#endif
9317#ifdef VK_KHR_external_fence_fd
9318 if (!strcmp(name, "vkImportFenceFdKHR"))
9319 {
9320 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9321 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9322 }
9323 if (!strcmp(name, "vkGetFenceFdKHR"))
9324 {
9325 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9326 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9327 }
9328#endif
9329#ifdef VK_KHR_get_surface_capabilities2
9330 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9331 {
9332 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9333 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9334 }
9335 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9336 {
9337 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9338 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9339 }
9340#endif
9341#ifdef VK_KHR_get_display_properties2
9342 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9343 {
9344 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9345 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9346 }
9347 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9348 {
9349 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9350 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9351 }
9352 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9353 {
9354 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9355 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9356 }
9357 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9358 {
9359 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9360 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9361 }
9362#endif
9363#ifdef VK_KHR_get_memory_requirements2
9364 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9365 {
9366 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9367 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9368 }
9369 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9370 {
9371 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9372 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9373 }
9374 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9375 {
9376 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9377 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9378 }
9379#endif
9380#ifdef VK_KHR_sampler_ycbcr_conversion
9381 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9382 {
9383 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9384 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9385 }
9386 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9387 {
9388 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9389 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9390 }
9391#endif
9392#ifdef VK_KHR_bind_memory2
9393 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9394 {
9395 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9396 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9397 }
9398 if (!strcmp(name, "vkBindImageMemory2KHR"))
9399 {
9400 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9401 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9402 }
9403#endif
9404#ifdef VK_KHR_maintenance3
9405 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9406 {
9407 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9408 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9409 }
9410#endif
9411#ifdef VK_KHR_draw_indirect_count
9412 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9413 {
9414 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9415 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9416 }
9417 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9418 {
9419 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9420 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9421 }
9422#endif
9423#ifdef VK_ANDROID_native_buffer
9424 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9425 {
9426 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9427 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9428 }
9429 if (!strcmp(name, "vkAcquireImageANDROID"))
9430 {
9431 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9432 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9433 }
9434 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9435 {
9436 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9437 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9438 }
9439#endif
9440#ifdef VK_EXT_debug_report
9441 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9442 {
9443 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9444 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9445 }
9446 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9447 {
9448 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9449 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9450 }
9451 if (!strcmp(name, "vkDebugReportMessageEXT"))
9452 {
9453 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9454 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9455 }
9456#endif
9457#ifdef VK_EXT_debug_marker
9458 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9459 {
9460 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9461 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9462 }
9463 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9464 {
9465 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9466 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9467 }
9468 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9469 {
9470 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9471 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9472 }
9473 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9474 {
9475 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9476 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9477 }
9478 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9479 {
9480 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9481 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9482 }
9483#endif
9484#ifdef VK_AMD_draw_indirect_count
9485 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9486 {
9487 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9488 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9489 }
9490 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9491 {
9492 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9493 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9494 }
9495#endif
9496#ifdef VK_AMD_shader_info
9497 if (!strcmp(name, "vkGetShaderInfoAMD"))
9498 {
9499 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9500 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9501 }
9502#endif
9503#ifdef VK_NV_external_memory_capabilities
9504 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9505 {
9506 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9507 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9508 }
9509#endif
9510#ifdef VK_NV_external_memory_win32
9511 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9512 {
9513 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9514 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9515 }
9516#endif
9517#ifdef VK_NN_vi_surface
9518 if (!strcmp(name, "vkCreateViSurfaceNN"))
9519 {
9520 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9521 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9522 }
9523#endif
9524#ifdef VK_EXT_conditional_rendering
9525 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9526 {
9527 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9528 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9529 }
9530 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9531 {
9532 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9533 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9534 }
9535#endif
9536#ifdef VK_NVX_device_generated_commands
9537 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9538 {
9539 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9540 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9541 }
9542 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9543 {
9544 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9545 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9546 }
9547 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9548 {
9549 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9550 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9551 }
9552 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9553 {
9554 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9555 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9556 }
9557 if (!strcmp(name, "vkCreateObjectTableNVX"))
9558 {
9559 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9560 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9561 }
9562 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9563 {
9564 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9565 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9566 }
9567 if (!strcmp(name, "vkRegisterObjectsNVX"))
9568 {
9569 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9570 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9571 }
9572 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9573 {
9574 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9575 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9576 }
9577 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9578 {
9579 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9580 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9581 }
9582#endif
9583#ifdef VK_NV_clip_space_w_scaling
9584 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9585 {
9586 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9587 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9588 }
9589#endif
9590#ifdef VK_EXT_direct_mode_display
9591 if (!strcmp(name, "vkReleaseDisplayEXT"))
9592 {
9593 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9594 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9595 }
9596#endif
9597#ifdef VK_EXT_acquire_xlib_display
9598 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9599 {
9600 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9601 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9602 }
9603 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9604 {
9605 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9606 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9607 }
9608#endif
9609#ifdef VK_EXT_display_surface_counter
9610 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9611 {
9612 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9613 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9614 }
9615#endif
9616#ifdef VK_EXT_display_control
9617 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9618 {
9619 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9620 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9621 }
9622 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9623 {
9624 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9625 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9626 }
9627 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9628 {
9629 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9630 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9631 }
9632 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9633 {
9634 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9635 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9636 }
9637#endif
9638#ifdef VK_GOOGLE_display_timing
9639 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9640 {
9641 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9642 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9643 }
9644 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9645 {
9646 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9647 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9648 }
9649#endif
9650#ifdef VK_EXT_discard_rectangles
9651 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9652 {
9653 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9654 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9655 }
9656#endif
9657#ifdef VK_EXT_hdr_metadata
9658 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9659 {
9660 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9661 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9662 }
9663#endif
9664#ifdef VK_MVK_ios_surface
9665 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9666 {
9667 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9668 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9669 }
9670#endif
9671#ifdef VK_MVK_macos_surface
9672 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9673 {
9674 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9675 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9676 }
9677#endif
9678#ifdef VK_EXT_debug_utils
9679 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9680 {
9681 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9682 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9683 }
9684 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9685 {
9686 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9687 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9688 }
9689 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9690 {
9691 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9692 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9693 }
9694 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9695 {
9696 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9697 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9698 }
9699 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9700 {
9701 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9702 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9703 }
9704 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9705 {
9706 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9707 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9708 }
9709 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9710 {
9711 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9712 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9713 }
9714 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9715 {
9716 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9717 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9718 }
9719 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9720 {
9721 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9722 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9723 }
9724 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9725 {
9726 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9727 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9728 }
9729 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9730 {
9731 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9732 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9733 }
9734#endif
9735#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9736 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9737 {
9738 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9739 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9740 }
9741 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9742 {
9743 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9744 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9745 }
9746#endif
9747#ifdef VK_EXT_sample_locations
9748 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9749 {
9750 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9751 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9752 }
9753 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9754 {
9755 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9756 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9757 }
9758#endif
9759#ifdef VK_EXT_validation_cache
9760 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9761 {
9762 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9763 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9764 }
9765 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9766 {
9767 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9768 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9769 }
9770 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9771 {
9772 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9773 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9774 }
9775 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9776 {
9777 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9778 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9779 }
9780#endif
9781#ifdef VK_EXT_external_memory_host
9782 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9783 {
9784 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9785 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9786 }
9787#endif
9788#ifdef VK_AMD_buffer_marker
9789 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9790 {
9791 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9792 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9793 }
9794#endif
9795#ifdef VK_NV_device_diagnostic_checkpoints
9796 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9797 {
9798 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9799 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9800 }
9801 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9802 {
9803 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9804 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9805 }
9806#endif
9807#ifdef VK_GOOGLE_address_space
9808 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9809 {
9810 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9811 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009812 }
9813#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009814#ifdef VK_GOOGLE_color_buffer
9815 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9816 {
9817 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9818 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9819 }
9820 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9821 {
9822 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9823 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9824 }
9825#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009826#ifdef VK_GOOGLE_sized_descriptor_update_template
9827 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9828 {
9829 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9830 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9831 }
9832#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009833#ifdef VK_GOOGLE_async_command_buffers
9834 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9835 {
9836 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9837 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9838 }
9839 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9840 {
9841 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9842 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9843 }
9844 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9845 {
9846 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9847 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9848 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009849 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9850 {
9851 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9852 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9853 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009854#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009855#ifdef VK_GOOGLE_create_resources_with_requirements
9856 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9857 {
9858 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9859 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9860 }
9861 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9862 {
9863 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9864 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
9865 }
9866#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08009867#ifdef VK_GOOGLE_address_space_info
9868 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
9869 {
9870 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
9871 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
9872 }
9873#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08009874 return nullptr;
9875}
9876
9877} // namespace goldfish_vk