blob: b5b11746dfa8301faf8290e0b1667affeda79b94 [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();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -0700243 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800244 VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
David Reveman24710222019-02-25 02:21:42 -0500245 auto resources = ResourceTracker::get();
246 vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800247 return vkQueueSubmit_VkResult_return;
248}
249static VkResult entry_vkQueueWaitIdle(
250 VkQueue queue)
251{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800252 AEMU_SCOPED_TRACE("vkQueueWaitIdle");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800253 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -0700254 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800255 VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700256 auto resources = ResourceTracker::get();
257 vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800258 return vkQueueWaitIdle_VkResult_return;
259}
260static VkResult entry_vkDeviceWaitIdle(
261 VkDevice device)
262{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800263 AEMU_SCOPED_TRACE("vkDeviceWaitIdle");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800264 auto vkEnc = HostConnection::get()->vkEncoder();
265 VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
266 vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device);
267 return vkDeviceWaitIdle_VkResult_return;
268}
269static VkResult entry_vkAllocateMemory(
270 VkDevice device,
271 const VkMemoryAllocateInfo* pAllocateInfo,
272 const VkAllocationCallbacks* pAllocator,
273 VkDeviceMemory* pMemory)
274{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800275 AEMU_SCOPED_TRACE("vkAllocateMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800276 auto vkEnc = HostConnection::get()->vkEncoder();
277 VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
Lingfeng Yange9979522018-12-25 14:44:52 -0800278 auto resources = ResourceTracker::get();
279 vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800280 return vkAllocateMemory_VkResult_return;
281}
282static void entry_vkFreeMemory(
283 VkDevice device,
284 VkDeviceMemory memory,
285 const VkAllocationCallbacks* pAllocator)
286{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800287 AEMU_SCOPED_TRACE("vkFreeMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800288 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yange9979522018-12-25 14:44:52 -0800289 auto resources = ResourceTracker::get();
290 resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800291}
292static VkResult entry_vkMapMemory(
293 VkDevice device,
294 VkDeviceMemory memory,
295 VkDeviceSize offset,
296 VkDeviceSize size,
297 VkMemoryMapFlags flags,
298 void** ppData)
299{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800300 AEMU_SCOPED_TRACE("vkMapMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800301 auto vkEnc = HostConnection::get()->vkEncoder();
302 VkResult vkMapMemory_VkResult_return = (VkResult)0;
303 vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData);
304 return vkMapMemory_VkResult_return;
305}
306static void entry_vkUnmapMemory(
307 VkDevice device,
308 VkDeviceMemory memory)
309{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800310 AEMU_SCOPED_TRACE("vkUnmapMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800311 auto vkEnc = HostConnection::get()->vkEncoder();
312 vkEnc->vkUnmapMemory(device, memory);
313}
314static VkResult entry_vkFlushMappedMemoryRanges(
315 VkDevice device,
316 uint32_t memoryRangeCount,
317 const VkMappedMemoryRange* pMemoryRanges)
318{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800319 AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800320 auto vkEnc = HostConnection::get()->vkEncoder();
321 VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
322 vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
323 return vkFlushMappedMemoryRanges_VkResult_return;
324}
325static VkResult entry_vkInvalidateMappedMemoryRanges(
326 VkDevice device,
327 uint32_t memoryRangeCount,
328 const VkMappedMemoryRange* pMemoryRanges)
329{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800330 AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800331 auto vkEnc = HostConnection::get()->vkEncoder();
332 VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
333 vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
334 return vkInvalidateMappedMemoryRanges_VkResult_return;
335}
336static void entry_vkGetDeviceMemoryCommitment(
337 VkDevice device,
338 VkDeviceMemory memory,
339 VkDeviceSize* pCommittedMemoryInBytes)
340{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800341 AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800342 auto vkEnc = HostConnection::get()->vkEncoder();
343 vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
344}
345static VkResult entry_vkBindBufferMemory(
346 VkDevice device,
347 VkBuffer buffer,
348 VkDeviceMemory memory,
349 VkDeviceSize memoryOffset)
350{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800351 AEMU_SCOPED_TRACE("vkBindBufferMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800352 auto vkEnc = HostConnection::get()->vkEncoder();
353 VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800354 auto resources = ResourceTracker::get();
355 vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800356 return vkBindBufferMemory_VkResult_return;
357}
358static VkResult entry_vkBindImageMemory(
359 VkDevice device,
360 VkImage image,
361 VkDeviceMemory memory,
362 VkDeviceSize memoryOffset)
363{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800364 AEMU_SCOPED_TRACE("vkBindImageMemory");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800365 auto vkEnc = HostConnection::get()->vkEncoder();
366 VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800367 auto resources = ResourceTracker::get();
368 vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800369 return vkBindImageMemory_VkResult_return;
370}
371static void entry_vkGetBufferMemoryRequirements(
372 VkDevice device,
373 VkBuffer buffer,
374 VkMemoryRequirements* pMemoryRequirements)
375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800376 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800377 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800378 auto resources = ResourceTracker::get();
379 resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800380}
381static void entry_vkGetImageMemoryRequirements(
382 VkDevice device,
383 VkImage image,
384 VkMemoryRequirements* pMemoryRequirements)
385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800386 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800387 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800388 auto resources = ResourceTracker::get();
389 resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800390}
391static void entry_vkGetImageSparseMemoryRequirements(
392 VkDevice device,
393 VkImage image,
394 uint32_t* pSparseMemoryRequirementCount,
395 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
396{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800397 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800398 auto vkEnc = HostConnection::get()->vkEncoder();
399 vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
400}
401static void entry_vkGetPhysicalDeviceSparseImageFormatProperties(
402 VkPhysicalDevice physicalDevice,
403 VkFormat format,
404 VkImageType type,
405 VkSampleCountFlagBits samples,
406 VkImageUsageFlags usage,
407 VkImageTiling tiling,
408 uint32_t* pPropertyCount,
409 VkSparseImageFormatProperties* pProperties)
410{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800411 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800412 auto vkEnc = HostConnection::get()->vkEncoder();
413 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
414}
415static VkResult entry_vkQueueBindSparse(
416 VkQueue queue,
417 uint32_t bindInfoCount,
418 const VkBindSparseInfo* pBindInfo,
419 VkFence fence)
420{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800421 AEMU_SCOPED_TRACE("vkQueueBindSparse");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800422 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -0700423 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800424 VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
425 vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
426 return vkQueueBindSparse_VkResult_return;
427}
428static VkResult entry_vkCreateFence(
429 VkDevice device,
430 const VkFenceCreateInfo* pCreateInfo,
431 const VkAllocationCallbacks* pAllocator,
432 VkFence* pFence)
433{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800434 AEMU_SCOPED_TRACE("vkCreateFence");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800435 auto vkEnc = HostConnection::get()->vkEncoder();
436 VkResult vkCreateFence_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700437 auto resources = ResourceTracker::get();
438 vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800439 return vkCreateFence_VkResult_return;
440}
441static void entry_vkDestroyFence(
442 VkDevice device,
443 VkFence fence,
444 const VkAllocationCallbacks* pAllocator)
445{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800446 AEMU_SCOPED_TRACE("vkDestroyFence");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800447 auto vkEnc = HostConnection::get()->vkEncoder();
448 vkEnc->vkDestroyFence(device, fence, pAllocator);
449}
450static VkResult entry_vkResetFences(
451 VkDevice device,
452 uint32_t fenceCount,
453 const VkFence* pFences)
454{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800455 AEMU_SCOPED_TRACE("vkResetFences");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800456 auto vkEnc = HostConnection::get()->vkEncoder();
457 VkResult vkResetFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700458 auto resources = ResourceTracker::get();
459 vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800460 return vkResetFences_VkResult_return;
461}
462static VkResult entry_vkGetFenceStatus(
463 VkDevice device,
464 VkFence fence)
465{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800466 AEMU_SCOPED_TRACE("vkGetFenceStatus");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800467 auto vkEnc = HostConnection::get()->vkEncoder();
468 VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
469 vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence);
470 return vkGetFenceStatus_VkResult_return;
471}
472static VkResult entry_vkWaitForFences(
473 VkDevice device,
474 uint32_t fenceCount,
475 const VkFence* pFences,
476 VkBool32 waitAll,
477 uint64_t timeout)
478{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800479 AEMU_SCOPED_TRACE("vkWaitForFences");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800480 auto vkEnc = HostConnection::get()->vkEncoder();
481 VkResult vkWaitForFences_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -0700482 auto resources = ResourceTracker::get();
483 vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800484 return vkWaitForFences_VkResult_return;
485}
486static VkResult entry_vkCreateSemaphore(
487 VkDevice device,
488 const VkSemaphoreCreateInfo* pCreateInfo,
489 const VkAllocationCallbacks* pAllocator,
490 VkSemaphore* pSemaphore)
491{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800492 AEMU_SCOPED_TRACE("vkCreateSemaphore");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800493 auto vkEnc = HostConnection::get()->vkEncoder();
494 VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
David Reveman32b110e2019-02-21 13:20:54 -0500495 auto resources = ResourceTracker::get();
496 vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800497 return vkCreateSemaphore_VkResult_return;
498}
499static void entry_vkDestroySemaphore(
500 VkDevice device,
501 VkSemaphore semaphore,
502 const VkAllocationCallbacks* pAllocator)
503{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800504 AEMU_SCOPED_TRACE("vkDestroySemaphore");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800505 auto vkEnc = HostConnection::get()->vkEncoder();
David Reveman32b110e2019-02-21 13:20:54 -0500506 auto resources = ResourceTracker::get();
507 resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800508}
509static VkResult entry_vkCreateEvent(
510 VkDevice device,
511 const VkEventCreateInfo* pCreateInfo,
512 const VkAllocationCallbacks* pAllocator,
513 VkEvent* pEvent)
514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800515 AEMU_SCOPED_TRACE("vkCreateEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800516 auto vkEnc = HostConnection::get()->vkEncoder();
517 VkResult vkCreateEvent_VkResult_return = (VkResult)0;
518 vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent);
519 return vkCreateEvent_VkResult_return;
520}
521static void entry_vkDestroyEvent(
522 VkDevice device,
523 VkEvent event,
524 const VkAllocationCallbacks* pAllocator)
525{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800526 AEMU_SCOPED_TRACE("vkDestroyEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800527 auto vkEnc = HostConnection::get()->vkEncoder();
528 vkEnc->vkDestroyEvent(device, event, pAllocator);
529}
530static VkResult entry_vkGetEventStatus(
531 VkDevice device,
532 VkEvent event)
533{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800534 AEMU_SCOPED_TRACE("vkGetEventStatus");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800535 auto vkEnc = HostConnection::get()->vkEncoder();
536 VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
537 vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event);
538 return vkGetEventStatus_VkResult_return;
539}
540static VkResult entry_vkSetEvent(
541 VkDevice device,
542 VkEvent event)
543{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800544 AEMU_SCOPED_TRACE("vkSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800545 auto vkEnc = HostConnection::get()->vkEncoder();
546 VkResult vkSetEvent_VkResult_return = (VkResult)0;
547 vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event);
548 return vkSetEvent_VkResult_return;
549}
550static VkResult entry_vkResetEvent(
551 VkDevice device,
552 VkEvent event)
553{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800554 AEMU_SCOPED_TRACE("vkResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800555 auto vkEnc = HostConnection::get()->vkEncoder();
556 VkResult vkResetEvent_VkResult_return = (VkResult)0;
557 vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event);
558 return vkResetEvent_VkResult_return;
559}
560static VkResult entry_vkCreateQueryPool(
561 VkDevice device,
562 const VkQueryPoolCreateInfo* pCreateInfo,
563 const VkAllocationCallbacks* pAllocator,
564 VkQueryPool* pQueryPool)
565{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800566 AEMU_SCOPED_TRACE("vkCreateQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800567 auto vkEnc = HostConnection::get()->vkEncoder();
568 VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
569 vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
570 return vkCreateQueryPool_VkResult_return;
571}
572static void entry_vkDestroyQueryPool(
573 VkDevice device,
574 VkQueryPool queryPool,
575 const VkAllocationCallbacks* pAllocator)
576{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800577 AEMU_SCOPED_TRACE("vkDestroyQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800578 auto vkEnc = HostConnection::get()->vkEncoder();
579 vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator);
580}
581static VkResult entry_vkGetQueryPoolResults(
582 VkDevice device,
583 VkQueryPool queryPool,
584 uint32_t firstQuery,
585 uint32_t queryCount,
586 size_t dataSize,
587 void* pData,
588 VkDeviceSize stride,
589 VkQueryResultFlags flags)
590{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800591 AEMU_SCOPED_TRACE("vkGetQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800592 auto vkEnc = HostConnection::get()->vkEncoder();
593 VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
594 vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
595 return vkGetQueryPoolResults_VkResult_return;
596}
597static VkResult entry_vkCreateBuffer(
598 VkDevice device,
599 const VkBufferCreateInfo* pCreateInfo,
600 const VkAllocationCallbacks* pAllocator,
601 VkBuffer* pBuffer)
602{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800603 AEMU_SCOPED_TRACE("vkCreateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800604 auto vkEnc = HostConnection::get()->vkEncoder();
605 VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800606 auto resources = ResourceTracker::get();
607 vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800608 return vkCreateBuffer_VkResult_return;
609}
610static void entry_vkDestroyBuffer(
611 VkDevice device,
612 VkBuffer buffer,
613 const VkAllocationCallbacks* pAllocator)
614{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800615 AEMU_SCOPED_TRACE("vkDestroyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800616 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800617 auto resources = ResourceTracker::get();
618 resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800619}
620static VkResult entry_vkCreateBufferView(
621 VkDevice device,
622 const VkBufferViewCreateInfo* pCreateInfo,
623 const VkAllocationCallbacks* pAllocator,
624 VkBufferView* pView)
625{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800626 AEMU_SCOPED_TRACE("vkCreateBufferView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800627 auto vkEnc = HostConnection::get()->vkEncoder();
628 VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
629 vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView);
630 return vkCreateBufferView_VkResult_return;
631}
632static void entry_vkDestroyBufferView(
633 VkDevice device,
634 VkBufferView bufferView,
635 const VkAllocationCallbacks* pAllocator)
636{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800637 AEMU_SCOPED_TRACE("vkDestroyBufferView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800638 auto vkEnc = HostConnection::get()->vkEncoder();
639 vkEnc->vkDestroyBufferView(device, bufferView, pAllocator);
640}
641static VkResult entry_vkCreateImage(
642 VkDevice device,
643 const VkImageCreateInfo* pCreateInfo,
644 const VkAllocationCallbacks* pAllocator,
645 VkImage* pImage)
646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800647 AEMU_SCOPED_TRACE("vkCreateImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800648 auto vkEnc = HostConnection::get()->vkEncoder();
649 VkResult vkCreateImage_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800650 auto resources = ResourceTracker::get();
651 vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800652 return vkCreateImage_VkResult_return;
653}
654static void entry_vkDestroyImage(
655 VkDevice device,
656 VkImage image,
657 const VkAllocationCallbacks* pAllocator)
658{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800659 AEMU_SCOPED_TRACE("vkDestroyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800660 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -0800661 auto resources = ResourceTracker::get();
662 resources->on_vkDestroyImage(vkEnc, device, image, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800663}
664static void entry_vkGetImageSubresourceLayout(
665 VkDevice device,
666 VkImage image,
667 const VkImageSubresource* pSubresource,
668 VkSubresourceLayout* pLayout)
669{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800670 AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800671 auto vkEnc = HostConnection::get()->vkEncoder();
672 vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout);
673}
674static VkResult entry_vkCreateImageView(
675 VkDevice device,
676 const VkImageViewCreateInfo* pCreateInfo,
677 const VkAllocationCallbacks* pAllocator,
678 VkImageView* pView)
679{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800680 AEMU_SCOPED_TRACE("vkCreateImageView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800681 auto vkEnc = HostConnection::get()->vkEncoder();
682 VkResult vkCreateImageView_VkResult_return = (VkResult)0;
Roman Kiryanov6db11e52019-04-26 14:18:14 -0700683 auto resources = ResourceTracker::get();
684 vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800685 return vkCreateImageView_VkResult_return;
686}
687static void entry_vkDestroyImageView(
688 VkDevice device,
689 VkImageView imageView,
690 const VkAllocationCallbacks* pAllocator)
691{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800692 AEMU_SCOPED_TRACE("vkDestroyImageView");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800693 auto vkEnc = HostConnection::get()->vkEncoder();
694 vkEnc->vkDestroyImageView(device, imageView, pAllocator);
695}
696static VkResult entry_vkCreateShaderModule(
697 VkDevice device,
698 const VkShaderModuleCreateInfo* pCreateInfo,
699 const VkAllocationCallbacks* pAllocator,
700 VkShaderModule* pShaderModule)
701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800702 AEMU_SCOPED_TRACE("vkCreateShaderModule");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800703 auto vkEnc = HostConnection::get()->vkEncoder();
704 VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
705 vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
706 return vkCreateShaderModule_VkResult_return;
707}
708static void entry_vkDestroyShaderModule(
709 VkDevice device,
710 VkShaderModule shaderModule,
711 const VkAllocationCallbacks* pAllocator)
712{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800713 AEMU_SCOPED_TRACE("vkDestroyShaderModule");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800714 auto vkEnc = HostConnection::get()->vkEncoder();
715 vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator);
716}
717static VkResult entry_vkCreatePipelineCache(
718 VkDevice device,
719 const VkPipelineCacheCreateInfo* pCreateInfo,
720 const VkAllocationCallbacks* pAllocator,
721 VkPipelineCache* pPipelineCache)
722{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800723 AEMU_SCOPED_TRACE("vkCreatePipelineCache");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800724 auto vkEnc = HostConnection::get()->vkEncoder();
725 VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
726 vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
727 return vkCreatePipelineCache_VkResult_return;
728}
729static void entry_vkDestroyPipelineCache(
730 VkDevice device,
731 VkPipelineCache pipelineCache,
732 const VkAllocationCallbacks* pAllocator)
733{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800734 AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800735 auto vkEnc = HostConnection::get()->vkEncoder();
736 vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator);
737}
738static VkResult entry_vkGetPipelineCacheData(
739 VkDevice device,
740 VkPipelineCache pipelineCache,
741 size_t* pDataSize,
742 void* pData)
743{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800744 AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800745 auto vkEnc = HostConnection::get()->vkEncoder();
746 VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
747 vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData);
748 return vkGetPipelineCacheData_VkResult_return;
749}
750static VkResult entry_vkMergePipelineCaches(
751 VkDevice device,
752 VkPipelineCache dstCache,
753 uint32_t srcCacheCount,
754 const VkPipelineCache* pSrcCaches)
755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800756 AEMU_SCOPED_TRACE("vkMergePipelineCaches");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800757 auto vkEnc = HostConnection::get()->vkEncoder();
758 VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
759 vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
760 return vkMergePipelineCaches_VkResult_return;
761}
762static VkResult entry_vkCreateGraphicsPipelines(
763 VkDevice device,
764 VkPipelineCache pipelineCache,
765 uint32_t createInfoCount,
766 const VkGraphicsPipelineCreateInfo* pCreateInfos,
767 const VkAllocationCallbacks* pAllocator,
768 VkPipeline* pPipelines)
769{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800770 AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800771 auto vkEnc = HostConnection::get()->vkEncoder();
772 VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
773 vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
774 return vkCreateGraphicsPipelines_VkResult_return;
775}
776static VkResult entry_vkCreateComputePipelines(
777 VkDevice device,
778 VkPipelineCache pipelineCache,
779 uint32_t createInfoCount,
780 const VkComputePipelineCreateInfo* pCreateInfos,
781 const VkAllocationCallbacks* pAllocator,
782 VkPipeline* pPipelines)
783{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800784 AEMU_SCOPED_TRACE("vkCreateComputePipelines");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800785 auto vkEnc = HostConnection::get()->vkEncoder();
786 VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
787 vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
788 return vkCreateComputePipelines_VkResult_return;
789}
790static void entry_vkDestroyPipeline(
791 VkDevice device,
792 VkPipeline pipeline,
793 const VkAllocationCallbacks* pAllocator)
794{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800795 AEMU_SCOPED_TRACE("vkDestroyPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800796 auto vkEnc = HostConnection::get()->vkEncoder();
797 vkEnc->vkDestroyPipeline(device, pipeline, pAllocator);
798}
799static VkResult entry_vkCreatePipelineLayout(
800 VkDevice device,
801 const VkPipelineLayoutCreateInfo* pCreateInfo,
802 const VkAllocationCallbacks* pAllocator,
803 VkPipelineLayout* pPipelineLayout)
804{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800805 AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800806 auto vkEnc = HostConnection::get()->vkEncoder();
807 VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
808 vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
809 return vkCreatePipelineLayout_VkResult_return;
810}
811static void entry_vkDestroyPipelineLayout(
812 VkDevice device,
813 VkPipelineLayout pipelineLayout,
814 const VkAllocationCallbacks* pAllocator)
815{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800816 AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800817 auto vkEnc = HostConnection::get()->vkEncoder();
818 vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator);
819}
820static VkResult entry_vkCreateSampler(
821 VkDevice device,
822 const VkSamplerCreateInfo* pCreateInfo,
823 const VkAllocationCallbacks* pAllocator,
824 VkSampler* pSampler)
825{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800826 AEMU_SCOPED_TRACE("vkCreateSampler");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800827 auto vkEnc = HostConnection::get()->vkEncoder();
828 VkResult vkCreateSampler_VkResult_return = (VkResult)0;
Roman Kiryanov004f48c2019-06-28 14:59:32 -0700829 auto resources = ResourceTracker::get();
830 vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800831 return vkCreateSampler_VkResult_return;
832}
833static void entry_vkDestroySampler(
834 VkDevice device,
835 VkSampler sampler,
836 const VkAllocationCallbacks* pAllocator)
837{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800838 AEMU_SCOPED_TRACE("vkDestroySampler");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800839 auto vkEnc = HostConnection::get()->vkEncoder();
840 vkEnc->vkDestroySampler(device, sampler, pAllocator);
841}
842static VkResult entry_vkCreateDescriptorSetLayout(
843 VkDevice device,
844 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
845 const VkAllocationCallbacks* pAllocator,
846 VkDescriptorSetLayout* pSetLayout)
847{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800848 AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800849 auto vkEnc = HostConnection::get()->vkEncoder();
850 VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
Lingfeng Yang03354c72020-03-26 13:00:51 -0700851 auto resources = ResourceTracker::get();
852 vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800853 return vkCreateDescriptorSetLayout_VkResult_return;
854}
855static void entry_vkDestroyDescriptorSetLayout(
856 VkDevice device,
857 VkDescriptorSetLayout descriptorSetLayout,
858 const VkAllocationCallbacks* pAllocator)
859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800860 AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800861 auto vkEnc = HostConnection::get()->vkEncoder();
862 vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
863}
864static VkResult entry_vkCreateDescriptorPool(
865 VkDevice device,
866 const VkDescriptorPoolCreateInfo* pCreateInfo,
867 const VkAllocationCallbacks* pAllocator,
868 VkDescriptorPool* pDescriptorPool)
869{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800870 AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800871 auto vkEnc = HostConnection::get()->vkEncoder();
872 VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700873 auto resources = ResourceTracker::get();
874 vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800875 return vkCreateDescriptorPool_VkResult_return;
876}
877static void entry_vkDestroyDescriptorPool(
878 VkDevice device,
879 VkDescriptorPool descriptorPool,
880 const VkAllocationCallbacks* pAllocator)
881{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800882 AEMU_SCOPED_TRACE("vkDestroyDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800883 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700884 auto resources = ResourceTracker::get();
885 resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800886}
887static VkResult entry_vkResetDescriptorPool(
888 VkDevice device,
889 VkDescriptorPool descriptorPool,
890 VkDescriptorPoolResetFlags flags)
891{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800892 AEMU_SCOPED_TRACE("vkResetDescriptorPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800893 auto vkEnc = HostConnection::get()->vkEncoder();
894 VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700895 auto resources = ResourceTracker::get();
896 vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800897 return vkResetDescriptorPool_VkResult_return;
898}
899static VkResult entry_vkAllocateDescriptorSets(
900 VkDevice device,
901 const VkDescriptorSetAllocateInfo* pAllocateInfo,
902 VkDescriptorSet* pDescriptorSets)
903{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800904 AEMU_SCOPED_TRACE("vkAllocateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800905 auto vkEnc = HostConnection::get()->vkEncoder();
906 VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700907 auto resources = ResourceTracker::get();
908 vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800909 return vkAllocateDescriptorSets_VkResult_return;
910}
911static VkResult entry_vkFreeDescriptorSets(
912 VkDevice device,
913 VkDescriptorPool descriptorPool,
914 uint32_t descriptorSetCount,
915 const VkDescriptorSet* pDescriptorSets)
916{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800917 AEMU_SCOPED_TRACE("vkFreeDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800918 auto vkEnc = HostConnection::get()->vkEncoder();
919 VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
Lingfeng Yange9e77d52020-03-25 14:01:58 -0700920 auto resources = ResourceTracker::get();
921 vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800922 return vkFreeDescriptorSets_VkResult_return;
923}
924static void entry_vkUpdateDescriptorSets(
925 VkDevice device,
926 uint32_t descriptorWriteCount,
927 const VkWriteDescriptorSet* pDescriptorWrites,
928 uint32_t descriptorCopyCount,
929 const VkCopyDescriptorSet* pDescriptorCopies)
930{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800931 AEMU_SCOPED_TRACE("vkUpdateDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800932 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang03354c72020-03-26 13:00:51 -0700933 auto resources = ResourceTracker::get();
934 resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800935}
936static VkResult entry_vkCreateFramebuffer(
937 VkDevice device,
938 const VkFramebufferCreateInfo* pCreateInfo,
939 const VkAllocationCallbacks* pAllocator,
940 VkFramebuffer* pFramebuffer)
941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800942 AEMU_SCOPED_TRACE("vkCreateFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800943 auto vkEnc = HostConnection::get()->vkEncoder();
944 VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
945 vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
946 return vkCreateFramebuffer_VkResult_return;
947}
948static void entry_vkDestroyFramebuffer(
949 VkDevice device,
950 VkFramebuffer framebuffer,
951 const VkAllocationCallbacks* pAllocator)
952{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800953 AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800954 auto vkEnc = HostConnection::get()->vkEncoder();
955 vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator);
956}
957static VkResult entry_vkCreateRenderPass(
958 VkDevice device,
959 const VkRenderPassCreateInfo* pCreateInfo,
960 const VkAllocationCallbacks* pAllocator,
961 VkRenderPass* pRenderPass)
962{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800963 AEMU_SCOPED_TRACE("vkCreateRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800964 auto vkEnc = HostConnection::get()->vkEncoder();
965 VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
966 vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
967 return vkCreateRenderPass_VkResult_return;
968}
969static void entry_vkDestroyRenderPass(
970 VkDevice device,
971 VkRenderPass renderPass,
972 const VkAllocationCallbacks* pAllocator)
973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800974 AEMU_SCOPED_TRACE("vkDestroyRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800975 auto vkEnc = HostConnection::get()->vkEncoder();
976 vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator);
977}
978static void entry_vkGetRenderAreaGranularity(
979 VkDevice device,
980 VkRenderPass renderPass,
981 VkExtent2D* pGranularity)
982{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800983 AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800984 auto vkEnc = HostConnection::get()->vkEncoder();
985 vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity);
986}
987static VkResult entry_vkCreateCommandPool(
988 VkDevice device,
989 const VkCommandPoolCreateInfo* pCreateInfo,
990 const VkAllocationCallbacks* pAllocator,
991 VkCommandPool* pCommandPool)
992{
Lingfeng Yang42ac1792019-02-22 20:13:44 -0800993 AEMU_SCOPED_TRACE("vkCreateCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -0800994 auto vkEnc = HostConnection::get()->vkEncoder();
995 VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
996 vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
997 return vkCreateCommandPool_VkResult_return;
998}
999static void entry_vkDestroyCommandPool(
1000 VkDevice device,
1001 VkCommandPool commandPool,
1002 const VkAllocationCallbacks* pAllocator)
1003{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001004 AEMU_SCOPED_TRACE("vkDestroyCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001005 auto vkEnc = HostConnection::get()->vkEncoder();
1006 vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator);
1007}
1008static VkResult entry_vkResetCommandPool(
1009 VkDevice device,
1010 VkCommandPool commandPool,
1011 VkCommandPoolResetFlags flags)
1012{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001013 AEMU_SCOPED_TRACE("vkResetCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001014 auto vkEnc = HostConnection::get()->vkEncoder();
1015 VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
1016 vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags);
1017 return vkResetCommandPool_VkResult_return;
1018}
1019static VkResult entry_vkAllocateCommandBuffers(
1020 VkDevice device,
1021 const VkCommandBufferAllocateInfo* pAllocateInfo,
1022 VkCommandBuffer* pCommandBuffers)
1023{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001024 AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001025 auto vkEnc = HostConnection::get()->vkEncoder();
1026 VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
1027 vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
1028 return vkAllocateCommandBuffers_VkResult_return;
1029}
1030static void entry_vkFreeCommandBuffers(
1031 VkDevice device,
1032 VkCommandPool commandPool,
1033 uint32_t commandBufferCount,
1034 const VkCommandBuffer* pCommandBuffers)
1035{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001036 AEMU_SCOPED_TRACE("vkFreeCommandBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001037 auto vkEnc = HostConnection::get()->vkEncoder();
1038 vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
1039}
1040static VkResult entry_vkBeginCommandBuffer(
1041 VkCommandBuffer commandBuffer,
1042 const VkCommandBufferBeginInfo* pBeginInfo)
1043{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001044 AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001045 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001046 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001047 VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001048 auto resources = ResourceTracker::get();
1049 vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001050 return vkBeginCommandBuffer_VkResult_return;
1051}
1052static VkResult entry_vkEndCommandBuffer(
1053 VkCommandBuffer commandBuffer)
1054{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001055 AEMU_SCOPED_TRACE("vkEndCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001056 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001057 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001058 VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001059 auto resources = ResourceTracker::get();
1060 vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001061 return vkEndCommandBuffer_VkResult_return;
1062}
1063static VkResult entry_vkResetCommandBuffer(
1064 VkCommandBuffer commandBuffer,
1065 VkCommandBufferResetFlags flags)
1066{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001067 AEMU_SCOPED_TRACE("vkResetCommandBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001068 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001069 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001070 VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
Lingfeng Yangc53e7472019-03-27 08:50:55 -07001071 auto resources = ResourceTracker::get();
1072 vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001073 return vkResetCommandBuffer_VkResult_return;
1074}
1075static void entry_vkCmdBindPipeline(
1076 VkCommandBuffer commandBuffer,
1077 VkPipelineBindPoint pipelineBindPoint,
1078 VkPipeline pipeline)
1079{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001080 AEMU_SCOPED_TRACE("vkCmdBindPipeline");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001081 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001082 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001083 vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
1084}
1085static void entry_vkCmdSetViewport(
1086 VkCommandBuffer commandBuffer,
1087 uint32_t firstViewport,
1088 uint32_t viewportCount,
1089 const VkViewport* pViewports)
1090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001091 AEMU_SCOPED_TRACE("vkCmdSetViewport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001092 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001093 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001094 vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
1095}
1096static void entry_vkCmdSetScissor(
1097 VkCommandBuffer commandBuffer,
1098 uint32_t firstScissor,
1099 uint32_t scissorCount,
1100 const VkRect2D* pScissors)
1101{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001102 AEMU_SCOPED_TRACE("vkCmdSetScissor");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001103 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001104 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001105 vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
1106}
1107static void entry_vkCmdSetLineWidth(
1108 VkCommandBuffer commandBuffer,
1109 float lineWidth)
1110{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001111 AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001112 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001113 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001114 vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth);
1115}
1116static void entry_vkCmdSetDepthBias(
1117 VkCommandBuffer commandBuffer,
1118 float depthBiasConstantFactor,
1119 float depthBiasClamp,
1120 float depthBiasSlopeFactor)
1121{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001122 AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001123 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001124 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001125 vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
1126}
1127static void entry_vkCmdSetBlendConstants(
1128 VkCommandBuffer commandBuffer,
Lingfeng Yang97ddeb82019-04-20 14:32:52 -07001129 const float blendConstants[4])
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001130{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001131 AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001132 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001133 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001134 vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants);
1135}
1136static void entry_vkCmdSetDepthBounds(
1137 VkCommandBuffer commandBuffer,
1138 float minDepthBounds,
1139 float maxDepthBounds)
1140{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001141 AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001142 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001143 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001144 vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
1145}
1146static void entry_vkCmdSetStencilCompareMask(
1147 VkCommandBuffer commandBuffer,
1148 VkStencilFaceFlags faceMask,
1149 uint32_t compareMask)
1150{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001151 AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001152 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001153 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001154 vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
1155}
1156static void entry_vkCmdSetStencilWriteMask(
1157 VkCommandBuffer commandBuffer,
1158 VkStencilFaceFlags faceMask,
1159 uint32_t writeMask)
1160{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001161 AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001162 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001163 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001164 vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
1165}
1166static void entry_vkCmdSetStencilReference(
1167 VkCommandBuffer commandBuffer,
1168 VkStencilFaceFlags faceMask,
1169 uint32_t reference)
1170{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001171 AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001172 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001173 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001174 vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference);
1175}
1176static void entry_vkCmdBindDescriptorSets(
1177 VkCommandBuffer commandBuffer,
1178 VkPipelineBindPoint pipelineBindPoint,
1179 VkPipelineLayout layout,
1180 uint32_t firstSet,
1181 uint32_t descriptorSetCount,
1182 const VkDescriptorSet* pDescriptorSets,
1183 uint32_t dynamicOffsetCount,
1184 const uint32_t* pDynamicOffsets)
1185{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001186 AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001187 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001188 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001189 vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1190}
1191static void entry_vkCmdBindIndexBuffer(
1192 VkCommandBuffer commandBuffer,
1193 VkBuffer buffer,
1194 VkDeviceSize offset,
1195 VkIndexType indexType)
1196{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001197 AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001198 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001199 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001200 vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
1201}
1202static void entry_vkCmdBindVertexBuffers(
1203 VkCommandBuffer commandBuffer,
1204 uint32_t firstBinding,
1205 uint32_t bindingCount,
1206 const VkBuffer* pBuffers,
1207 const VkDeviceSize* pOffsets)
1208{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001209 AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001210 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001211 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001212 vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
1213}
1214static void entry_vkCmdDraw(
1215 VkCommandBuffer commandBuffer,
1216 uint32_t vertexCount,
1217 uint32_t instanceCount,
1218 uint32_t firstVertex,
1219 uint32_t firstInstance)
1220{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001221 AEMU_SCOPED_TRACE("vkCmdDraw");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001222 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001223 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001224 vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
1225}
1226static void entry_vkCmdDrawIndexed(
1227 VkCommandBuffer commandBuffer,
1228 uint32_t indexCount,
1229 uint32_t instanceCount,
1230 uint32_t firstIndex,
1231 int32_t vertexOffset,
1232 uint32_t firstInstance)
1233{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001234 AEMU_SCOPED_TRACE("vkCmdDrawIndexed");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001235 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001236 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001237 vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
1238}
1239static void entry_vkCmdDrawIndirect(
1240 VkCommandBuffer commandBuffer,
1241 VkBuffer buffer,
1242 VkDeviceSize offset,
1243 uint32_t drawCount,
1244 uint32_t stride)
1245{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001246 AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001247 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001248 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001249 vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
1250}
1251static void entry_vkCmdDrawIndexedIndirect(
1252 VkCommandBuffer commandBuffer,
1253 VkBuffer buffer,
1254 VkDeviceSize offset,
1255 uint32_t drawCount,
1256 uint32_t stride)
1257{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001258 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001259 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001260 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001261 vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
1262}
1263static void entry_vkCmdDispatch(
1264 VkCommandBuffer commandBuffer,
1265 uint32_t groupCountX,
1266 uint32_t groupCountY,
1267 uint32_t groupCountZ)
1268{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001269 AEMU_SCOPED_TRACE("vkCmdDispatch");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001270 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001271 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001272 vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
1273}
1274static void entry_vkCmdDispatchIndirect(
1275 VkCommandBuffer commandBuffer,
1276 VkBuffer buffer,
1277 VkDeviceSize offset)
1278{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001279 AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001280 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001281 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001282 vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset);
1283}
1284static void entry_vkCmdCopyBuffer(
1285 VkCommandBuffer commandBuffer,
1286 VkBuffer srcBuffer,
1287 VkBuffer dstBuffer,
1288 uint32_t regionCount,
1289 const VkBufferCopy* pRegions)
1290{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001291 AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001292 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001293 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001294 vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
1295}
1296static void entry_vkCmdCopyImage(
1297 VkCommandBuffer commandBuffer,
1298 VkImage srcImage,
1299 VkImageLayout srcImageLayout,
1300 VkImage dstImage,
1301 VkImageLayout dstImageLayout,
1302 uint32_t regionCount,
1303 const VkImageCopy* pRegions)
1304{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001305 AEMU_SCOPED_TRACE("vkCmdCopyImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001306 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001307 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001308 vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1309}
1310static void entry_vkCmdBlitImage(
1311 VkCommandBuffer commandBuffer,
1312 VkImage srcImage,
1313 VkImageLayout srcImageLayout,
1314 VkImage dstImage,
1315 VkImageLayout dstImageLayout,
1316 uint32_t regionCount,
1317 const VkImageBlit* pRegions,
1318 VkFilter filter)
1319{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001320 AEMU_SCOPED_TRACE("vkCmdBlitImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001321 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001322 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001323 vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
1324}
1325static void entry_vkCmdCopyBufferToImage(
1326 VkCommandBuffer commandBuffer,
1327 VkBuffer srcBuffer,
1328 VkImage dstImage,
1329 VkImageLayout dstImageLayout,
1330 uint32_t regionCount,
1331 const VkBufferImageCopy* pRegions)
1332{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001333 AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001334 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001335 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001336 vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
1337}
1338static void entry_vkCmdCopyImageToBuffer(
1339 VkCommandBuffer commandBuffer,
1340 VkImage srcImage,
1341 VkImageLayout srcImageLayout,
1342 VkBuffer dstBuffer,
1343 uint32_t regionCount,
1344 const VkBufferImageCopy* pRegions)
1345{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001346 AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001347 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001348 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001349 vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
1350}
1351static void entry_vkCmdUpdateBuffer(
1352 VkCommandBuffer commandBuffer,
1353 VkBuffer dstBuffer,
1354 VkDeviceSize dstOffset,
1355 VkDeviceSize dataSize,
1356 const void* pData)
1357{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001358 AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001359 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001360 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001361 vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
1362}
1363static void entry_vkCmdFillBuffer(
1364 VkCommandBuffer commandBuffer,
1365 VkBuffer dstBuffer,
1366 VkDeviceSize dstOffset,
1367 VkDeviceSize size,
1368 uint32_t data)
1369{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001370 AEMU_SCOPED_TRACE("vkCmdFillBuffer");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001371 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001372 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001373 vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
1374}
1375static void entry_vkCmdClearColorImage(
1376 VkCommandBuffer commandBuffer,
1377 VkImage image,
1378 VkImageLayout imageLayout,
1379 const VkClearColorValue* pColor,
1380 uint32_t rangeCount,
1381 const VkImageSubresourceRange* pRanges)
1382{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001383 AEMU_SCOPED_TRACE("vkCmdClearColorImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001384 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001385 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001386 vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
1387}
1388static void entry_vkCmdClearDepthStencilImage(
1389 VkCommandBuffer commandBuffer,
1390 VkImage image,
1391 VkImageLayout imageLayout,
1392 const VkClearDepthStencilValue* pDepthStencil,
1393 uint32_t rangeCount,
1394 const VkImageSubresourceRange* pRanges)
1395{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001396 AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001397 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001398 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001399 vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
1400}
1401static void entry_vkCmdClearAttachments(
1402 VkCommandBuffer commandBuffer,
1403 uint32_t attachmentCount,
1404 const VkClearAttachment* pAttachments,
1405 uint32_t rectCount,
1406 const VkClearRect* pRects)
1407{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001408 AEMU_SCOPED_TRACE("vkCmdClearAttachments");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001409 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001410 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001411 vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
1412}
1413static void entry_vkCmdResolveImage(
1414 VkCommandBuffer commandBuffer,
1415 VkImage srcImage,
1416 VkImageLayout srcImageLayout,
1417 VkImage dstImage,
1418 VkImageLayout dstImageLayout,
1419 uint32_t regionCount,
1420 const VkImageResolve* pRegions)
1421{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001422 AEMU_SCOPED_TRACE("vkCmdResolveImage");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001423 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001424 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001425 vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
1426}
1427static void entry_vkCmdSetEvent(
1428 VkCommandBuffer commandBuffer,
1429 VkEvent event,
1430 VkPipelineStageFlags stageMask)
1431{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001432 AEMU_SCOPED_TRACE("vkCmdSetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001433 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001434 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001435 vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask);
1436}
1437static void entry_vkCmdResetEvent(
1438 VkCommandBuffer commandBuffer,
1439 VkEvent event,
1440 VkPipelineStageFlags stageMask)
1441{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001442 AEMU_SCOPED_TRACE("vkCmdResetEvent");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001443 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001444 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001445 vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask);
1446}
1447static void entry_vkCmdWaitEvents(
1448 VkCommandBuffer commandBuffer,
1449 uint32_t eventCount,
1450 const VkEvent* pEvents,
1451 VkPipelineStageFlags srcStageMask,
1452 VkPipelineStageFlags dstStageMask,
1453 uint32_t memoryBarrierCount,
1454 const VkMemoryBarrier* pMemoryBarriers,
1455 uint32_t bufferMemoryBarrierCount,
1456 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1457 uint32_t imageMemoryBarrierCount,
1458 const VkImageMemoryBarrier* pImageMemoryBarriers)
1459{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001460 AEMU_SCOPED_TRACE("vkCmdWaitEvents");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001461 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001462 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001463 vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1464}
1465static void entry_vkCmdPipelineBarrier(
1466 VkCommandBuffer commandBuffer,
1467 VkPipelineStageFlags srcStageMask,
1468 VkPipelineStageFlags dstStageMask,
1469 VkDependencyFlags dependencyFlags,
1470 uint32_t memoryBarrierCount,
1471 const VkMemoryBarrier* pMemoryBarriers,
1472 uint32_t bufferMemoryBarrierCount,
1473 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1474 uint32_t imageMemoryBarrierCount,
1475 const VkImageMemoryBarrier* pImageMemoryBarriers)
1476{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001477 AEMU_SCOPED_TRACE("vkCmdPipelineBarrier");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001478 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001479 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001480 vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
1481}
1482static void entry_vkCmdBeginQuery(
1483 VkCommandBuffer commandBuffer,
1484 VkQueryPool queryPool,
1485 uint32_t query,
1486 VkQueryControlFlags flags)
1487{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001488 AEMU_SCOPED_TRACE("vkCmdBeginQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001489 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001490 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001491 vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags);
1492}
1493static void entry_vkCmdEndQuery(
1494 VkCommandBuffer commandBuffer,
1495 VkQueryPool queryPool,
1496 uint32_t query)
1497{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001498 AEMU_SCOPED_TRACE("vkCmdEndQuery");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001499 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001500 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001501 vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query);
1502}
1503static void entry_vkCmdResetQueryPool(
1504 VkCommandBuffer commandBuffer,
1505 VkQueryPool queryPool,
1506 uint32_t firstQuery,
1507 uint32_t queryCount)
1508{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001509 AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001510 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001511 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001512 vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
1513}
1514static void entry_vkCmdWriteTimestamp(
1515 VkCommandBuffer commandBuffer,
1516 VkPipelineStageFlagBits pipelineStage,
1517 VkQueryPool queryPool,
1518 uint32_t query)
1519{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001520 AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001521 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001522 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001523 vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
1524}
1525static void entry_vkCmdCopyQueryPoolResults(
1526 VkCommandBuffer commandBuffer,
1527 VkQueryPool queryPool,
1528 uint32_t firstQuery,
1529 uint32_t queryCount,
1530 VkBuffer dstBuffer,
1531 VkDeviceSize dstOffset,
1532 VkDeviceSize stride,
1533 VkQueryResultFlags flags)
1534{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001535 AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001536 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001537 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001538 vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
1539}
1540static void entry_vkCmdPushConstants(
1541 VkCommandBuffer commandBuffer,
1542 VkPipelineLayout layout,
1543 VkShaderStageFlags stageFlags,
1544 uint32_t offset,
1545 uint32_t size,
1546 const void* pValues)
1547{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001548 AEMU_SCOPED_TRACE("vkCmdPushConstants");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001549 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001550 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001551 vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
1552}
1553static void entry_vkCmdBeginRenderPass(
1554 VkCommandBuffer commandBuffer,
1555 const VkRenderPassBeginInfo* pRenderPassBegin,
1556 VkSubpassContents contents)
1557{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001558 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001559 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001560 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001561 vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
1562}
1563static void entry_vkCmdNextSubpass(
1564 VkCommandBuffer commandBuffer,
1565 VkSubpassContents contents)
1566{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001567 AEMU_SCOPED_TRACE("vkCmdNextSubpass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001568 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001569 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001570 vkEnc->vkCmdNextSubpass(commandBuffer, contents);
1571}
1572static void entry_vkCmdEndRenderPass(
1573 VkCommandBuffer commandBuffer)
1574{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001575 AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001576 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001577 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001578 vkEnc->vkCmdEndRenderPass(commandBuffer);
1579}
1580static void entry_vkCmdExecuteCommands(
1581 VkCommandBuffer commandBuffer,
1582 uint32_t commandBufferCount,
1583 const VkCommandBuffer* pCommandBuffers)
1584{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001585 AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001586 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001587 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001588 vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
1589}
1590#endif
1591#ifdef VK_VERSION_1_1
1592static VkResult entry_vkEnumerateInstanceVersion(
1593 uint32_t* pApiVersion)
1594{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001595 AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001596 auto vkEnc = HostConnection::get()->vkEncoder();
1597 VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
1598 vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion);
1599 return vkEnumerateInstanceVersion_VkResult_return;
1600}
1601static VkResult entry_vkBindBufferMemory2(
1602 VkDevice device,
1603 uint32_t bindInfoCount,
1604 const VkBindBufferMemoryInfo* pBindInfos)
1605{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001606 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001607 auto vkEnc = HostConnection::get()->vkEncoder();
1608 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001609 auto resources = ResourceTracker::get();
1610 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001611 return vkBindBufferMemory2_VkResult_return;
1612}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001613static VkResult dynCheck_entry_vkBindBufferMemory2(
1614 VkDevice device,
1615 uint32_t bindInfoCount,
1616 const VkBindBufferMemoryInfo* pBindInfos)
1617{
1618 auto resources = ResourceTracker::get();
1619 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1620 {
1621 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1");
1622 }
1623 AEMU_SCOPED_TRACE("vkBindBufferMemory2");
1624 auto vkEnc = HostConnection::get()->vkEncoder();
1625 VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1626 vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1627 return vkBindBufferMemory2_VkResult_return;
1628}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001629static VkResult entry_vkBindImageMemory2(
1630 VkDevice device,
1631 uint32_t bindInfoCount,
1632 const VkBindImageMemoryInfo* pBindInfos)
1633{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001634 AEMU_SCOPED_TRACE("vkBindImageMemory2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001635 auto vkEnc = HostConnection::get()->vkEncoder();
1636 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001637 auto resources = ResourceTracker::get();
1638 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001639 return vkBindImageMemory2_VkResult_return;
1640}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001641static VkResult dynCheck_entry_vkBindImageMemory2(
1642 VkDevice device,
1643 uint32_t bindInfoCount,
1644 const VkBindImageMemoryInfo* pBindInfos)
1645{
1646 auto resources = ResourceTracker::get();
1647 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1648 {
1649 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1");
1650 }
1651 AEMU_SCOPED_TRACE("vkBindImageMemory2");
1652 auto vkEnc = HostConnection::get()->vkEncoder();
1653 VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1654 vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
1655 return vkBindImageMemory2_VkResult_return;
1656}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001657static void entry_vkGetDeviceGroupPeerMemoryFeatures(
1658 VkDevice device,
1659 uint32_t heapIndex,
1660 uint32_t localDeviceIndex,
1661 uint32_t remoteDeviceIndex,
1662 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1663{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001664 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001665 auto vkEnc = HostConnection::get()->vkEncoder();
1666 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1667}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001668static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures(
1669 VkDevice device,
1670 uint32_t heapIndex,
1671 uint32_t localDeviceIndex,
1672 uint32_t remoteDeviceIndex,
1673 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1674{
1675 auto resources = ResourceTracker::get();
1676 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1677 {
1678 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1");
1679 }
1680 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures");
1681 auto vkEnc = HostConnection::get()->vkEncoder();
1682 vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
1683}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001684static void entry_vkCmdSetDeviceMask(
1685 VkCommandBuffer commandBuffer,
1686 uint32_t deviceMask)
1687{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001688 AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001689 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001690 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001691 vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask);
1692}
1693static void entry_vkCmdDispatchBase(
1694 VkCommandBuffer commandBuffer,
1695 uint32_t baseGroupX,
1696 uint32_t baseGroupY,
1697 uint32_t baseGroupZ,
1698 uint32_t groupCountX,
1699 uint32_t groupCountY,
1700 uint32_t groupCountZ)
1701{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001702 AEMU_SCOPED_TRACE("vkCmdDispatchBase");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001703 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07001704 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001705 vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
1706}
1707static VkResult entry_vkEnumeratePhysicalDeviceGroups(
1708 VkInstance instance,
1709 uint32_t* pPhysicalDeviceGroupCount,
1710 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1711{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001712 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001713 auto vkEnc = HostConnection::get()->vkEncoder();
1714 VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
1715 vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
1716 return vkEnumeratePhysicalDeviceGroups_VkResult_return;
1717}
1718static void entry_vkGetImageMemoryRequirements2(
1719 VkDevice device,
1720 const VkImageMemoryRequirementsInfo2* pInfo,
1721 VkMemoryRequirements2* pMemoryRequirements)
1722{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001723 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001724 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001725 auto resources = ResourceTracker::get();
1726 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001727}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001728static void dynCheck_entry_vkGetImageMemoryRequirements2(
1729 VkDevice device,
1730 const VkImageMemoryRequirementsInfo2* pInfo,
1731 VkMemoryRequirements2* pMemoryRequirements)
1732{
1733 auto resources = ResourceTracker::get();
1734 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1735 {
1736 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1");
1737 }
1738 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
1739 auto vkEnc = HostConnection::get()->vkEncoder();
1740 resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1741}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001742static void entry_vkGetBufferMemoryRequirements2(
1743 VkDevice device,
1744 const VkBufferMemoryRequirementsInfo2* pInfo,
1745 VkMemoryRequirements2* pMemoryRequirements)
1746{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001747 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001748 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08001749 auto resources = ResourceTracker::get();
1750 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001751}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001752static void dynCheck_entry_vkGetBufferMemoryRequirements2(
1753 VkDevice device,
1754 const VkBufferMemoryRequirementsInfo2* pInfo,
1755 VkMemoryRequirements2* pMemoryRequirements)
1756{
1757 auto resources = ResourceTracker::get();
1758 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1759 {
1760 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1");
1761 }
1762 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
1763 auto vkEnc = HostConnection::get()->vkEncoder();
1764 resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
1765}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001766static void entry_vkGetImageSparseMemoryRequirements2(
1767 VkDevice device,
1768 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1769 uint32_t* pSparseMemoryRequirementCount,
1770 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1771{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001772 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001773 auto vkEnc = HostConnection::get()->vkEncoder();
1774 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1775}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001776static void dynCheck_entry_vkGetImageSparseMemoryRequirements2(
1777 VkDevice device,
1778 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1779 uint32_t* pSparseMemoryRequirementCount,
1780 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1781{
1782 auto resources = ResourceTracker::get();
1783 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1784 {
1785 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1");
1786 }
1787 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2");
1788 auto vkEnc = HostConnection::get()->vkEncoder();
1789 vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1790}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001791static void entry_vkGetPhysicalDeviceFeatures2(
1792 VkPhysicalDevice physicalDevice,
1793 VkPhysicalDeviceFeatures2* pFeatures)
1794{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001795 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001796 auto vkEnc = HostConnection::get()->vkEncoder();
1797 vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
1798}
1799static void entry_vkGetPhysicalDeviceProperties2(
1800 VkPhysicalDevice physicalDevice,
1801 VkPhysicalDeviceProperties2* pProperties)
1802{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001803 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001804 auto vkEnc = HostConnection::get()->vkEncoder();
1805 vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties);
1806}
1807static void entry_vkGetPhysicalDeviceFormatProperties2(
1808 VkPhysicalDevice physicalDevice,
1809 VkFormat format,
1810 VkFormatProperties2* pFormatProperties)
1811{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001812 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001813 auto vkEnc = HostConnection::get()->vkEncoder();
1814 vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
1815}
1816static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
1817 VkPhysicalDevice physicalDevice,
1818 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1819 VkImageFormatProperties2* pImageFormatProperties)
1820{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001821 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001822 auto vkEnc = HostConnection::get()->vkEncoder();
1823 VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07001824 auto resources = ResourceTracker::get();
1825 vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001826 return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1827}
1828static void entry_vkGetPhysicalDeviceQueueFamilyProperties2(
1829 VkPhysicalDevice physicalDevice,
1830 uint32_t* pQueueFamilyPropertyCount,
1831 VkQueueFamilyProperties2* pQueueFamilyProperties)
1832{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001833 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001834 auto vkEnc = HostConnection::get()->vkEncoder();
1835 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1836}
1837static void entry_vkGetPhysicalDeviceMemoryProperties2(
1838 VkPhysicalDevice physicalDevice,
1839 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1840{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001841 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001842 auto vkEnc = HostConnection::get()->vkEncoder();
1843 vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
1844}
1845static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
1846 VkPhysicalDevice physicalDevice,
1847 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1848 uint32_t* pPropertyCount,
1849 VkSparseImageFormatProperties2* pProperties)
1850{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001851 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001852 auto vkEnc = HostConnection::get()->vkEncoder();
1853 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
1854}
1855static void entry_vkTrimCommandPool(
1856 VkDevice device,
1857 VkCommandPool commandPool,
1858 VkCommandPoolTrimFlags flags)
1859{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001860 AEMU_SCOPED_TRACE("vkTrimCommandPool");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001861 auto vkEnc = HostConnection::get()->vkEncoder();
1862 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1863}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001864static void dynCheck_entry_vkTrimCommandPool(
1865 VkDevice device,
1866 VkCommandPool commandPool,
1867 VkCommandPoolTrimFlags flags)
1868{
1869 auto resources = ResourceTracker::get();
1870 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1871 {
1872 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1");
1873 }
1874 AEMU_SCOPED_TRACE("vkTrimCommandPool");
1875 auto vkEnc = HostConnection::get()->vkEncoder();
1876 vkEnc->vkTrimCommandPool(device, commandPool, flags);
1877}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001878static void entry_vkGetDeviceQueue2(
1879 VkDevice device,
1880 const VkDeviceQueueInfo2* pQueueInfo,
1881 VkQueue* pQueue)
1882{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001883 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001884 auto vkEnc = HostConnection::get()->vkEncoder();
1885 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1886}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001887static void dynCheck_entry_vkGetDeviceQueue2(
1888 VkDevice device,
1889 const VkDeviceQueueInfo2* pQueueInfo,
1890 VkQueue* pQueue)
1891{
1892 auto resources = ResourceTracker::get();
1893 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1894 {
1895 sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1");
1896 }
1897 AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
1898 auto vkEnc = HostConnection::get()->vkEncoder();
1899 vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue);
1900}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001901static VkResult entry_vkCreateSamplerYcbcrConversion(
1902 VkDevice device,
1903 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1904 const VkAllocationCallbacks* pAllocator,
1905 VkSamplerYcbcrConversion* pYcbcrConversion)
1906{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001907 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001908 auto vkEnc = HostConnection::get()->vkEncoder();
1909 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08001910 auto resources = ResourceTracker::get();
1911 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001912 return vkCreateSamplerYcbcrConversion_VkResult_return;
1913}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001914static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion(
1915 VkDevice device,
1916 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1917 const VkAllocationCallbacks* pAllocator,
1918 VkSamplerYcbcrConversion* pYcbcrConversion)
1919{
1920 auto resources = ResourceTracker::get();
1921 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1922 {
1923 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1");
1924 }
1925 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
1926 auto vkEnc = HostConnection::get()->vkEncoder();
1927 VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1928 vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
1929 return vkCreateSamplerYcbcrConversion_VkResult_return;
1930}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001931static void entry_vkDestroySamplerYcbcrConversion(
1932 VkDevice device,
1933 VkSamplerYcbcrConversion ycbcrConversion,
1934 const VkAllocationCallbacks* pAllocator)
1935{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001936 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001937 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07001938 auto resources = ResourceTracker::get();
1939 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001940}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001941static void dynCheck_entry_vkDestroySamplerYcbcrConversion(
1942 VkDevice device,
1943 VkSamplerYcbcrConversion ycbcrConversion,
1944 const VkAllocationCallbacks* pAllocator)
1945{
1946 auto resources = ResourceTracker::get();
1947 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1948 {
1949 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1");
1950 }
1951 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion");
1952 auto vkEnc = HostConnection::get()->vkEncoder();
1953 resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator);
1954}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001955static VkResult entry_vkCreateDescriptorUpdateTemplate(
1956 VkDevice device,
1957 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1958 const VkAllocationCallbacks* pAllocator,
1959 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1960{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001961 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001962 auto vkEnc = HostConnection::get()->vkEncoder();
1963 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1964 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1965 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1966}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001967static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate(
1968 VkDevice device,
1969 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1970 const VkAllocationCallbacks* pAllocator,
1971 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1972{
1973 auto resources = ResourceTracker::get();
1974 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
1975 {
1976 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1");
1977 }
1978 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate");
1979 auto vkEnc = HostConnection::get()->vkEncoder();
1980 VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1981 vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
1982 return vkCreateDescriptorUpdateTemplate_VkResult_return;
1983}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001984static void entry_vkDestroyDescriptorUpdateTemplate(
1985 VkDevice device,
1986 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1987 const VkAllocationCallbacks* pAllocator)
1988{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08001989 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08001990 auto vkEnc = HostConnection::get()->vkEncoder();
1991 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
1992}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07001993static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate(
1994 VkDevice device,
1995 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1996 const VkAllocationCallbacks* pAllocator)
1997{
1998 auto resources = ResourceTracker::get();
1999 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2000 {
2001 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1");
2002 }
2003 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
2004 auto vkEnc = HostConnection::get()->vkEncoder();
2005 vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
2006}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002007static void entry_vkUpdateDescriptorSetWithTemplate(
2008 VkDevice device,
2009 VkDescriptorSet descriptorSet,
2010 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2011 const void* pData)
2012{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002013 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002014 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07002015 auto resources = ResourceTracker::get();
2016 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002017}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002018static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate(
2019 VkDevice device,
2020 VkDescriptorSet descriptorSet,
2021 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
2022 const void* pData)
2023{
2024 auto resources = ResourceTracker::get();
2025 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2026 {
2027 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1");
2028 }
2029 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
2030 auto vkEnc = HostConnection::get()->vkEncoder();
2031 resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData);
2032}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002033static void entry_vkGetPhysicalDeviceExternalBufferProperties(
2034 VkPhysicalDevice physicalDevice,
2035 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2036 VkExternalBufferProperties* pExternalBufferProperties)
2037{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002038 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002039 auto vkEnc = HostConnection::get()->vkEncoder();
2040 vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2041}
2042static void entry_vkGetPhysicalDeviceExternalFenceProperties(
2043 VkPhysicalDevice physicalDevice,
2044 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2045 VkExternalFenceProperties* pExternalFenceProperties)
2046{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002047 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002048 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07002049 auto resources = ResourceTracker::get();
2050 resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002051}
2052static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties(
2053 VkPhysicalDevice physicalDevice,
2054 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2055 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2056{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002057 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002058 auto vkEnc = HostConnection::get()->vkEncoder();
2059 vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2060}
2061static void entry_vkGetDescriptorSetLayoutSupport(
2062 VkDevice device,
2063 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2064 VkDescriptorSetLayoutSupport* pSupport)
2065{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002066 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002067 auto vkEnc = HostConnection::get()->vkEncoder();
2068 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2069}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002070static void dynCheck_entry_vkGetDescriptorSetLayoutSupport(
2071 VkDevice device,
2072 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2073 VkDescriptorSetLayoutSupport* pSupport)
2074{
2075 auto resources = ResourceTracker::get();
2076 if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
2077 {
2078 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1");
2079 }
2080 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
2081 auto vkEnc = HostConnection::get()->vkEncoder();
2082 vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
2083}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002084#endif
2085#ifdef VK_KHR_surface
2086static void entry_vkDestroySurfaceKHR(
2087 VkInstance instance,
2088 VkSurfaceKHR surface,
2089 const VkAllocationCallbacks* pAllocator)
2090{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002091 AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002092 auto vkEnc = HostConnection::get()->vkEncoder();
2093 vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator);
2094}
2095static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
2096 VkPhysicalDevice physicalDevice,
2097 uint32_t queueFamilyIndex,
2098 VkSurfaceKHR surface,
2099 VkBool32* pSupported)
2100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002101 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002102 auto vkEnc = HostConnection::get()->vkEncoder();
2103 VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
2104 vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
2105 return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
2106}
2107static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
2108 VkPhysicalDevice physicalDevice,
2109 VkSurfaceKHR surface,
2110 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2111{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002112 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002113 auto vkEnc = HostConnection::get()->vkEncoder();
2114 VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
2115 vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
2116 return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
2117}
2118static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
2119 VkPhysicalDevice physicalDevice,
2120 VkSurfaceKHR surface,
2121 uint32_t* pSurfaceFormatCount,
2122 VkSurfaceFormatKHR* pSurfaceFormats)
2123{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002124 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002125 auto vkEnc = HostConnection::get()->vkEncoder();
2126 VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
2127 vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
2128 return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
2129}
2130static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
2131 VkPhysicalDevice physicalDevice,
2132 VkSurfaceKHR surface,
2133 uint32_t* pPresentModeCount,
2134 VkPresentModeKHR* pPresentModes)
2135{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002136 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002137 auto vkEnc = HostConnection::get()->vkEncoder();
2138 VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2139 vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
2140 return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
2141}
2142#endif
2143#ifdef VK_KHR_swapchain
2144static VkResult entry_vkCreateSwapchainKHR(
2145 VkDevice device,
2146 const VkSwapchainCreateInfoKHR* pCreateInfo,
2147 const VkAllocationCallbacks* pAllocator,
2148 VkSwapchainKHR* pSwapchain)
2149{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002150 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002151 auto vkEnc = HostConnection::get()->vkEncoder();
2152 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2153 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2154 return vkCreateSwapchainKHR_VkResult_return;
2155}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002156static VkResult dynCheck_entry_vkCreateSwapchainKHR(
2157 VkDevice device,
2158 const VkSwapchainCreateInfoKHR* pCreateInfo,
2159 const VkAllocationCallbacks* pAllocator,
2160 VkSwapchainKHR* pSwapchain)
2161{
2162 auto resources = ResourceTracker::get();
2163 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2164 {
2165 sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain");
2166 }
2167 AEMU_SCOPED_TRACE("vkCreateSwapchainKHR");
2168 auto vkEnc = HostConnection::get()->vkEncoder();
2169 VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
2170 vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
2171 return vkCreateSwapchainKHR_VkResult_return;
2172}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002173static void entry_vkDestroySwapchainKHR(
2174 VkDevice device,
2175 VkSwapchainKHR swapchain,
2176 const VkAllocationCallbacks* pAllocator)
2177{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002178 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002179 auto vkEnc = HostConnection::get()->vkEncoder();
2180 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2181}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002182static void dynCheck_entry_vkDestroySwapchainKHR(
2183 VkDevice device,
2184 VkSwapchainKHR swapchain,
2185 const VkAllocationCallbacks* pAllocator)
2186{
2187 auto resources = ResourceTracker::get();
2188 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2189 {
2190 sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain");
2191 }
2192 AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
2193 auto vkEnc = HostConnection::get()->vkEncoder();
2194 vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator);
2195}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002196static VkResult entry_vkGetSwapchainImagesKHR(
2197 VkDevice device,
2198 VkSwapchainKHR swapchain,
2199 uint32_t* pSwapchainImageCount,
2200 VkImage* pSwapchainImages)
2201{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002202 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002203 auto vkEnc = HostConnection::get()->vkEncoder();
2204 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2205 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2206 return vkGetSwapchainImagesKHR_VkResult_return;
2207}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002208static VkResult dynCheck_entry_vkGetSwapchainImagesKHR(
2209 VkDevice device,
2210 VkSwapchainKHR swapchain,
2211 uint32_t* pSwapchainImageCount,
2212 VkImage* pSwapchainImages)
2213{
2214 auto resources = ResourceTracker::get();
2215 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2216 {
2217 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain");
2218 }
2219 AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
2220 auto vkEnc = HostConnection::get()->vkEncoder();
2221 VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
2222 vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
2223 return vkGetSwapchainImagesKHR_VkResult_return;
2224}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002225static VkResult entry_vkAcquireNextImageKHR(
2226 VkDevice device,
2227 VkSwapchainKHR swapchain,
2228 uint64_t timeout,
2229 VkSemaphore semaphore,
2230 VkFence fence,
2231 uint32_t* pImageIndex)
2232{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002233 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002234 auto vkEnc = HostConnection::get()->vkEncoder();
2235 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2236 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2237 return vkAcquireNextImageKHR_VkResult_return;
2238}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002239static VkResult dynCheck_entry_vkAcquireNextImageKHR(
2240 VkDevice device,
2241 VkSwapchainKHR swapchain,
2242 uint64_t timeout,
2243 VkSemaphore semaphore,
2244 VkFence fence,
2245 uint32_t* pImageIndex)
2246{
2247 auto resources = ResourceTracker::get();
2248 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2249 {
2250 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain");
2251 }
2252 AEMU_SCOPED_TRACE("vkAcquireNextImageKHR");
2253 auto vkEnc = HostConnection::get()->vkEncoder();
2254 VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
2255 vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
2256 return vkAcquireNextImageKHR_VkResult_return;
2257}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002258static VkResult entry_vkQueuePresentKHR(
2259 VkQueue queue,
2260 const VkPresentInfoKHR* pPresentInfo)
2261{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002262 AEMU_SCOPED_TRACE("vkQueuePresentKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002263 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07002264 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002265 VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
2266 vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo);
2267 return vkQueuePresentKHR_VkResult_return;
2268}
2269static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2270 VkDevice device,
2271 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2272{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002273 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002274 auto vkEnc = HostConnection::get()->vkEncoder();
2275 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2276 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2277 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2278}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002279static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR(
2280 VkDevice device,
2281 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2282{
2283 auto resources = ResourceTracker::get();
2284 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2285 {
2286 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain");
2287 }
2288 AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
2289 auto vkEnc = HostConnection::get()->vkEncoder();
2290 VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
2291 vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
2292 return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
2293}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002294static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
2295 VkDevice device,
2296 VkSurfaceKHR surface,
2297 VkDeviceGroupPresentModeFlagsKHR* pModes)
2298{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002299 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002300 auto vkEnc = HostConnection::get()->vkEncoder();
2301 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2302 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2303 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2304}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002305static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR(
2306 VkDevice device,
2307 VkSurfaceKHR surface,
2308 VkDeviceGroupPresentModeFlagsKHR* pModes)
2309{
2310 auto resources = ResourceTracker::get();
2311 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2312 {
2313 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain");
2314 }
2315 AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
2316 auto vkEnc = HostConnection::get()->vkEncoder();
2317 VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
2318 vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
2319 return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
2320}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002321static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
2322 VkPhysicalDevice physicalDevice,
2323 VkSurfaceKHR surface,
2324 uint32_t* pRectCount,
2325 VkRect2D* pRects)
2326{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002327 AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002328 auto vkEnc = HostConnection::get()->vkEncoder();
2329 VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
2330 vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
2331 return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
2332}
2333static VkResult entry_vkAcquireNextImage2KHR(
2334 VkDevice device,
2335 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2336 uint32_t* pImageIndex)
2337{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002338 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002339 auto vkEnc = HostConnection::get()->vkEncoder();
2340 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2341 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2342 return vkAcquireNextImage2KHR_VkResult_return;
2343}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002344static VkResult dynCheck_entry_vkAcquireNextImage2KHR(
2345 VkDevice device,
2346 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2347 uint32_t* pImageIndex)
2348{
2349 auto resources = ResourceTracker::get();
2350 if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain"))
2351 {
2352 sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain");
2353 }
2354 AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
2355 auto vkEnc = HostConnection::get()->vkEncoder();
2356 VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
2357 vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
2358 return vkAcquireNextImage2KHR_VkResult_return;
2359}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002360#endif
2361#ifdef VK_KHR_display
2362static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR(
2363 VkPhysicalDevice physicalDevice,
2364 uint32_t* pPropertyCount,
2365 VkDisplayPropertiesKHR* pProperties)
2366{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002367 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002368 auto vkEnc = HostConnection::get()->vkEncoder();
2369 VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
2370 vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2371 return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
2372}
2373static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
2374 VkPhysicalDevice physicalDevice,
2375 uint32_t* pPropertyCount,
2376 VkDisplayPlanePropertiesKHR* pProperties)
2377{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002378 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002379 auto vkEnc = HostConnection::get()->vkEncoder();
2380 VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
2381 vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
2382 return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
2383}
2384static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
2385 VkPhysicalDevice physicalDevice,
2386 uint32_t planeIndex,
2387 uint32_t* pDisplayCount,
2388 VkDisplayKHR* pDisplays)
2389{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002390 AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002391 auto vkEnc = HostConnection::get()->vkEncoder();
2392 VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
2393 vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays);
2394 return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
2395}
2396static VkResult entry_vkGetDisplayModePropertiesKHR(
2397 VkPhysicalDevice physicalDevice,
2398 VkDisplayKHR display,
2399 uint32_t* pPropertyCount,
2400 VkDisplayModePropertiesKHR* pProperties)
2401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002402 AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002403 auto vkEnc = HostConnection::get()->vkEncoder();
2404 VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
2405 vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
2406 return vkGetDisplayModePropertiesKHR_VkResult_return;
2407}
2408static VkResult entry_vkCreateDisplayModeKHR(
2409 VkPhysicalDevice physicalDevice,
2410 VkDisplayKHR display,
2411 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2412 const VkAllocationCallbacks* pAllocator,
2413 VkDisplayModeKHR* pMode)
2414{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002415 AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002416 auto vkEnc = HostConnection::get()->vkEncoder();
2417 VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
2418 vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
2419 return vkCreateDisplayModeKHR_VkResult_return;
2420}
2421static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
2422 VkPhysicalDevice physicalDevice,
2423 VkDisplayModeKHR mode,
2424 uint32_t planeIndex,
2425 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2426{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002427 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002428 auto vkEnc = HostConnection::get()->vkEncoder();
2429 VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
2430 vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
2431 return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
2432}
2433static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
2434 VkInstance instance,
2435 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2436 const VkAllocationCallbacks* pAllocator,
2437 VkSurfaceKHR* pSurface)
2438{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002439 AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002440 auto vkEnc = HostConnection::get()->vkEncoder();
2441 VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
2442 vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2443 return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
2444}
2445#endif
2446#ifdef VK_KHR_display_swapchain
2447static VkResult entry_vkCreateSharedSwapchainsKHR(
2448 VkDevice device,
2449 uint32_t swapchainCount,
2450 const VkSwapchainCreateInfoKHR* pCreateInfos,
2451 const VkAllocationCallbacks* pAllocator,
2452 VkSwapchainKHR* pSwapchains)
2453{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002454 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002455 auto vkEnc = HostConnection::get()->vkEncoder();
2456 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2457 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2458 return vkCreateSharedSwapchainsKHR_VkResult_return;
2459}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002460static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR(
2461 VkDevice device,
2462 uint32_t swapchainCount,
2463 const VkSwapchainCreateInfoKHR* pCreateInfos,
2464 const VkAllocationCallbacks* pAllocator,
2465 VkSwapchainKHR* pSwapchains)
2466{
2467 auto resources = ResourceTracker::get();
2468 if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"))
2469 {
2470 sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain");
2471 }
2472 AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR");
2473 auto vkEnc = HostConnection::get()->vkEncoder();
2474 VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
2475 vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
2476 return vkCreateSharedSwapchainsKHR_VkResult_return;
2477}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002478#endif
2479#ifdef VK_KHR_xlib_surface
2480static VkResult entry_vkCreateXlibSurfaceKHR(
2481 VkInstance instance,
2482 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2483 const VkAllocationCallbacks* pAllocator,
2484 VkSurfaceKHR* pSurface)
2485{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002486 AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002487 auto vkEnc = HostConnection::get()->vkEncoder();
2488 VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
2489 vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2490 return vkCreateXlibSurfaceKHR_VkResult_return;
2491}
2492static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
2493 VkPhysicalDevice physicalDevice,
2494 uint32_t queueFamilyIndex,
2495 Display* dpy,
2496 VisualID visualID)
2497{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002498 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002499 auto vkEnc = HostConnection::get()->vkEncoder();
2500 VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2501 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
2502 return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
2503}
2504#endif
2505#ifdef VK_KHR_xcb_surface
2506static VkResult entry_vkCreateXcbSurfaceKHR(
2507 VkInstance instance,
2508 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2509 const VkAllocationCallbacks* pAllocator,
2510 VkSurfaceKHR* pSurface)
2511{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002512 AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002513 auto vkEnc = HostConnection::get()->vkEncoder();
2514 VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
2515 vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2516 return vkCreateXcbSurfaceKHR_VkResult_return;
2517}
2518static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR(
2519 VkPhysicalDevice physicalDevice,
2520 uint32_t queueFamilyIndex,
2521 xcb_connection_t* connection,
2522 xcb_visualid_t visual_id)
2523{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002524 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002525 auto vkEnc = HostConnection::get()->vkEncoder();
2526 VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2527 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
2528 return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
2529}
2530#endif
2531#ifdef VK_KHR_wayland_surface
2532static VkResult entry_vkCreateWaylandSurfaceKHR(
2533 VkInstance instance,
2534 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2535 const VkAllocationCallbacks* pAllocator,
2536 VkSurfaceKHR* pSurface)
2537{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002538 AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002539 auto vkEnc = HostConnection::get()->vkEncoder();
2540 VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
2541 vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2542 return vkCreateWaylandSurfaceKHR_VkResult_return;
2543}
2544static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
2545 VkPhysicalDevice physicalDevice,
2546 uint32_t queueFamilyIndex,
2547 wl_display* display)
2548{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002549 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002550 auto vkEnc = HostConnection::get()->vkEncoder();
2551 VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2552 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
2553 return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
2554}
2555#endif
2556#ifdef VK_KHR_mir_surface
2557static VkResult entry_vkCreateMirSurfaceKHR(
2558 VkInstance instance,
2559 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
2560 const VkAllocationCallbacks* pAllocator,
2561 VkSurfaceKHR* pSurface)
2562{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002563 AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002564 auto vkEnc = HostConnection::get()->vkEncoder();
2565 VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
2566 vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2567 return vkCreateMirSurfaceKHR_VkResult_return;
2568}
2569static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR(
2570 VkPhysicalDevice physicalDevice,
2571 uint32_t queueFamilyIndex,
2572 MirConnection* connection)
2573{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002574 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002575 auto vkEnc = HostConnection::get()->vkEncoder();
2576 VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
2577 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection);
2578 return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
2579}
2580#endif
2581#ifdef VK_KHR_android_surface
2582static VkResult entry_vkCreateAndroidSurfaceKHR(
2583 VkInstance instance,
2584 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2585 const VkAllocationCallbacks* pAllocator,
2586 VkSurfaceKHR* pSurface)
2587{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002588 AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002589 auto vkEnc = HostConnection::get()->vkEncoder();
2590 VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2591 vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2592 return vkCreateAndroidSurfaceKHR_VkResult_return;
2593}
2594#endif
2595#ifdef VK_KHR_win32_surface
2596static VkResult entry_vkCreateWin32SurfaceKHR(
2597 VkInstance instance,
2598 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2599 const VkAllocationCallbacks* pAllocator,
2600 VkSurfaceKHR* pSurface)
2601{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002602 AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002603 auto vkEnc = HostConnection::get()->vkEncoder();
2604 VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
2605 vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
2606 return vkCreateWin32SurfaceKHR_VkResult_return;
2607}
2608static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
2609 VkPhysicalDevice physicalDevice,
2610 uint32_t queueFamilyIndex)
2611{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002612 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002613 auto vkEnc = HostConnection::get()->vkEncoder();
2614 VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
2615 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
2616 return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
2617}
2618#endif
2619#ifdef VK_KHR_sampler_mirror_clamp_to_edge
2620#endif
2621#ifdef VK_KHR_multiview
2622#endif
2623#ifdef VK_KHR_get_physical_device_properties2
2624static void entry_vkGetPhysicalDeviceFeatures2KHR(
2625 VkPhysicalDevice physicalDevice,
2626 VkPhysicalDeviceFeatures2* pFeatures)
2627{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002628 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002629 auto vkEnc = HostConnection::get()->vkEncoder();
2630 vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
2631}
2632static void entry_vkGetPhysicalDeviceProperties2KHR(
2633 VkPhysicalDevice physicalDevice,
2634 VkPhysicalDeviceProperties2* pProperties)
2635{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002636 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002637 auto vkEnc = HostConnection::get()->vkEncoder();
2638 vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
2639}
2640static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
2641 VkPhysicalDevice physicalDevice,
2642 VkFormat format,
2643 VkFormatProperties2* pFormatProperties)
2644{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002645 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002646 auto vkEnc = HostConnection::get()->vkEncoder();
2647 vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
2648}
2649static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
2650 VkPhysicalDevice physicalDevice,
2651 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2652 VkImageFormatProperties2* pImageFormatProperties)
2653{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002654 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002655 auto vkEnc = HostConnection::get()->vkEncoder();
2656 VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
Lingfeng Yange517d1e2019-03-25 18:02:49 -07002657 auto resources = ResourceTracker::get();
2658 vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002659 return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2660}
2661static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2662 VkPhysicalDevice physicalDevice,
2663 uint32_t* pQueueFamilyPropertyCount,
2664 VkQueueFamilyProperties2* pQueueFamilyProperties)
2665{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002666 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002667 auto vkEnc = HostConnection::get()->vkEncoder();
2668 vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
2669}
2670static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
2671 VkPhysicalDevice physicalDevice,
2672 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
2673{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002674 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002675 auto vkEnc = HostConnection::get()->vkEncoder();
2676 vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
2677}
2678static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2679 VkPhysicalDevice physicalDevice,
2680 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2681 uint32_t* pPropertyCount,
2682 VkSparseImageFormatProperties2* pProperties)
2683{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002684 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002685 auto vkEnc = HostConnection::get()->vkEncoder();
2686 vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
2687}
2688#endif
2689#ifdef VK_KHR_device_group
2690static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2691 VkDevice device,
2692 uint32_t heapIndex,
2693 uint32_t localDeviceIndex,
2694 uint32_t remoteDeviceIndex,
2695 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2696{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002697 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002698 auto vkEnc = HostConnection::get()->vkEncoder();
2699 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2700}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002701static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR(
2702 VkDevice device,
2703 uint32_t heapIndex,
2704 uint32_t localDeviceIndex,
2705 uint32_t remoteDeviceIndex,
2706 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
2707{
2708 auto resources = ResourceTracker::get();
2709 if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
2710 {
2711 sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group");
2712 }
2713 AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR");
2714 auto vkEnc = HostConnection::get()->vkEncoder();
2715 vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2716}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002717static void entry_vkCmdSetDeviceMaskKHR(
2718 VkCommandBuffer commandBuffer,
2719 uint32_t deviceMask)
2720{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002721 AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002722 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002723 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002724 vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2725}
2726static void entry_vkCmdDispatchBaseKHR(
2727 VkCommandBuffer commandBuffer,
2728 uint32_t baseGroupX,
2729 uint32_t baseGroupY,
2730 uint32_t baseGroupZ,
2731 uint32_t groupCountX,
2732 uint32_t groupCountY,
2733 uint32_t groupCountZ)
2734{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002735 AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002736 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07002737 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002738 vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2739}
2740#endif
2741#ifdef VK_KHR_shader_draw_parameters
2742#endif
2743#ifdef VK_KHR_maintenance1
2744static void entry_vkTrimCommandPoolKHR(
2745 VkDevice device,
2746 VkCommandPool commandPool,
2747 VkCommandPoolTrimFlags flags)
2748{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002749 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002750 auto vkEnc = HostConnection::get()->vkEncoder();
2751 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2752}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002753static void dynCheck_entry_vkTrimCommandPoolKHR(
2754 VkDevice device,
2755 VkCommandPool commandPool,
2756 VkCommandPoolTrimFlags flags)
2757{
2758 auto resources = ResourceTracker::get();
2759 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1"))
2760 {
2761 sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1");
2762 }
2763 AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR");
2764 auto vkEnc = HostConnection::get()->vkEncoder();
2765 vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags);
2766}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002767#endif
2768#ifdef VK_KHR_device_group_creation
2769static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
2770 VkInstance instance,
2771 uint32_t* pPhysicalDeviceGroupCount,
2772 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
2773{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002774 AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002775 auto vkEnc = HostConnection::get()->vkEncoder();
2776 VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
2777 vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
2778 return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
2779}
2780#endif
2781#ifdef VK_KHR_external_memory_capabilities
2782static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2783 VkPhysicalDevice physicalDevice,
2784 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2785 VkExternalBufferProperties* pExternalBufferProperties)
2786{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002787 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002788 auto vkEnc = HostConnection::get()->vkEncoder();
2789 vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
2790}
2791#endif
2792#ifdef VK_KHR_external_memory
2793#endif
2794#ifdef VK_KHR_external_memory_win32
2795static VkResult entry_vkGetMemoryWin32HandleKHR(
2796 VkDevice device,
2797 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2798 HANDLE* pHandle)
2799{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002800 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002801 auto vkEnc = HostConnection::get()->vkEncoder();
2802 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2803 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2804 return vkGetMemoryWin32HandleKHR_VkResult_return;
2805}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002806static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR(
2807 VkDevice device,
2808 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2809 HANDLE* pHandle)
2810{
2811 auto resources = ResourceTracker::get();
2812 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2813 {
2814 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32");
2815 }
2816 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR");
2817 auto vkEnc = HostConnection::get()->vkEncoder();
2818 VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
2819 vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2820 return vkGetMemoryWin32HandleKHR_VkResult_return;
2821}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002822static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
2823 VkDevice device,
2824 VkExternalMemoryHandleTypeFlagBits handleType,
2825 HANDLE handle,
2826 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2827{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002828 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002829 auto vkEnc = HostConnection::get()->vkEncoder();
2830 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2831 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2832 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2833}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002834static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR(
2835 VkDevice device,
2836 VkExternalMemoryHandleTypeFlagBits handleType,
2837 HANDLE handle,
2838 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
2839{
2840 auto resources = ResourceTracker::get();
2841 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"))
2842 {
2843 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32");
2844 }
2845 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
2846 auto vkEnc = HostConnection::get()->vkEncoder();
2847 VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
2848 vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2849 return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
2850}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002851#endif
2852#ifdef VK_KHR_external_memory_fd
2853static VkResult entry_vkGetMemoryFdKHR(
2854 VkDevice device,
2855 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2856 int* pFd)
2857{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002858 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002859 auto vkEnc = HostConnection::get()->vkEncoder();
2860 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2861 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2862 return vkGetMemoryFdKHR_VkResult_return;
2863}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002864static VkResult dynCheck_entry_vkGetMemoryFdKHR(
2865 VkDevice device,
2866 const VkMemoryGetFdInfoKHR* pGetFdInfo,
2867 int* pFd)
2868{
2869 auto resources = ResourceTracker::get();
2870 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2871 {
2872 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd");
2873 }
2874 AEMU_SCOPED_TRACE("vkGetMemoryFdKHR");
2875 auto vkEnc = HostConnection::get()->vkEncoder();
2876 VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2877 vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd);
2878 return vkGetMemoryFdKHR_VkResult_return;
2879}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002880static VkResult entry_vkGetMemoryFdPropertiesKHR(
2881 VkDevice device,
2882 VkExternalMemoryHandleTypeFlagBits handleType,
2883 int fd,
2884 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2885{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002886 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002887 auto vkEnc = HostConnection::get()->vkEncoder();
2888 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2889 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2890 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2891}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002892static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR(
2893 VkDevice device,
2894 VkExternalMemoryHandleTypeFlagBits handleType,
2895 int fd,
2896 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
2897{
2898 auto resources = ResourceTracker::get();
2899 if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"))
2900 {
2901 sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd");
2902 }
2903 AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
2904 auto vkEnc = HostConnection::get()->vkEncoder();
2905 VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
2906 vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2907 return vkGetMemoryFdPropertiesKHR_VkResult_return;
2908}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002909#endif
2910#ifdef VK_KHR_win32_keyed_mutex
2911#endif
2912#ifdef VK_KHR_external_semaphore_capabilities
2913static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
2914 VkPhysicalDevice physicalDevice,
2915 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2916 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
2917{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002918 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002919 auto vkEnc = HostConnection::get()->vkEncoder();
2920 vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
2921}
2922#endif
2923#ifdef VK_KHR_external_semaphore
2924#endif
2925#ifdef VK_KHR_external_semaphore_win32
2926static VkResult entry_vkImportSemaphoreWin32HandleKHR(
2927 VkDevice device,
2928 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2929{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002930 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002931 auto vkEnc = HostConnection::get()->vkEncoder();
2932 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2933 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2934 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2935}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002936static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR(
2937 VkDevice device,
2938 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
2939{
2940 auto resources = ResourceTracker::get();
2941 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2942 {
2943 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2944 }
2945 AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR");
2946 auto vkEnc = HostConnection::get()->vkEncoder();
2947 VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2948 vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2949 return vkImportSemaphoreWin32HandleKHR_VkResult_return;
2950}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002951static VkResult entry_vkGetSemaphoreWin32HandleKHR(
2952 VkDevice device,
2953 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2954 HANDLE* pHandle)
2955{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002956 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002957 auto vkEnc = HostConnection::get()->vkEncoder();
2958 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2959 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2960 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2961}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002962static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR(
2963 VkDevice device,
2964 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
2965 HANDLE* pHandle)
2966{
2967 auto resources = ResourceTracker::get();
2968 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"))
2969 {
2970 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32");
2971 }
2972 AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
2973 auto vkEnc = HostConnection::get()->vkEncoder();
2974 VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
2975 vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2976 return vkGetSemaphoreWin32HandleKHR_VkResult_return;
2977}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002978#endif
2979#ifdef VK_KHR_external_semaphore_fd
2980static VkResult entry_vkImportSemaphoreFdKHR(
2981 VkDevice device,
2982 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2983{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08002984 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002985 auto vkEnc = HostConnection::get()->vkEncoder();
2986 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08002987 auto resources = ResourceTracker::get();
2988 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08002989 return vkImportSemaphoreFdKHR_VkResult_return;
2990}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07002991static VkResult dynCheck_entry_vkImportSemaphoreFdKHR(
2992 VkDevice device,
2993 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
2994{
2995 auto resources = ResourceTracker::get();
2996 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
2997 {
2998 sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
2999 }
3000 AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR");
3001 auto vkEnc = HostConnection::get()->vkEncoder();
3002 VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3003 vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo);
3004 return vkImportSemaphoreFdKHR_VkResult_return;
3005}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003006static VkResult entry_vkGetSemaphoreFdKHR(
3007 VkDevice device,
3008 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3009 int* pFd)
3010{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003011 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003012 auto vkEnc = HostConnection::get()->vkEncoder();
3013 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
Yahan Zhoua499e442019-02-26 16:35:01 -08003014 auto resources = ResourceTracker::get();
3015 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003016 return vkGetSemaphoreFdKHR_VkResult_return;
3017}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003018static VkResult dynCheck_entry_vkGetSemaphoreFdKHR(
3019 VkDevice device,
3020 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3021 int* pFd)
3022{
3023 auto resources = ResourceTracker::get();
3024 if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"))
3025 {
3026 sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd");
3027 }
3028 AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR");
3029 auto vkEnc = HostConnection::get()->vkEncoder();
3030 VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3031 vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3032 return vkGetSemaphoreFdKHR_VkResult_return;
3033}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003034#endif
3035#ifdef VK_KHR_push_descriptor
3036static void entry_vkCmdPushDescriptorSetKHR(
3037 VkCommandBuffer commandBuffer,
3038 VkPipelineBindPoint pipelineBindPoint,
3039 VkPipelineLayout layout,
3040 uint32_t set,
3041 uint32_t descriptorWriteCount,
3042 const VkWriteDescriptorSet* pDescriptorWrites)
3043{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003044 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003045 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003046 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003047 vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3048}
3049static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
3050 VkCommandBuffer commandBuffer,
3051 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3052 VkPipelineLayout layout,
3053 uint32_t set,
3054 const void* pData)
3055{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003056 AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003057 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003058 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003059 vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3060}
3061#endif
3062#ifdef VK_KHR_16bit_storage
3063#endif
3064#ifdef VK_KHR_incremental_present
3065#endif
3066#ifdef VK_KHR_descriptor_update_template
3067static VkResult entry_vkCreateDescriptorUpdateTemplateKHR(
3068 VkDevice device,
3069 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3070 const VkAllocationCallbacks* pAllocator,
3071 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3072{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003073 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003074 auto vkEnc = HostConnection::get()->vkEncoder();
3075 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3076 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3077 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3078}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003079static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR(
3080 VkDevice device,
3081 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3082 const VkAllocationCallbacks* pAllocator,
3083 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3084{
3085 auto resources = ResourceTracker::get();
3086 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3087 {
3088 sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3089 }
3090 AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR");
3091 auto vkEnc = HostConnection::get()->vkEncoder();
3092 VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3093 vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3094 return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3095}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003096static void entry_vkDestroyDescriptorUpdateTemplateKHR(
3097 VkDevice device,
3098 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3099 const VkAllocationCallbacks* pAllocator)
3100{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003101 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003102 auto vkEnc = HostConnection::get()->vkEncoder();
3103 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3104}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003105static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR(
3106 VkDevice device,
3107 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3108 const VkAllocationCallbacks* pAllocator)
3109{
3110 auto resources = ResourceTracker::get();
3111 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3112 {
3113 sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template");
3114 }
3115 AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
3116 auto vkEnc = HostConnection::get()->vkEncoder();
3117 vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3118}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003119static void entry_vkUpdateDescriptorSetWithTemplateKHR(
3120 VkDevice device,
3121 VkDescriptorSet descriptorSet,
3122 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3123 const void* pData)
3124{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003125 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003126 auto vkEnc = HostConnection::get()->vkEncoder();
3127 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3128}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003129static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR(
3130 VkDevice device,
3131 VkDescriptorSet descriptorSet,
3132 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3133 const void* pData)
3134{
3135 auto resources = ResourceTracker::get();
3136 if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"))
3137 {
3138 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template");
3139 }
3140 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
3141 auto vkEnc = HostConnection::get()->vkEncoder();
3142 vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3143}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003144#endif
3145#ifdef VK_KHR_create_renderpass2
3146static VkResult entry_vkCreateRenderPass2KHR(
3147 VkDevice device,
3148 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3149 const VkAllocationCallbacks* pAllocator,
3150 VkRenderPass* pRenderPass)
3151{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003152 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003153 auto vkEnc = HostConnection::get()->vkEncoder();
3154 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3155 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3156 return vkCreateRenderPass2KHR_VkResult_return;
3157}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003158static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
3159 VkDevice device,
3160 const VkRenderPassCreateInfo2KHR* pCreateInfo,
3161 const VkAllocationCallbacks* pAllocator,
3162 VkRenderPass* pRenderPass)
3163{
3164 auto resources = ResourceTracker::get();
3165 if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
3166 {
3167 sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2");
3168 }
3169 AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
3170 auto vkEnc = HostConnection::get()->vkEncoder();
3171 VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3172 vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3173 return vkCreateRenderPass2KHR_VkResult_return;
3174}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003175static void entry_vkCmdBeginRenderPass2KHR(
3176 VkCommandBuffer commandBuffer,
3177 const VkRenderPassBeginInfo* pRenderPassBegin,
3178 const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
3179{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003180 AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003181 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003182 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003183 vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3184}
3185static void entry_vkCmdNextSubpass2KHR(
3186 VkCommandBuffer commandBuffer,
3187 const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
3188 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3189{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003190 AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003191 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003192 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003193 vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3194}
3195static void entry_vkCmdEndRenderPass2KHR(
3196 VkCommandBuffer commandBuffer,
3197 const VkSubpassEndInfoKHR* pSubpassEndInfo)
3198{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003199 AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003200 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003201 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003202 vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3203}
3204#endif
3205#ifdef VK_KHR_shared_presentable_image
3206static VkResult entry_vkGetSwapchainStatusKHR(
3207 VkDevice device,
3208 VkSwapchainKHR swapchain)
3209{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003210 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003211 auto vkEnc = HostConnection::get()->vkEncoder();
3212 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3213 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3214 return vkGetSwapchainStatusKHR_VkResult_return;
3215}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003216static VkResult dynCheck_entry_vkGetSwapchainStatusKHR(
3217 VkDevice device,
3218 VkSwapchainKHR swapchain)
3219{
3220 auto resources = ResourceTracker::get();
3221 if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"))
3222 {
3223 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image");
3224 }
3225 AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
3226 auto vkEnc = HostConnection::get()->vkEncoder();
3227 VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
3228 vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain);
3229 return vkGetSwapchainStatusKHR_VkResult_return;
3230}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003231#endif
3232#ifdef VK_KHR_external_fence_capabilities
3233static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3234 VkPhysicalDevice physicalDevice,
3235 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3236 VkExternalFenceProperties* pExternalFenceProperties)
3237{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003238 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003239 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003240 auto resources = ResourceTracker::get();
3241 resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003242}
3243#endif
3244#ifdef VK_KHR_external_fence
3245#endif
3246#ifdef VK_KHR_external_fence_win32
3247static VkResult entry_vkImportFenceWin32HandleKHR(
3248 VkDevice device,
3249 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3250{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003251 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003252 auto vkEnc = HostConnection::get()->vkEncoder();
3253 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3254 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3255 return vkImportFenceWin32HandleKHR_VkResult_return;
3256}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003257static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR(
3258 VkDevice device,
3259 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3260{
3261 auto resources = ResourceTracker::get();
3262 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3263 {
3264 sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3265 }
3266 AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR");
3267 auto vkEnc = HostConnection::get()->vkEncoder();
3268 VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3269 vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3270 return vkImportFenceWin32HandleKHR_VkResult_return;
3271}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003272static VkResult entry_vkGetFenceWin32HandleKHR(
3273 VkDevice device,
3274 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3275 HANDLE* pHandle)
3276{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003277 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003278 auto vkEnc = HostConnection::get()->vkEncoder();
3279 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3280 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3281 return vkGetFenceWin32HandleKHR_VkResult_return;
3282}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003283static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR(
3284 VkDevice device,
3285 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3286 HANDLE* pHandle)
3287{
3288 auto resources = ResourceTracker::get();
3289 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"))
3290 {
3291 sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32");
3292 }
3293 AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
3294 auto vkEnc = HostConnection::get()->vkEncoder();
3295 VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
3296 vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3297 return vkGetFenceWin32HandleKHR_VkResult_return;
3298}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003299#endif
3300#ifdef VK_KHR_external_fence_fd
3301static VkResult entry_vkImportFenceFdKHR(
3302 VkDevice device,
3303 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3304{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003305 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003306 auto vkEnc = HostConnection::get()->vkEncoder();
3307 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003308 auto resources = ResourceTracker::get();
3309 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003310 return vkImportFenceFdKHR_VkResult_return;
3311}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003312static VkResult dynCheck_entry_vkImportFenceFdKHR(
3313 VkDevice device,
3314 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3315{
3316 auto resources = ResourceTracker::get();
3317 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3318 {
3319 sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd");
3320 }
3321 AEMU_SCOPED_TRACE("vkImportFenceFdKHR");
3322 auto vkEnc = HostConnection::get()->vkEncoder();
3323 VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3324 vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo);
3325 return vkImportFenceFdKHR_VkResult_return;
3326}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003327static VkResult entry_vkGetFenceFdKHR(
3328 VkDevice device,
3329 const VkFenceGetFdInfoKHR* pGetFdInfo,
3330 int* pFd)
3331{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003332 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003333 auto vkEnc = HostConnection::get()->vkEncoder();
3334 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
Lingfeng Yangcd2d8fe2019-08-16 12:21:50 -07003335 auto resources = ResourceTracker::get();
3336 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003337 return vkGetFenceFdKHR_VkResult_return;
3338}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003339static VkResult dynCheck_entry_vkGetFenceFdKHR(
3340 VkDevice device,
3341 const VkFenceGetFdInfoKHR* pGetFdInfo,
3342 int* pFd)
3343{
3344 auto resources = ResourceTracker::get();
3345 if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"))
3346 {
3347 sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd");
3348 }
3349 AEMU_SCOPED_TRACE("vkGetFenceFdKHR");
3350 auto vkEnc = HostConnection::get()->vkEncoder();
3351 VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3352 vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd);
3353 return vkGetFenceFdKHR_VkResult_return;
3354}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003355#endif
3356#ifdef VK_KHR_maintenance2
3357#endif
3358#ifdef VK_KHR_get_surface_capabilities2
3359static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
3360 VkPhysicalDevice physicalDevice,
3361 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3362 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3363{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003364 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003365 auto vkEnc = HostConnection::get()->vkEncoder();
3366 VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
3367 vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
3368 return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
3369}
3370static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
3371 VkPhysicalDevice physicalDevice,
3372 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3373 uint32_t* pSurfaceFormatCount,
3374 VkSurfaceFormat2KHR* pSurfaceFormats)
3375{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003376 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003377 auto vkEnc = HostConnection::get()->vkEncoder();
3378 VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
3379 vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
3380 return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
3381}
3382#endif
3383#ifdef VK_KHR_variable_pointers
3384#endif
3385#ifdef VK_KHR_get_display_properties2
3386static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR(
3387 VkPhysicalDevice physicalDevice,
3388 uint32_t* pPropertyCount,
3389 VkDisplayProperties2KHR* pProperties)
3390{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003391 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003392 auto vkEnc = HostConnection::get()->vkEncoder();
3393 VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
3394 vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3395 return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
3396}
3397static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
3398 VkPhysicalDevice physicalDevice,
3399 uint32_t* pPropertyCount,
3400 VkDisplayPlaneProperties2KHR* pProperties)
3401{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003402 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003403 auto vkEnc = HostConnection::get()->vkEncoder();
3404 VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
3405 vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties);
3406 return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
3407}
3408static VkResult entry_vkGetDisplayModeProperties2KHR(
3409 VkPhysicalDevice physicalDevice,
3410 VkDisplayKHR display,
3411 uint32_t* pPropertyCount,
3412 VkDisplayModeProperties2KHR* pProperties)
3413{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003414 AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003415 auto vkEnc = HostConnection::get()->vkEncoder();
3416 VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
3417 vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
3418 return vkGetDisplayModeProperties2KHR_VkResult_return;
3419}
3420static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
3421 VkPhysicalDevice physicalDevice,
3422 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3423 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3424{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003425 AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003426 auto vkEnc = HostConnection::get()->vkEncoder();
3427 VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
3428 vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
3429 return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
3430}
3431#endif
3432#ifdef VK_KHR_dedicated_allocation
3433#endif
3434#ifdef VK_KHR_storage_buffer_storage_class
3435#endif
3436#ifdef VK_KHR_relaxed_block_layout
3437#endif
3438#ifdef VK_KHR_get_memory_requirements2
3439static void entry_vkGetImageMemoryRequirements2KHR(
3440 VkDevice device,
3441 const VkImageMemoryRequirementsInfo2* pInfo,
3442 VkMemoryRequirements2* pMemoryRequirements)
3443{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003444 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003445 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003446 auto resources = ResourceTracker::get();
3447 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003448}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003449static void dynCheck_entry_vkGetImageMemoryRequirements2KHR(
3450 VkDevice device,
3451 const VkImageMemoryRequirementsInfo2* pInfo,
3452 VkMemoryRequirements2* pMemoryRequirements)
3453{
3454 auto resources = ResourceTracker::get();
3455 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3456 {
3457 sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3458 }
3459 AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR");
3460 auto vkEnc = HostConnection::get()->vkEncoder();
3461 resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3462}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003463static void entry_vkGetBufferMemoryRequirements2KHR(
3464 VkDevice device,
3465 const VkBufferMemoryRequirementsInfo2* pInfo,
3466 VkMemoryRequirements2* pMemoryRequirements)
3467{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003468 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003469 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003470 auto resources = ResourceTracker::get();
3471 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003472}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003473static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR(
3474 VkDevice device,
3475 const VkBufferMemoryRequirementsInfo2* pInfo,
3476 VkMemoryRequirements2* pMemoryRequirements)
3477{
3478 auto resources = ResourceTracker::get();
3479 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3480 {
3481 sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3482 }
3483 AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
3484 auto vkEnc = HostConnection::get()->vkEncoder();
3485 resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
3486}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003487static void entry_vkGetImageSparseMemoryRequirements2KHR(
3488 VkDevice device,
3489 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3490 uint32_t* pSparseMemoryRequirementCount,
3491 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3492{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003493 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003494 auto vkEnc = HostConnection::get()->vkEncoder();
3495 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3496}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003497static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR(
3498 VkDevice device,
3499 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3500 uint32_t* pSparseMemoryRequirementCount,
3501 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3502{
3503 auto resources = ResourceTracker::get();
3504 if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"))
3505 {
3506 sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2");
3507 }
3508 AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR");
3509 auto vkEnc = HostConnection::get()->vkEncoder();
3510 vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3511}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003512#endif
3513#ifdef VK_KHR_image_format_list
3514#endif
3515#ifdef VK_KHR_sampler_ycbcr_conversion
3516static VkResult entry_vkCreateSamplerYcbcrConversionKHR(
3517 VkDevice device,
3518 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3519 const VkAllocationCallbacks* pAllocator,
3520 VkSamplerYcbcrConversion* pYcbcrConversion)
3521{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003522 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003523 auto vkEnc = HostConnection::get()->vkEncoder();
3524 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
Lingfeng Yang5c701122019-03-05 08:34:46 -08003525 auto resources = ResourceTracker::get();
3526 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003527 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3528}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003529static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR(
3530 VkDevice device,
3531 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3532 const VkAllocationCallbacks* pAllocator,
3533 VkSamplerYcbcrConversion* pYcbcrConversion)
3534{
3535 auto resources = ResourceTracker::get();
3536 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3537 {
3538 sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3539 }
3540 AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR");
3541 auto vkEnc = HostConnection::get()->vkEncoder();
3542 VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3543 vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion);
3544 return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3545}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003546static void entry_vkDestroySamplerYcbcrConversionKHR(
3547 VkDevice device,
3548 VkSamplerYcbcrConversion ycbcrConversion,
3549 const VkAllocationCallbacks* pAllocator)
3550{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003551 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003552 auto vkEnc = HostConnection::get()->vkEncoder();
Roman Kiryanov004f48c2019-06-28 14:59:32 -07003553 auto resources = ResourceTracker::get();
3554 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003555}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003556static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR(
3557 VkDevice device,
3558 VkSamplerYcbcrConversion ycbcrConversion,
3559 const VkAllocationCallbacks* pAllocator)
3560{
3561 auto resources = ResourceTracker::get();
3562 if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"))
3563 {
3564 sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion");
3565 }
3566 AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR");
3567 auto vkEnc = HostConnection::get()->vkEncoder();
3568 resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator);
3569}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003570#endif
3571#ifdef VK_KHR_bind_memory2
3572static VkResult entry_vkBindBufferMemory2KHR(
3573 VkDevice device,
3574 uint32_t bindInfoCount,
3575 const VkBindBufferMemoryInfo* pBindInfos)
3576{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003577 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003578 auto vkEnc = HostConnection::get()->vkEncoder();
3579 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003580 auto resources = ResourceTracker::get();
3581 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003582 return vkBindBufferMemory2KHR_VkResult_return;
3583}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003584static VkResult dynCheck_entry_vkBindBufferMemory2KHR(
3585 VkDevice device,
3586 uint32_t bindInfoCount,
3587 const VkBindBufferMemoryInfo* pBindInfos)
3588{
3589 auto resources = ResourceTracker::get();
3590 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3591 {
3592 sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2");
3593 }
3594 AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR");
3595 auto vkEnc = HostConnection::get()->vkEncoder();
3596 VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3597 vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3598 return vkBindBufferMemory2KHR_VkResult_return;
3599}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003600static VkResult entry_vkBindImageMemory2KHR(
3601 VkDevice device,
3602 uint32_t bindInfoCount,
3603 const VkBindImageMemoryInfo* pBindInfos)
3604{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003605 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003606 auto vkEnc = HostConnection::get()->vkEncoder();
3607 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
Lingfeng Yang4af5f322019-02-14 08:10:28 -08003608 auto resources = ResourceTracker::get();
3609 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003610 return vkBindImageMemory2KHR_VkResult_return;
3611}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003612static VkResult dynCheck_entry_vkBindImageMemory2KHR(
3613 VkDevice device,
3614 uint32_t bindInfoCount,
3615 const VkBindImageMemoryInfo* pBindInfos)
3616{
3617 auto resources = ResourceTracker::get();
3618 if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"))
3619 {
3620 sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2");
3621 }
3622 AEMU_SCOPED_TRACE("vkBindImageMemory2KHR");
3623 auto vkEnc = HostConnection::get()->vkEncoder();
3624 VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3625 vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos);
3626 return vkBindImageMemory2KHR_VkResult_return;
3627}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003628#endif
3629#ifdef VK_KHR_maintenance3
3630static void entry_vkGetDescriptorSetLayoutSupportKHR(
3631 VkDevice device,
3632 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3633 VkDescriptorSetLayoutSupport* pSupport)
3634{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003635 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003636 auto vkEnc = HostConnection::get()->vkEncoder();
3637 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3638}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003639static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR(
3640 VkDevice device,
3641 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3642 VkDescriptorSetLayoutSupport* pSupport)
3643{
3644 auto resources = ResourceTracker::get();
3645 if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3"))
3646 {
3647 sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3");
3648 }
3649 AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
3650 auto vkEnc = HostConnection::get()->vkEncoder();
3651 vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3652}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003653#endif
3654#ifdef VK_KHR_draw_indirect_count
3655static void entry_vkCmdDrawIndirectCountKHR(
3656 VkCommandBuffer commandBuffer,
3657 VkBuffer buffer,
3658 VkDeviceSize offset,
3659 VkBuffer countBuffer,
3660 VkDeviceSize countBufferOffset,
3661 uint32_t maxDrawCount,
3662 uint32_t stride)
3663{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003664 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003665 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003666 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003667 vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3668}
3669static void entry_vkCmdDrawIndexedIndirectCountKHR(
3670 VkCommandBuffer commandBuffer,
3671 VkBuffer buffer,
3672 VkDeviceSize offset,
3673 VkBuffer countBuffer,
3674 VkDeviceSize countBufferOffset,
3675 uint32_t maxDrawCount,
3676 uint32_t stride)
3677{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003678 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003679 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003680 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003681 vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3682}
3683#endif
3684#ifdef VK_KHR_8bit_storage
3685#endif
Lingfeng Yang4c056b22020-07-02 11:43:57 -07003686#ifdef VK_KHR_shader_float16_int8
3687#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08003688#ifdef VK_ANDROID_native_buffer
3689static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
3690 VkDevice device,
3691 VkFormat format,
3692 VkImageUsageFlags imageUsage,
3693 int* grallocUsage)
3694{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003695 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003696 auto vkEnc = HostConnection::get()->vkEncoder();
3697 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3698 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3699 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3700}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003701static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID(
3702 VkDevice device,
3703 VkFormat format,
3704 VkImageUsageFlags imageUsage,
3705 int* grallocUsage)
3706{
3707 auto resources = ResourceTracker::get();
3708 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3709 {
3710 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer");
3711 }
3712 AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
3713 auto vkEnc = HostConnection::get()->vkEncoder();
3714 VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3715 vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage);
3716 return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3717}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003718static VkResult entry_vkAcquireImageANDROID(
3719 VkDevice device,
3720 VkImage image,
3721 int nativeFenceFd,
3722 VkSemaphore semaphore,
3723 VkFence fence)
3724{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003725 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003726 auto vkEnc = HostConnection::get()->vkEncoder();
3727 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3728 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3729 return vkAcquireImageANDROID_VkResult_return;
3730}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003731static VkResult dynCheck_entry_vkAcquireImageANDROID(
3732 VkDevice device,
3733 VkImage image,
3734 int nativeFenceFd,
3735 VkSemaphore semaphore,
3736 VkFence fence)
3737{
3738 auto resources = ResourceTracker::get();
3739 if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"))
3740 {
3741 sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer");
3742 }
3743 AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
3744 auto vkEnc = HostConnection::get()->vkEncoder();
3745 VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3746 vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence);
3747 return vkAcquireImageANDROID_VkResult_return;
3748}
Lingfeng Yang808a6312018-11-13 21:06:15 -08003749static VkResult entry_vkQueueSignalReleaseImageANDROID(
3750 VkQueue queue,
3751 uint32_t waitSemaphoreCount,
3752 const VkSemaphore* pWaitSemaphores,
3753 VkImage image,
3754 int* pNativeFenceFd)
3755{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003756 AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID");
Lingfeng Yang808a6312018-11-13 21:06:15 -08003757 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07003758 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang808a6312018-11-13 21:06:15 -08003759 VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3760 vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
3761 return vkQueueSignalReleaseImageANDROID_VkResult_return;
3762}
3763#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003764#ifdef VK_EXT_debug_report
3765static VkResult entry_vkCreateDebugReportCallbackEXT(
3766 VkInstance instance,
3767 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3768 const VkAllocationCallbacks* pAllocator,
3769 VkDebugReportCallbackEXT* pCallback)
3770{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003771 AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003772 auto vkEnc = HostConnection::get()->vkEncoder();
3773 VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
3774 vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
3775 return vkCreateDebugReportCallbackEXT_VkResult_return;
3776}
3777static void entry_vkDestroyDebugReportCallbackEXT(
3778 VkInstance instance,
3779 VkDebugReportCallbackEXT callback,
3780 const VkAllocationCallbacks* pAllocator)
3781{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003782 AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003783 auto vkEnc = HostConnection::get()->vkEncoder();
3784 vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator);
3785}
3786static void entry_vkDebugReportMessageEXT(
3787 VkInstance instance,
3788 VkDebugReportFlagsEXT flags,
3789 VkDebugReportObjectTypeEXT objectType,
3790 uint64_t object,
3791 size_t location,
3792 int32_t messageCode,
3793 const char* pLayerPrefix,
3794 const char* pMessage)
3795{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003796 AEMU_SCOPED_TRACE("vkDebugReportMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003797 auto vkEnc = HostConnection::get()->vkEncoder();
3798 vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
3799}
3800#endif
3801#ifdef VK_NV_glsl_shader
3802#endif
3803#ifdef VK_EXT_depth_range_unrestricted
3804#endif
3805#ifdef VK_IMG_filter_cubic
3806#endif
3807#ifdef VK_AMD_rasterization_order
3808#endif
3809#ifdef VK_AMD_shader_trinary_minmax
3810#endif
3811#ifdef VK_AMD_shader_explicit_vertex_parameter
3812#endif
3813#ifdef VK_EXT_debug_marker
3814static VkResult entry_vkDebugMarkerSetObjectTagEXT(
3815 VkDevice device,
3816 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3817{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003818 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003819 auto vkEnc = HostConnection::get()->vkEncoder();
3820 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3821 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3822 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3823}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003824static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT(
3825 VkDevice device,
3826 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3827{
3828 auto resources = ResourceTracker::get();
3829 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3830 {
3831 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker");
3832 }
3833 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT");
3834 auto vkEnc = HostConnection::get()->vkEncoder();
3835 VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
3836 vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo);
3837 return vkDebugMarkerSetObjectTagEXT_VkResult_return;
3838}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003839static VkResult entry_vkDebugMarkerSetObjectNameEXT(
3840 VkDevice device,
3841 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3842{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003843 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003844 auto vkEnc = HostConnection::get()->vkEncoder();
3845 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3846 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3847 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3848}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003849static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT(
3850 VkDevice device,
3851 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3852{
3853 auto resources = ResourceTracker::get();
3854 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
3855 {
3856 sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker");
3857 }
3858 AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
3859 auto vkEnc = HostConnection::get()->vkEncoder();
3860 VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
3861 vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo);
3862 return vkDebugMarkerSetObjectNameEXT_VkResult_return;
3863}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003864static void entry_vkCmdDebugMarkerBeginEXT(
3865 VkCommandBuffer commandBuffer,
3866 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3867{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003868 AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003869 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003870 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003871 vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
3872}
3873static void entry_vkCmdDebugMarkerEndEXT(
3874 VkCommandBuffer commandBuffer)
3875{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003876 AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
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->vkCmdDebugMarkerEndEXT(commandBuffer);
3880}
3881static void entry_vkCmdDebugMarkerInsertEXT(
3882 VkCommandBuffer commandBuffer,
3883 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3884{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003885 AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003886 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003887 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003888 vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
3889}
3890#endif
3891#ifdef VK_AMD_gcn_shader
3892#endif
3893#ifdef VK_NV_dedicated_allocation
3894#endif
3895#ifdef VK_AMD_draw_indirect_count
3896static void entry_vkCmdDrawIndirectCountAMD(
3897 VkCommandBuffer commandBuffer,
3898 VkBuffer buffer,
3899 VkDeviceSize offset,
3900 VkBuffer countBuffer,
3901 VkDeviceSize countBufferOffset,
3902 uint32_t maxDrawCount,
3903 uint32_t stride)
3904{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003905 AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003906 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003907 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003908 vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3909}
3910static void entry_vkCmdDrawIndexedIndirectCountAMD(
3911 VkCommandBuffer commandBuffer,
3912 VkBuffer buffer,
3913 VkDeviceSize offset,
3914 VkBuffer countBuffer,
3915 VkDeviceSize countBufferOffset,
3916 uint32_t maxDrawCount,
3917 uint32_t stride)
3918{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003919 AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003920 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07003921 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003922 vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3923}
3924#endif
3925#ifdef VK_AMD_negative_viewport_height
3926#endif
3927#ifdef VK_AMD_gpu_shader_half_float
3928#endif
3929#ifdef VK_AMD_shader_ballot
3930#endif
3931#ifdef VK_AMD_texture_gather_bias_lod
3932#endif
3933#ifdef VK_AMD_shader_info
3934static VkResult entry_vkGetShaderInfoAMD(
3935 VkDevice device,
3936 VkPipeline pipeline,
3937 VkShaderStageFlagBits shaderStage,
3938 VkShaderInfoTypeAMD infoType,
3939 size_t* pInfoSize,
3940 void* pInfo)
3941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003942 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003943 auto vkEnc = HostConnection::get()->vkEncoder();
3944 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3945 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3946 return vkGetShaderInfoAMD_VkResult_return;
3947}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07003948static VkResult dynCheck_entry_vkGetShaderInfoAMD(
3949 VkDevice device,
3950 VkPipeline pipeline,
3951 VkShaderStageFlagBits shaderStage,
3952 VkShaderInfoTypeAMD infoType,
3953 size_t* pInfoSize,
3954 void* pInfo)
3955{
3956 auto resources = ResourceTracker::get();
3957 if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info"))
3958 {
3959 sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info");
3960 }
3961 AEMU_SCOPED_TRACE("vkGetShaderInfoAMD");
3962 auto vkEnc = HostConnection::get()->vkEncoder();
3963 VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
3964 vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
3965 return vkGetShaderInfoAMD_VkResult_return;
3966}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003967#endif
3968#ifdef VK_AMD_shader_image_load_store_lod
3969#endif
3970#ifdef VK_IMG_format_pvrtc
3971#endif
3972#ifdef VK_NV_external_memory_capabilities
3973static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
3974 VkPhysicalDevice physicalDevice,
3975 VkFormat format,
3976 VkImageType type,
3977 VkImageTiling tiling,
3978 VkImageUsageFlags usage,
3979 VkImageCreateFlags flags,
3980 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
3981 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
3982{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003983 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08003984 auto vkEnc = HostConnection::get()->vkEncoder();
3985 VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
3986 vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
3987 return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
3988}
3989#endif
3990#ifdef VK_NV_external_memory
3991#endif
3992#ifdef VK_NV_external_memory_win32
3993static VkResult entry_vkGetMemoryWin32HandleNV(
3994 VkDevice device,
3995 VkDeviceMemory memory,
3996 VkExternalMemoryHandleTypeFlagsNV handleType,
3997 HANDLE* pHandle)
3998{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08003999 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004000 auto vkEnc = HostConnection::get()->vkEncoder();
4001 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4002 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4003 return vkGetMemoryWin32HandleNV_VkResult_return;
4004}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004005static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV(
4006 VkDevice device,
4007 VkDeviceMemory memory,
4008 VkExternalMemoryHandleTypeFlagsNV handleType,
4009 HANDLE* pHandle)
4010{
4011 auto resources = ResourceTracker::get();
4012 if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"))
4013 {
4014 sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32");
4015 }
4016 AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV");
4017 auto vkEnc = HostConnection::get()->vkEncoder();
4018 VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
4019 vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4020 return vkGetMemoryWin32HandleNV_VkResult_return;
4021}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004022#endif
4023#ifdef VK_NV_win32_keyed_mutex
4024#endif
4025#ifdef VK_EXT_validation_flags
4026#endif
4027#ifdef VK_NN_vi_surface
4028static VkResult entry_vkCreateViSurfaceNN(
4029 VkInstance instance,
4030 const VkViSurfaceCreateInfoNN* pCreateInfo,
4031 const VkAllocationCallbacks* pAllocator,
4032 VkSurfaceKHR* pSurface)
4033{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004034 AEMU_SCOPED_TRACE("vkCreateViSurfaceNN");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004035 auto vkEnc = HostConnection::get()->vkEncoder();
4036 VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
4037 vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
4038 return vkCreateViSurfaceNN_VkResult_return;
4039}
4040#endif
4041#ifdef VK_EXT_shader_subgroup_ballot
4042#endif
4043#ifdef VK_EXT_shader_subgroup_vote
4044#endif
4045#ifdef VK_EXT_conditional_rendering
4046static void entry_vkCmdBeginConditionalRenderingEXT(
4047 VkCommandBuffer commandBuffer,
4048 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4049{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004050 AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004051 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004052 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004053 vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4054}
4055static void entry_vkCmdEndConditionalRenderingEXT(
4056 VkCommandBuffer commandBuffer)
4057{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004058 AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004059 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004060 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004061 vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer);
4062}
4063#endif
4064#ifdef VK_NVX_device_generated_commands
4065static void entry_vkCmdProcessCommandsNVX(
4066 VkCommandBuffer commandBuffer,
4067 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
4068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004069 AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX");
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->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
4073}
4074static void entry_vkCmdReserveSpaceForCommandsNVX(
4075 VkCommandBuffer commandBuffer,
4076 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
4077{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004078 AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004079 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004080 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004081 vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
4082}
4083static VkResult entry_vkCreateIndirectCommandsLayoutNVX(
4084 VkDevice device,
4085 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4086 const VkAllocationCallbacks* pAllocator,
4087 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4088{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004089 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004090 auto vkEnc = HostConnection::get()->vkEncoder();
4091 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4092 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4093 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4094}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004095static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX(
4096 VkDevice device,
4097 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4098 const VkAllocationCallbacks* pAllocator,
4099 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
4100{
4101 auto resources = ResourceTracker::get();
4102 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4103 {
4104 sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4105 }
4106 AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX");
4107 auto vkEnc = HostConnection::get()->vkEncoder();
4108 VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
4109 vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
4110 return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
4111}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004112static void entry_vkDestroyIndirectCommandsLayoutNVX(
4113 VkDevice device,
4114 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4115 const VkAllocationCallbacks* pAllocator)
4116{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004117 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004118 auto vkEnc = HostConnection::get()->vkEncoder();
4119 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4120}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004121static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX(
4122 VkDevice device,
4123 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
4124 const VkAllocationCallbacks* pAllocator)
4125{
4126 auto resources = ResourceTracker::get();
4127 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4128 {
4129 sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands");
4130 }
4131 AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX");
4132 auto vkEnc = HostConnection::get()->vkEncoder();
4133 vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
4134}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004135static VkResult entry_vkCreateObjectTableNVX(
4136 VkDevice device,
4137 const VkObjectTableCreateInfoNVX* pCreateInfo,
4138 const VkAllocationCallbacks* pAllocator,
4139 VkObjectTableNVX* pObjectTable)
4140{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004141 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004142 auto vkEnc = HostConnection::get()->vkEncoder();
4143 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4144 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4145 return vkCreateObjectTableNVX_VkResult_return;
4146}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004147static VkResult dynCheck_entry_vkCreateObjectTableNVX(
4148 VkDevice device,
4149 const VkObjectTableCreateInfoNVX* pCreateInfo,
4150 const VkAllocationCallbacks* pAllocator,
4151 VkObjectTableNVX* pObjectTable)
4152{
4153 auto resources = ResourceTracker::get();
4154 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4155 {
4156 sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands");
4157 }
4158 AEMU_SCOPED_TRACE("vkCreateObjectTableNVX");
4159 auto vkEnc = HostConnection::get()->vkEncoder();
4160 VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
4161 vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
4162 return vkCreateObjectTableNVX_VkResult_return;
4163}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004164static void entry_vkDestroyObjectTableNVX(
4165 VkDevice device,
4166 VkObjectTableNVX objectTable,
4167 const VkAllocationCallbacks* pAllocator)
4168{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004169 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004170 auto vkEnc = HostConnection::get()->vkEncoder();
4171 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4172}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004173static void dynCheck_entry_vkDestroyObjectTableNVX(
4174 VkDevice device,
4175 VkObjectTableNVX objectTable,
4176 const VkAllocationCallbacks* pAllocator)
4177{
4178 auto resources = ResourceTracker::get();
4179 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4180 {
4181 sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands");
4182 }
4183 AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX");
4184 auto vkEnc = HostConnection::get()->vkEncoder();
4185 vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator);
4186}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004187static VkResult entry_vkRegisterObjectsNVX(
4188 VkDevice device,
4189 VkObjectTableNVX objectTable,
4190 uint32_t objectCount,
4191 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4192 const uint32_t* pObjectIndices)
4193{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004194 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004195 auto vkEnc = HostConnection::get()->vkEncoder();
4196 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4197 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4198 return vkRegisterObjectsNVX_VkResult_return;
4199}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004200static VkResult dynCheck_entry_vkRegisterObjectsNVX(
4201 VkDevice device,
4202 VkObjectTableNVX objectTable,
4203 uint32_t objectCount,
4204 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
4205 const uint32_t* pObjectIndices)
4206{
4207 auto resources = ResourceTracker::get();
4208 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4209 {
4210 sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands");
4211 }
4212 AEMU_SCOPED_TRACE("vkRegisterObjectsNVX");
4213 auto vkEnc = HostConnection::get()->vkEncoder();
4214 VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
4215 vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
4216 return vkRegisterObjectsNVX_VkResult_return;
4217}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004218static VkResult entry_vkUnregisterObjectsNVX(
4219 VkDevice device,
4220 VkObjectTableNVX objectTable,
4221 uint32_t objectCount,
4222 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4223 const uint32_t* pObjectIndices)
4224{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004225 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004226 auto vkEnc = HostConnection::get()->vkEncoder();
4227 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4228 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4229 return vkUnregisterObjectsNVX_VkResult_return;
4230}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004231static VkResult dynCheck_entry_vkUnregisterObjectsNVX(
4232 VkDevice device,
4233 VkObjectTableNVX objectTable,
4234 uint32_t objectCount,
4235 const VkObjectEntryTypeNVX* pObjectEntryTypes,
4236 const uint32_t* pObjectIndices)
4237{
4238 auto resources = ResourceTracker::get();
4239 if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"))
4240 {
4241 sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands");
4242 }
4243 AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX");
4244 auto vkEnc = HostConnection::get()->vkEncoder();
4245 VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
4246 vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
4247 return vkUnregisterObjectsNVX_VkResult_return;
4248}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004249static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4250 VkPhysicalDevice physicalDevice,
4251 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
4252 VkDeviceGeneratedCommandsLimitsNVX* pLimits)
4253{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004254 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004255 auto vkEnc = HostConnection::get()->vkEncoder();
4256 vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
4257}
4258#endif
4259#ifdef VK_NV_clip_space_w_scaling
4260static void entry_vkCmdSetViewportWScalingNV(
4261 VkCommandBuffer commandBuffer,
4262 uint32_t firstViewport,
4263 uint32_t viewportCount,
4264 const VkViewportWScalingNV* pViewportWScalings)
4265{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004266 AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004267 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004268 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004269 vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4270}
4271#endif
4272#ifdef VK_EXT_direct_mode_display
4273static VkResult entry_vkReleaseDisplayEXT(
4274 VkPhysicalDevice physicalDevice,
4275 VkDisplayKHR display)
4276{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004277 AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004278 auto vkEnc = HostConnection::get()->vkEncoder();
4279 VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
4280 vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display);
4281 return vkReleaseDisplayEXT_VkResult_return;
4282}
4283#endif
4284#ifdef VK_EXT_acquire_xlib_display
4285static VkResult entry_vkAcquireXlibDisplayEXT(
4286 VkPhysicalDevice physicalDevice,
4287 Display* dpy,
4288 VkDisplayKHR display)
4289{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004290 AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004291 auto vkEnc = HostConnection::get()->vkEncoder();
4292 VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
4293 vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display);
4294 return vkAcquireXlibDisplayEXT_VkResult_return;
4295}
4296static VkResult entry_vkGetRandROutputDisplayEXT(
4297 VkPhysicalDevice physicalDevice,
4298 Display* dpy,
4299 RROutput rrOutput,
4300 VkDisplayKHR* pDisplay)
4301{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004302 AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004303 auto vkEnc = HostConnection::get()->vkEncoder();
4304 VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
4305 vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
4306 return vkGetRandROutputDisplayEXT_VkResult_return;
4307}
4308#endif
4309#ifdef VK_EXT_display_surface_counter
4310static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
4311 VkPhysicalDevice physicalDevice,
4312 VkSurfaceKHR surface,
4313 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4314{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004315 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004316 auto vkEnc = HostConnection::get()->vkEncoder();
4317 VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
4318 vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
4319 return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
4320}
4321#endif
4322#ifdef VK_EXT_display_control
4323static VkResult entry_vkDisplayPowerControlEXT(
4324 VkDevice device,
4325 VkDisplayKHR display,
4326 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4327{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004328 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004329 auto vkEnc = HostConnection::get()->vkEncoder();
4330 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4331 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4332 return vkDisplayPowerControlEXT_VkResult_return;
4333}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004334static VkResult dynCheck_entry_vkDisplayPowerControlEXT(
4335 VkDevice device,
4336 VkDisplayKHR display,
4337 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4338{
4339 auto resources = ResourceTracker::get();
4340 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4341 {
4342 sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control");
4343 }
4344 AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT");
4345 auto vkEnc = HostConnection::get()->vkEncoder();
4346 VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
4347 vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4348 return vkDisplayPowerControlEXT_VkResult_return;
4349}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004350static VkResult entry_vkRegisterDeviceEventEXT(
4351 VkDevice device,
4352 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4353 const VkAllocationCallbacks* pAllocator,
4354 VkFence* pFence)
4355{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004356 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004357 auto vkEnc = HostConnection::get()->vkEncoder();
4358 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4359 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4360 return vkRegisterDeviceEventEXT_VkResult_return;
4361}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004362static VkResult dynCheck_entry_vkRegisterDeviceEventEXT(
4363 VkDevice device,
4364 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4365 const VkAllocationCallbacks* pAllocator,
4366 VkFence* pFence)
4367{
4368 auto resources = ResourceTracker::get();
4369 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4370 {
4371 sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control");
4372 }
4373 AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
4374 auto vkEnc = HostConnection::get()->vkEncoder();
4375 VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
4376 vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4377 return vkRegisterDeviceEventEXT_VkResult_return;
4378}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004379static VkResult entry_vkRegisterDisplayEventEXT(
4380 VkDevice device,
4381 VkDisplayKHR display,
4382 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4383 const VkAllocationCallbacks* pAllocator,
4384 VkFence* pFence)
4385{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004386 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004387 auto vkEnc = HostConnection::get()->vkEncoder();
4388 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4389 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4390 return vkRegisterDisplayEventEXT_VkResult_return;
4391}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004392static VkResult dynCheck_entry_vkRegisterDisplayEventEXT(
4393 VkDevice device,
4394 VkDisplayKHR display,
4395 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4396 const VkAllocationCallbacks* pAllocator,
4397 VkFence* pFence)
4398{
4399 auto resources = ResourceTracker::get();
4400 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4401 {
4402 sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control");
4403 }
4404 AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT");
4405 auto vkEnc = HostConnection::get()->vkEncoder();
4406 VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
4407 vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4408 return vkRegisterDisplayEventEXT_VkResult_return;
4409}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004410static VkResult entry_vkGetSwapchainCounterEXT(
4411 VkDevice device,
4412 VkSwapchainKHR swapchain,
4413 VkSurfaceCounterFlagBitsEXT counter,
4414 uint64_t* pCounterValue)
4415{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004416 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004417 auto vkEnc = HostConnection::get()->vkEncoder();
4418 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4419 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4420 return vkGetSwapchainCounterEXT_VkResult_return;
4421}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004422static VkResult dynCheck_entry_vkGetSwapchainCounterEXT(
4423 VkDevice device,
4424 VkSwapchainKHR swapchain,
4425 VkSurfaceCounterFlagBitsEXT counter,
4426 uint64_t* pCounterValue)
4427{
4428 auto resources = ResourceTracker::get();
4429 if (!resources->hasDeviceExtension(device, "VK_EXT_display_control"))
4430 {
4431 sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control");
4432 }
4433 AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
4434 auto vkEnc = HostConnection::get()->vkEncoder();
4435 VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
4436 vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4437 return vkGetSwapchainCounterEXT_VkResult_return;
4438}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004439#endif
4440#ifdef VK_GOOGLE_display_timing
4441static VkResult entry_vkGetRefreshCycleDurationGOOGLE(
4442 VkDevice device,
4443 VkSwapchainKHR swapchain,
4444 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4445{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004446 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004447 auto vkEnc = HostConnection::get()->vkEncoder();
4448 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4449 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4450 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4451}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004452static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE(
4453 VkDevice device,
4454 VkSwapchainKHR swapchain,
4455 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4456{
4457 auto resources = ResourceTracker::get();
4458 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4459 {
4460 sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing");
4461 }
4462 AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE");
4463 auto vkEnc = HostConnection::get()->vkEncoder();
4464 VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
4465 vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4466 return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
4467}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004468static VkResult entry_vkGetPastPresentationTimingGOOGLE(
4469 VkDevice device,
4470 VkSwapchainKHR swapchain,
4471 uint32_t* pPresentationTimingCount,
4472 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4473{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004474 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004475 auto vkEnc = HostConnection::get()->vkEncoder();
4476 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4477 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4478 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4479}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004480static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE(
4481 VkDevice device,
4482 VkSwapchainKHR swapchain,
4483 uint32_t* pPresentationTimingCount,
4484 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4485{
4486 auto resources = ResourceTracker::get();
4487 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"))
4488 {
4489 sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing");
4490 }
4491 AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
4492 auto vkEnc = HostConnection::get()->vkEncoder();
4493 VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
4494 vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4495 return vkGetPastPresentationTimingGOOGLE_VkResult_return;
4496}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004497#endif
4498#ifdef VK_NV_sample_mask_override_coverage
4499#endif
4500#ifdef VK_NV_geometry_shader_passthrough
4501#endif
4502#ifdef VK_NV_viewport_array2
4503#endif
4504#ifdef VK_NVX_multiview_per_view_attributes
4505#endif
4506#ifdef VK_NV_viewport_swizzle
4507#endif
4508#ifdef VK_EXT_discard_rectangles
4509static void entry_vkCmdSetDiscardRectangleEXT(
4510 VkCommandBuffer commandBuffer,
4511 uint32_t firstDiscardRectangle,
4512 uint32_t discardRectangleCount,
4513 const VkRect2D* pDiscardRectangles)
4514{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004515 AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004516 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004517 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004518 vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4519}
4520#endif
4521#ifdef VK_EXT_conservative_rasterization
4522#endif
4523#ifdef VK_EXT_swapchain_colorspace
4524#endif
4525#ifdef VK_EXT_hdr_metadata
4526static void entry_vkSetHdrMetadataEXT(
4527 VkDevice device,
4528 uint32_t swapchainCount,
4529 const VkSwapchainKHR* pSwapchains,
4530 const VkHdrMetadataEXT* pMetadata)
4531{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004532 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004533 auto vkEnc = HostConnection::get()->vkEncoder();
4534 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4535}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004536static void dynCheck_entry_vkSetHdrMetadataEXT(
4537 VkDevice device,
4538 uint32_t swapchainCount,
4539 const VkSwapchainKHR* pSwapchains,
4540 const VkHdrMetadataEXT* pMetadata)
4541{
4542 auto resources = ResourceTracker::get();
4543 if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"))
4544 {
4545 sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata");
4546 }
4547 AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT");
4548 auto vkEnc = HostConnection::get()->vkEncoder();
4549 vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4550}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004551#endif
4552#ifdef VK_MVK_ios_surface
4553static VkResult entry_vkCreateIOSSurfaceMVK(
4554 VkInstance instance,
4555 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4556 const VkAllocationCallbacks* pAllocator,
4557 VkSurfaceKHR* pSurface)
4558{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004559 AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004560 auto vkEnc = HostConnection::get()->vkEncoder();
4561 VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
4562 vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4563 return vkCreateIOSSurfaceMVK_VkResult_return;
4564}
4565#endif
4566#ifdef VK_MVK_macos_surface
4567static VkResult entry_vkCreateMacOSSurfaceMVK(
4568 VkInstance instance,
4569 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4570 const VkAllocationCallbacks* pAllocator,
4571 VkSurfaceKHR* pSurface)
4572{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004573 AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004574 auto vkEnc = HostConnection::get()->vkEncoder();
4575 VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
4576 vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
4577 return vkCreateMacOSSurfaceMVK_VkResult_return;
4578}
4579#endif
4580#ifdef VK_EXT_external_memory_dma_buf
4581#endif
4582#ifdef VK_EXT_queue_family_foreign
4583#endif
4584#ifdef VK_EXT_debug_utils
4585static VkResult entry_vkSetDebugUtilsObjectNameEXT(
4586 VkDevice device,
4587 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4588{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004589 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004590 auto vkEnc = HostConnection::get()->vkEncoder();
4591 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4592 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4593 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4594}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004595static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT(
4596 VkDevice device,
4597 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4598{
4599 auto resources = ResourceTracker::get();
4600 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4601 {
4602 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils");
4603 }
4604 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT");
4605 auto vkEnc = HostConnection::get()->vkEncoder();
4606 VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
4607 vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo);
4608 return vkSetDebugUtilsObjectNameEXT_VkResult_return;
4609}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004610static VkResult entry_vkSetDebugUtilsObjectTagEXT(
4611 VkDevice device,
4612 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4613{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004614 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004615 auto vkEnc = HostConnection::get()->vkEncoder();
4616 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4617 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4618 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4619}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004620static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT(
4621 VkDevice device,
4622 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4623{
4624 auto resources = ResourceTracker::get();
4625 if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
4626 {
4627 sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils");
4628 }
4629 AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
4630 auto vkEnc = HostConnection::get()->vkEncoder();
4631 VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
4632 vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo);
4633 return vkSetDebugUtilsObjectTagEXT_VkResult_return;
4634}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004635static void entry_vkQueueBeginDebugUtilsLabelEXT(
4636 VkQueue queue,
4637 const VkDebugUtilsLabelEXT* pLabelInfo)
4638{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004639 AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004640 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07004641 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004642 vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4643}
4644static void entry_vkQueueEndDebugUtilsLabelEXT(
4645 VkQueue queue)
4646{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004647 AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004648 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07004649 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004650 vkEnc->vkQueueEndDebugUtilsLabelEXT(queue);
4651}
4652static void entry_vkQueueInsertDebugUtilsLabelEXT(
4653 VkQueue queue,
4654 const VkDebugUtilsLabelEXT* pLabelInfo)
4655{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004656 AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004657 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07004658 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004659 vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4660}
4661static void entry_vkCmdBeginDebugUtilsLabelEXT(
4662 VkCommandBuffer commandBuffer,
4663 const VkDebugUtilsLabelEXT* pLabelInfo)
4664{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004665 AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004666 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004667 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004668 vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4669}
4670static void entry_vkCmdEndDebugUtilsLabelEXT(
4671 VkCommandBuffer commandBuffer)
4672{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004673 AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004674 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004675 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004676 vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer);
4677}
4678static void entry_vkCmdInsertDebugUtilsLabelEXT(
4679 VkCommandBuffer commandBuffer,
4680 const VkDebugUtilsLabelEXT* pLabelInfo)
4681{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004682 AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004683 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004684 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004685 vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4686}
4687static VkResult entry_vkCreateDebugUtilsMessengerEXT(
4688 VkInstance instance,
4689 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4690 const VkAllocationCallbacks* pAllocator,
4691 VkDebugUtilsMessengerEXT* pMessenger)
4692{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004693 AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004694 auto vkEnc = HostConnection::get()->vkEncoder();
4695 VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
4696 vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
4697 return vkCreateDebugUtilsMessengerEXT_VkResult_return;
4698}
4699static void entry_vkDestroyDebugUtilsMessengerEXT(
4700 VkInstance instance,
4701 VkDebugUtilsMessengerEXT messenger,
4702 const VkAllocationCallbacks* pAllocator)
4703{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004704 AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004705 auto vkEnc = HostConnection::get()->vkEncoder();
4706 vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
4707}
4708static void entry_vkSubmitDebugUtilsMessageEXT(
4709 VkInstance instance,
4710 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4711 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4712 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4713{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004714 AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004715 auto vkEnc = HostConnection::get()->vkEncoder();
4716 vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
4717}
4718#endif
4719#ifdef VK_ANDROID_external_memory_android_hardware_buffer
4720static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4721 VkDevice device,
4722 const AHardwareBuffer* buffer,
4723 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4724{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004725 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004726 auto vkEnc = HostConnection::get()->vkEncoder();
4727 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004728 auto resources = ResourceTracker::get();
4729 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004730 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4731}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004732static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID(
4733 VkDevice device,
4734 const AHardwareBuffer* buffer,
4735 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4736{
4737 auto resources = ResourceTracker::get();
4738 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4739 {
4740 sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4741 }
4742 AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID");
4743 auto vkEnc = HostConnection::get()->vkEncoder();
4744 VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4745 vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties);
4746 return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4747}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004748static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID(
4749 VkDevice device,
4750 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4751 AHardwareBuffer** pBuffer)
4752{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004753 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004754 auto vkEnc = HostConnection::get()->vkEncoder();
4755 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
Lingfeng Yang4f3f91f2019-02-28 11:37:21 -08004756 auto resources = ResourceTracker::get();
4757 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004758 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4759}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004760static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID(
4761 VkDevice device,
4762 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4763 AHardwareBuffer** pBuffer)
4764{
4765 auto resources = ResourceTracker::get();
4766 if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"))
4767 {
4768 sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer");
4769 }
4770 AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID");
4771 auto vkEnc = HostConnection::get()->vkEncoder();
4772 VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4773 vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer);
4774 return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4775}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004776#endif
4777#ifdef VK_EXT_sampler_filter_minmax
4778#endif
4779#ifdef VK_AMD_gpu_shader_int16
4780#endif
4781#ifdef VK_AMD_mixed_attachment_samples
4782#endif
4783#ifdef VK_AMD_shader_fragment_mask
4784#endif
4785#ifdef VK_EXT_shader_stencil_export
4786#endif
4787#ifdef VK_EXT_sample_locations
4788static void entry_vkCmdSetSampleLocationsEXT(
4789 VkCommandBuffer commandBuffer,
4790 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4791{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004792 AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004793 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004794 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004795 vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4796}
4797static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
4798 VkPhysicalDevice physicalDevice,
4799 VkSampleCountFlagBits samples,
4800 VkMultisamplePropertiesEXT* pMultisampleProperties)
4801{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004802 AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004803 auto vkEnc = HostConnection::get()->vkEncoder();
4804 vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
4805}
4806#endif
4807#ifdef VK_EXT_blend_operation_advanced
4808#endif
4809#ifdef VK_NV_fragment_coverage_to_color
4810#endif
4811#ifdef VK_NV_framebuffer_mixed_samples
4812#endif
4813#ifdef VK_NV_fill_rectangle
4814#endif
4815#ifdef VK_EXT_post_depth_coverage
4816#endif
4817#ifdef VK_EXT_validation_cache
4818static VkResult entry_vkCreateValidationCacheEXT(
4819 VkDevice device,
4820 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4821 const VkAllocationCallbacks* pAllocator,
4822 VkValidationCacheEXT* pValidationCache)
4823{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004824 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004825 auto vkEnc = HostConnection::get()->vkEncoder();
4826 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4827 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4828 return vkCreateValidationCacheEXT_VkResult_return;
4829}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004830static VkResult dynCheck_entry_vkCreateValidationCacheEXT(
4831 VkDevice device,
4832 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4833 const VkAllocationCallbacks* pAllocator,
4834 VkValidationCacheEXT* pValidationCache)
4835{
4836 auto resources = ResourceTracker::get();
4837 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4838 {
4839 sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache");
4840 }
4841 AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT");
4842 auto vkEnc = HostConnection::get()->vkEncoder();
4843 VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
4844 vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4845 return vkCreateValidationCacheEXT_VkResult_return;
4846}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004847static void entry_vkDestroyValidationCacheEXT(
4848 VkDevice device,
4849 VkValidationCacheEXT validationCache,
4850 const VkAllocationCallbacks* pAllocator)
4851{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004852 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004853 auto vkEnc = HostConnection::get()->vkEncoder();
4854 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4855}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004856static void dynCheck_entry_vkDestroyValidationCacheEXT(
4857 VkDevice device,
4858 VkValidationCacheEXT validationCache,
4859 const VkAllocationCallbacks* pAllocator)
4860{
4861 auto resources = ResourceTracker::get();
4862 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4863 {
4864 sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache");
4865 }
4866 AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
4867 auto vkEnc = HostConnection::get()->vkEncoder();
4868 vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator);
4869}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004870static VkResult entry_vkMergeValidationCachesEXT(
4871 VkDevice device,
4872 VkValidationCacheEXT dstCache,
4873 uint32_t srcCacheCount,
4874 const VkValidationCacheEXT* pSrcCaches)
4875{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004876 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004877 auto vkEnc = HostConnection::get()->vkEncoder();
4878 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4879 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4880 return vkMergeValidationCachesEXT_VkResult_return;
4881}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004882static VkResult dynCheck_entry_vkMergeValidationCachesEXT(
4883 VkDevice device,
4884 VkValidationCacheEXT dstCache,
4885 uint32_t srcCacheCount,
4886 const VkValidationCacheEXT* pSrcCaches)
4887{
4888 auto resources = ResourceTracker::get();
4889 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4890 {
4891 sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache");
4892 }
4893 AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
4894 auto vkEnc = HostConnection::get()->vkEncoder();
4895 VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
4896 vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4897 return vkMergeValidationCachesEXT_VkResult_return;
4898}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004899static VkResult entry_vkGetValidationCacheDataEXT(
4900 VkDevice device,
4901 VkValidationCacheEXT validationCache,
4902 size_t* pDataSize,
4903 void* pData)
4904{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004905 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004906 auto vkEnc = HostConnection::get()->vkEncoder();
4907 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4908 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4909 return vkGetValidationCacheDataEXT_VkResult_return;
4910}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004911static VkResult dynCheck_entry_vkGetValidationCacheDataEXT(
4912 VkDevice device,
4913 VkValidationCacheEXT validationCache,
4914 size_t* pDataSize,
4915 void* pData)
4916{
4917 auto resources = ResourceTracker::get();
4918 if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache"))
4919 {
4920 sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache");
4921 }
4922 AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
4923 auto vkEnc = HostConnection::get()->vkEncoder();
4924 VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
4925 vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4926 return vkGetValidationCacheDataEXT_VkResult_return;
4927}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004928#endif
4929#ifdef VK_EXT_descriptor_indexing
4930#endif
4931#ifdef VK_EXT_shader_viewport_index_layer
4932#endif
4933#ifdef VK_EXT_global_priority
4934#endif
4935#ifdef VK_EXT_external_memory_host
4936static VkResult entry_vkGetMemoryHostPointerPropertiesEXT(
4937 VkDevice device,
4938 VkExternalMemoryHandleTypeFlagBits handleType,
4939 const void* pHostPointer,
4940 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4941{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004942 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004943 auto vkEnc = HostConnection::get()->vkEncoder();
4944 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4945 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4946 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4947}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07004948static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT(
4949 VkDevice device,
4950 VkExternalMemoryHandleTypeFlagBits handleType,
4951 const void* pHostPointer,
4952 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4953{
4954 auto resources = ResourceTracker::get();
4955 if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"))
4956 {
4957 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host");
4958 }
4959 AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT");
4960 auto vkEnc = HostConnection::get()->vkEncoder();
4961 VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
4962 vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
4963 return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
4964}
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004965#endif
4966#ifdef VK_AMD_buffer_marker
4967static void entry_vkCmdWriteBufferMarkerAMD(
4968 VkCommandBuffer commandBuffer,
4969 VkPipelineStageFlagBits pipelineStage,
4970 VkBuffer dstBuffer,
4971 VkDeviceSize dstOffset,
4972 uint32_t marker)
4973{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004974 AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004975 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004976 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004977 vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
4978}
4979#endif
4980#ifdef VK_AMD_shader_core_properties
4981#endif
4982#ifdef VK_EXT_vertex_attribute_divisor
4983#endif
4984#ifdef VK_NV_shader_subgroup_partitioned
4985#endif
4986#ifdef VK_NV_device_diagnostic_checkpoints
4987static void entry_vkCmdSetCheckpointNV(
4988 VkCommandBuffer commandBuffer,
4989 const void* pCheckpointMarker)
4990{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08004991 AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004992 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07004993 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08004994 vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
4995}
4996static void entry_vkGetQueueCheckpointDataNV(
4997 VkQueue queue,
4998 uint32_t* pCheckpointDataCount,
4999 VkCheckpointDataNV* pCheckpointData)
5000{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005001 AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005002 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005003 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005004 vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
5005}
5006#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005007#ifdef VK_GOOGLE_address_space
5008static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5009 VkDevice device,
5010 VkDeviceMemory memory,
5011 uint64_t* pAddress)
5012{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005013 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005014 auto vkEnc = HostConnection::get()->vkEncoder();
5015 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5016 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5017 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5018}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005019static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE(
5020 VkDevice device,
5021 VkDeviceMemory memory,
5022 uint64_t* pAddress)
5023{
5024 auto resources = ResourceTracker::get();
5025 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"))
5026 {
5027 sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space");
5028 }
5029 AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
5030 auto vkEnc = HostConnection::get()->vkEncoder();
5031 VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
5032 vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress);
5033 return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
5034}
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08005035#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005036#ifdef VK_GOOGLE_color_buffer
5037static VkResult entry_vkRegisterImageColorBufferGOOGLE(
5038 VkDevice device,
5039 VkImage image,
5040 uint32_t colorBuffer)
5041{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005042 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005043 auto vkEnc = HostConnection::get()->vkEncoder();
5044 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5045 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5046 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5047}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005048static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE(
5049 VkDevice device,
5050 VkImage image,
5051 uint32_t colorBuffer)
5052{
5053 auto resources = ResourceTracker::get();
5054 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5055 {
5056 sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5057 }
5058 AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
5059 auto vkEnc = HostConnection::get()->vkEncoder();
5060 VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
5061 vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer);
5062 return vkRegisterImageColorBufferGOOGLE_VkResult_return;
5063}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005064static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
5065 VkDevice device,
5066 VkBuffer buffer,
5067 uint32_t colorBuffer)
5068{
Lingfeng Yang42ac1792019-02-22 20:13:44 -08005069 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005070 auto vkEnc = HostConnection::get()->vkEncoder();
5071 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5072 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5073 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5074}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005075static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE(
5076 VkDevice device,
5077 VkBuffer buffer,
5078 uint32_t colorBuffer)
5079{
5080 auto resources = ResourceTracker::get();
5081 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"))
5082 {
5083 sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer");
5084 }
5085 AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
5086 auto vkEnc = HostConnection::get()->vkEncoder();
5087 VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
5088 vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer);
5089 return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
5090}
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08005091#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005092#ifdef VK_GOOGLE_sized_descriptor_update_template
5093static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5094 VkDevice device,
5095 VkDescriptorSet descriptorSet,
5096 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5097 uint32_t imageInfoCount,
5098 uint32_t bufferInfoCount,
5099 uint32_t bufferViewCount,
5100 const uint32_t* pImageInfoEntryIndices,
5101 const uint32_t* pBufferInfoEntryIndices,
5102 const uint32_t* pBufferViewEntryIndices,
5103 const VkDescriptorImageInfo* pImageInfos,
5104 const VkDescriptorBufferInfo* pBufferInfos,
5105 const VkBufferView* pBufferViews)
5106{
5107 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5108 auto vkEnc = HostConnection::get()->vkEncoder();
5109 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5110}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005111static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
5112 VkDevice device,
5113 VkDescriptorSet descriptorSet,
5114 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
5115 uint32_t imageInfoCount,
5116 uint32_t bufferInfoCount,
5117 uint32_t bufferViewCount,
5118 const uint32_t* pImageInfoEntryIndices,
5119 const uint32_t* pBufferInfoEntryIndices,
5120 const uint32_t* pBufferViewEntryIndices,
5121 const VkDescriptorImageInfo* pImageInfos,
5122 const VkDescriptorBufferInfo* pBufferInfos,
5123 const VkBufferView* pBufferViews)
5124{
5125 auto resources = ResourceTracker::get();
5126 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"))
5127 {
5128 sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template");
5129 }
5130 AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
5131 auto vkEnc = HostConnection::get()->vkEncoder();
5132 vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews);
5133}
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07005134#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005135#ifdef VK_GOOGLE_async_command_buffers
5136static void entry_vkBeginCommandBufferAsyncGOOGLE(
5137 VkCommandBuffer commandBuffer,
5138 const VkCommandBufferBeginInfo* pBeginInfo)
5139{
5140 AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
5141 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005142 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005143 vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo);
5144}
5145static void entry_vkEndCommandBufferAsyncGOOGLE(
5146 VkCommandBuffer commandBuffer)
5147{
5148 AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
5149 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005150 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005151 vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer);
5152}
5153static void entry_vkResetCommandBufferAsyncGOOGLE(
5154 VkCommandBuffer commandBuffer,
5155 VkCommandBufferResetFlags flags)
5156{
5157 AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
5158 auto vkEnc = HostConnection::get()->vkEncoder();
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005159 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005160 vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags);
5161}
Lingfeng Yang39a276e2019-06-17 13:27:22 -07005162static void entry_vkCommandBufferHostSyncGOOGLE(
5163 VkCommandBuffer commandBuffer,
5164 uint32_t needHostSync,
5165 uint32_t sequenceNumber)
5166{
5167 AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
5168 auto vkEnc = HostConnection::get()->vkEncoder();
5169 ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc);
5170 vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber);
5171}
Lingfeng Yangc53e7472019-03-27 08:50:55 -07005172#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00005173#ifdef VK_GOOGLE_create_resources_with_requirements
5174static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
5175 VkDevice device,
5176 const VkImageCreateInfo* pCreateInfo,
5177 const VkAllocationCallbacks* pAllocator,
5178 VkImage* pImage,
5179 VkMemoryRequirements* pMemoryRequirements)
5180{
5181 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5182 auto vkEnc = HostConnection::get()->vkEncoder();
5183 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5184 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5185 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5186}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005187static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE(
5188 VkDevice device,
5189 const VkImageCreateInfo* pCreateInfo,
5190 const VkAllocationCallbacks* pAllocator,
5191 VkImage* pImage,
5192 VkMemoryRequirements* pMemoryRequirements)
5193{
5194 auto resources = ResourceTracker::get();
5195 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5196 {
5197 sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5198 }
5199 AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
5200 auto vkEnc = HostConnection::get()->vkEncoder();
5201 VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5202 vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements);
5203 return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
5204}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005205static VkResult entry_vkCreateBufferWithRequirementsGOOGLE(
5206 VkDevice device,
5207 const VkBufferCreateInfo* pCreateInfo,
5208 const VkAllocationCallbacks* pAllocator,
5209 VkBuffer* pBuffer,
5210 VkMemoryRequirements* pMemoryRequirements)
5211{
5212 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5213 auto vkEnc = HostConnection::get()->vkEncoder();
5214 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5215 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5216 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5217}
Lingfeng Yang2f51a332019-10-30 09:25:25 -07005218static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE(
5219 VkDevice device,
5220 const VkBufferCreateInfo* pCreateInfo,
5221 const VkAllocationCallbacks* pAllocator,
5222 VkBuffer* pBuffer,
5223 VkMemoryRequirements* pMemoryRequirements)
5224{
5225 auto resources = ResourceTracker::get();
5226 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"))
5227 {
5228 sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements");
5229 }
5230 AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
5231 auto vkEnc = HostConnection::get()->vkEncoder();
5232 VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
5233 vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements);
5234 return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
5235}
Lingfeng Yang87f11962019-06-27 16:28:53 +00005236#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08005237#ifdef VK_GOOGLE_address_space_info
5238static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
5239 VkDevice device,
5240 VkDeviceMemory memory,
5241 uint64_t* pAddress,
5242 uint64_t* pSize,
5243 uint64_t* pHostmemId)
5244{
5245 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5246 auto vkEnc = HostConnection::get()->vkEncoder();
5247 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5248 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5249 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5250}
5251static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE(
5252 VkDevice device,
5253 VkDeviceMemory memory,
5254 uint64_t* pAddress,
5255 uint64_t* pSize,
5256 uint64_t* pHostmemId)
5257{
5258 auto resources = ResourceTracker::get();
5259 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"))
5260 {
5261 sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info");
5262 }
5263 AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
5264 auto vkEnc = HostConnection::get()->vkEncoder();
5265 VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
5266 vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId);
5267 return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
5268}
5269#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07005270#ifdef VK_GOOGLE_free_memory_sync
5271static VkResult entry_vkFreeMemorySyncGOOGLE(
5272 VkDevice device,
5273 VkDeviceMemory memory,
5274 const VkAllocationCallbacks* pAllocator)
5275{
5276 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5277 auto vkEnc = HostConnection::get()->vkEncoder();
5278 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5279 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5280 return vkFreeMemorySyncGOOGLE_VkResult_return;
5281}
5282static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE(
5283 VkDevice device,
5284 VkDeviceMemory memory,
5285 const VkAllocationCallbacks* pAllocator)
5286{
5287 auto resources = ResourceTracker::get();
5288 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"))
5289 {
5290 sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync");
5291 }
5292 AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
5293 auto vkEnc = HostConnection::get()->vkEncoder();
5294 VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
5295 vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator);
5296 return vkFreeMemorySyncGOOGLE_VkResult_return;
5297}
5298#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07005299#ifdef VK_GOOGLE_async_queue_submit
5300static void entry_vkQueueHostSyncGOOGLE(
5301 VkQueue queue,
5302 uint32_t needHostSync,
5303 uint32_t sequenceNumber)
5304{
5305 AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
5306 auto vkEnc = HostConnection::get()->vkEncoder();
5307 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5308 vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber);
5309}
5310static void entry_vkQueueSubmitAsyncGOOGLE(
5311 VkQueue queue,
5312 uint32_t submitCount,
5313 const VkSubmitInfo* pSubmits,
5314 VkFence fence)
5315{
5316 AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
5317 auto vkEnc = HostConnection::get()->vkEncoder();
5318 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5319 vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence);
5320}
5321static void entry_vkQueueWaitIdleAsyncGOOGLE(
5322 VkQueue queue)
5323{
5324 AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
5325 auto vkEnc = HostConnection::get()->vkEncoder();
5326 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5327 vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue);
5328}
5329static void entry_vkQueueBindSparseAsyncGOOGLE(
5330 VkQueue queue,
5331 uint32_t bindInfoCount,
5332 const VkBindSparseInfo* pBindInfo,
5333 VkFence fence)
5334{
5335 AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
5336 auto vkEnc = HostConnection::get()->vkEncoder();
5337 ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc);
5338 vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence);
5339}
5340#endif
Yilong Lia48b0102020-09-15 15:08:28 -07005341#ifdef VK_GOOGLE_linear_image_layout
5342static void entry_vkGetLinearImageLayoutGOOGLE(
5343 VkDevice device,
5344 VkFormat format,
5345 VkDeviceSize* pOffset,
5346 VkDeviceSize* pRowPitchAlignment)
5347{
5348 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
5349 auto vkEnc = HostConnection::get()->vkEncoder();
5350 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment);
5351}
5352static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
5353 VkDevice device,
5354 VkFormat format,
5355 VkDeviceSize* pOffset,
5356 VkDeviceSize* pRowPitchAlignment)
5357{
5358 auto resources = ResourceTracker::get();
5359 if (!resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout"))
5360 {
5361 sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_linear_image_layout");
5362 }
5363 AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
5364 auto vkEnc = HostConnection::get()->vkEncoder();
5365 vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment);
5366}
5367#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08005368#ifdef VK_MVK_moltenvk
5369static void entry_vkGetMTLDeviceMVK(
5370 VkPhysicalDevice physicalDevice,
5371 void** pMTLDevice)
5372{
5373 AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
5374 auto vkEnc = HostConnection::get()->vkEncoder();
5375 vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice);
5376}
5377static VkResult entry_vkSetMTLTextureMVK(
5378 VkImage image,
5379 void* mtlTexture)
5380{
5381 AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
5382 auto vkEnc = HostConnection::get()->vkEncoder();
5383 VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
5384 vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture);
5385 return vkSetMTLTextureMVK_VkResult_return;
5386}
5387static void entry_vkGetMTLTextureMVK(
5388 VkImage image,
5389 void** pMTLTexture)
5390{
5391 AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
5392 auto vkEnc = HostConnection::get()->vkEncoder();
5393 vkEnc->vkGetMTLTextureMVK(image, pMTLTexture);
5394}
5395static void entry_vkGetMTLBufferMVK(
5396 VkBuffer buffer,
5397 void** pMTLBuffer)
5398{
5399 AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
5400 auto vkEnc = HostConnection::get()->vkEncoder();
5401 vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer);
5402}
5403static VkResult entry_vkUseIOSurfaceMVK(
5404 VkImage image,
5405 void* ioSurface)
5406{
5407 AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
5408 auto vkEnc = HostConnection::get()->vkEncoder();
5409 VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
5410 vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface);
5411 return vkUseIOSurfaceMVK_VkResult_return;
5412}
5413static void entry_vkGetIOSurfaceMVK(
5414 VkImage image,
5415 void** pIOSurface)
5416{
5417 AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
5418 auto vkEnc = HostConnection::get()->vkEncoder();
5419 vkEnc->vkGetIOSurfaceMVK(image, pIOSurface);
5420}
5421#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005422void* goldfish_vulkan_get_proc_address(const char* name){
5423#ifdef VK_VERSION_1_0
5424 if (!strcmp(name, "vkCreateInstance"))
5425 {
5426 return (void*)entry_vkCreateInstance;
5427 }
5428 if (!strcmp(name, "vkDestroyInstance"))
5429 {
5430 return (void*)entry_vkDestroyInstance;
5431 }
5432 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5433 {
5434 return (void*)entry_vkEnumeratePhysicalDevices;
5435 }
5436 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5437 {
5438 return (void*)entry_vkGetPhysicalDeviceFeatures;
5439 }
5440 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5441 {
5442 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5443 }
5444 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5445 {
5446 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5447 }
5448 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5449 {
5450 return (void*)entry_vkGetPhysicalDeviceProperties;
5451 }
5452 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5453 {
5454 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5455 }
5456 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5457 {
5458 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5459 }
5460 if (!strcmp(name, "vkGetInstanceProcAddr"))
5461 {
5462 return (void*)entry_vkGetInstanceProcAddr;
5463 }
5464 if (!strcmp(name, "vkGetDeviceProcAddr"))
5465 {
5466 return (void*)entry_vkGetDeviceProcAddr;
5467 }
5468 if (!strcmp(name, "vkCreateDevice"))
5469 {
5470 return (void*)entry_vkCreateDevice;
5471 }
5472 if (!strcmp(name, "vkDestroyDevice"))
5473 {
5474 return (void*)entry_vkDestroyDevice;
5475 }
5476 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5477 {
5478 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5479 }
5480 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5481 {
5482 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5483 }
5484 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5485 {
5486 return (void*)entry_vkEnumerateInstanceLayerProperties;
5487 }
5488 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5489 {
5490 return (void*)entry_vkEnumerateDeviceLayerProperties;
5491 }
5492 if (!strcmp(name, "vkGetDeviceQueue"))
5493 {
5494 return (void*)entry_vkGetDeviceQueue;
5495 }
5496 if (!strcmp(name, "vkQueueSubmit"))
5497 {
5498 return (void*)entry_vkQueueSubmit;
5499 }
5500 if (!strcmp(name, "vkQueueWaitIdle"))
5501 {
5502 return (void*)entry_vkQueueWaitIdle;
5503 }
5504 if (!strcmp(name, "vkDeviceWaitIdle"))
5505 {
5506 return (void*)entry_vkDeviceWaitIdle;
5507 }
5508 if (!strcmp(name, "vkAllocateMemory"))
5509 {
5510 return (void*)entry_vkAllocateMemory;
5511 }
5512 if (!strcmp(name, "vkFreeMemory"))
5513 {
5514 return (void*)entry_vkFreeMemory;
5515 }
5516 if (!strcmp(name, "vkMapMemory"))
5517 {
5518 return (void*)entry_vkMapMemory;
5519 }
5520 if (!strcmp(name, "vkUnmapMemory"))
5521 {
5522 return (void*)entry_vkUnmapMemory;
5523 }
5524 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5525 {
5526 return (void*)entry_vkFlushMappedMemoryRanges;
5527 }
5528 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5529 {
5530 return (void*)entry_vkInvalidateMappedMemoryRanges;
5531 }
5532 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5533 {
5534 return (void*)entry_vkGetDeviceMemoryCommitment;
5535 }
5536 if (!strcmp(name, "vkBindBufferMemory"))
5537 {
5538 return (void*)entry_vkBindBufferMemory;
5539 }
5540 if (!strcmp(name, "vkBindImageMemory"))
5541 {
5542 return (void*)entry_vkBindImageMemory;
5543 }
5544 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5545 {
5546 return (void*)entry_vkGetBufferMemoryRequirements;
5547 }
5548 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5549 {
5550 return (void*)entry_vkGetImageMemoryRequirements;
5551 }
5552 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5553 {
5554 return (void*)entry_vkGetImageSparseMemoryRequirements;
5555 }
5556 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5557 {
5558 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5559 }
5560 if (!strcmp(name, "vkQueueBindSparse"))
5561 {
5562 return (void*)entry_vkQueueBindSparse;
5563 }
5564 if (!strcmp(name, "vkCreateFence"))
5565 {
5566 return (void*)entry_vkCreateFence;
5567 }
5568 if (!strcmp(name, "vkDestroyFence"))
5569 {
5570 return (void*)entry_vkDestroyFence;
5571 }
5572 if (!strcmp(name, "vkResetFences"))
5573 {
5574 return (void*)entry_vkResetFences;
5575 }
5576 if (!strcmp(name, "vkGetFenceStatus"))
5577 {
5578 return (void*)entry_vkGetFenceStatus;
5579 }
5580 if (!strcmp(name, "vkWaitForFences"))
5581 {
5582 return (void*)entry_vkWaitForFences;
5583 }
5584 if (!strcmp(name, "vkCreateSemaphore"))
5585 {
5586 return (void*)entry_vkCreateSemaphore;
5587 }
5588 if (!strcmp(name, "vkDestroySemaphore"))
5589 {
5590 return (void*)entry_vkDestroySemaphore;
5591 }
5592 if (!strcmp(name, "vkCreateEvent"))
5593 {
5594 return (void*)entry_vkCreateEvent;
5595 }
5596 if (!strcmp(name, "vkDestroyEvent"))
5597 {
5598 return (void*)entry_vkDestroyEvent;
5599 }
5600 if (!strcmp(name, "vkGetEventStatus"))
5601 {
5602 return (void*)entry_vkGetEventStatus;
5603 }
5604 if (!strcmp(name, "vkSetEvent"))
5605 {
5606 return (void*)entry_vkSetEvent;
5607 }
5608 if (!strcmp(name, "vkResetEvent"))
5609 {
5610 return (void*)entry_vkResetEvent;
5611 }
5612 if (!strcmp(name, "vkCreateQueryPool"))
5613 {
5614 return (void*)entry_vkCreateQueryPool;
5615 }
5616 if (!strcmp(name, "vkDestroyQueryPool"))
5617 {
5618 return (void*)entry_vkDestroyQueryPool;
5619 }
5620 if (!strcmp(name, "vkGetQueryPoolResults"))
5621 {
5622 return (void*)entry_vkGetQueryPoolResults;
5623 }
5624 if (!strcmp(name, "vkCreateBuffer"))
5625 {
5626 return (void*)entry_vkCreateBuffer;
5627 }
5628 if (!strcmp(name, "vkDestroyBuffer"))
5629 {
5630 return (void*)entry_vkDestroyBuffer;
5631 }
5632 if (!strcmp(name, "vkCreateBufferView"))
5633 {
5634 return (void*)entry_vkCreateBufferView;
5635 }
5636 if (!strcmp(name, "vkDestroyBufferView"))
5637 {
5638 return (void*)entry_vkDestroyBufferView;
5639 }
5640 if (!strcmp(name, "vkCreateImage"))
5641 {
5642 return (void*)entry_vkCreateImage;
5643 }
5644 if (!strcmp(name, "vkDestroyImage"))
5645 {
5646 return (void*)entry_vkDestroyImage;
5647 }
5648 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5649 {
5650 return (void*)entry_vkGetImageSubresourceLayout;
5651 }
5652 if (!strcmp(name, "vkCreateImageView"))
5653 {
5654 return (void*)entry_vkCreateImageView;
5655 }
5656 if (!strcmp(name, "vkDestroyImageView"))
5657 {
5658 return (void*)entry_vkDestroyImageView;
5659 }
5660 if (!strcmp(name, "vkCreateShaderModule"))
5661 {
5662 return (void*)entry_vkCreateShaderModule;
5663 }
5664 if (!strcmp(name, "vkDestroyShaderModule"))
5665 {
5666 return (void*)entry_vkDestroyShaderModule;
5667 }
5668 if (!strcmp(name, "vkCreatePipelineCache"))
5669 {
5670 return (void*)entry_vkCreatePipelineCache;
5671 }
5672 if (!strcmp(name, "vkDestroyPipelineCache"))
5673 {
5674 return (void*)entry_vkDestroyPipelineCache;
5675 }
5676 if (!strcmp(name, "vkGetPipelineCacheData"))
5677 {
5678 return (void*)entry_vkGetPipelineCacheData;
5679 }
5680 if (!strcmp(name, "vkMergePipelineCaches"))
5681 {
5682 return (void*)entry_vkMergePipelineCaches;
5683 }
5684 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5685 {
5686 return (void*)entry_vkCreateGraphicsPipelines;
5687 }
5688 if (!strcmp(name, "vkCreateComputePipelines"))
5689 {
5690 return (void*)entry_vkCreateComputePipelines;
5691 }
5692 if (!strcmp(name, "vkDestroyPipeline"))
5693 {
5694 return (void*)entry_vkDestroyPipeline;
5695 }
5696 if (!strcmp(name, "vkCreatePipelineLayout"))
5697 {
5698 return (void*)entry_vkCreatePipelineLayout;
5699 }
5700 if (!strcmp(name, "vkDestroyPipelineLayout"))
5701 {
5702 return (void*)entry_vkDestroyPipelineLayout;
5703 }
5704 if (!strcmp(name, "vkCreateSampler"))
5705 {
5706 return (void*)entry_vkCreateSampler;
5707 }
5708 if (!strcmp(name, "vkDestroySampler"))
5709 {
5710 return (void*)entry_vkDestroySampler;
5711 }
5712 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5713 {
5714 return (void*)entry_vkCreateDescriptorSetLayout;
5715 }
5716 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5717 {
5718 return (void*)entry_vkDestroyDescriptorSetLayout;
5719 }
5720 if (!strcmp(name, "vkCreateDescriptorPool"))
5721 {
5722 return (void*)entry_vkCreateDescriptorPool;
5723 }
5724 if (!strcmp(name, "vkDestroyDescriptorPool"))
5725 {
5726 return (void*)entry_vkDestroyDescriptorPool;
5727 }
5728 if (!strcmp(name, "vkResetDescriptorPool"))
5729 {
5730 return (void*)entry_vkResetDescriptorPool;
5731 }
5732 if (!strcmp(name, "vkAllocateDescriptorSets"))
5733 {
5734 return (void*)entry_vkAllocateDescriptorSets;
5735 }
5736 if (!strcmp(name, "vkFreeDescriptorSets"))
5737 {
5738 return (void*)entry_vkFreeDescriptorSets;
5739 }
5740 if (!strcmp(name, "vkUpdateDescriptorSets"))
5741 {
5742 return (void*)entry_vkUpdateDescriptorSets;
5743 }
5744 if (!strcmp(name, "vkCreateFramebuffer"))
5745 {
5746 return (void*)entry_vkCreateFramebuffer;
5747 }
5748 if (!strcmp(name, "vkDestroyFramebuffer"))
5749 {
5750 return (void*)entry_vkDestroyFramebuffer;
5751 }
5752 if (!strcmp(name, "vkCreateRenderPass"))
5753 {
5754 return (void*)entry_vkCreateRenderPass;
5755 }
5756 if (!strcmp(name, "vkDestroyRenderPass"))
5757 {
5758 return (void*)entry_vkDestroyRenderPass;
5759 }
5760 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5761 {
5762 return (void*)entry_vkGetRenderAreaGranularity;
5763 }
5764 if (!strcmp(name, "vkCreateCommandPool"))
5765 {
5766 return (void*)entry_vkCreateCommandPool;
5767 }
5768 if (!strcmp(name, "vkDestroyCommandPool"))
5769 {
5770 return (void*)entry_vkDestroyCommandPool;
5771 }
5772 if (!strcmp(name, "vkResetCommandPool"))
5773 {
5774 return (void*)entry_vkResetCommandPool;
5775 }
5776 if (!strcmp(name, "vkAllocateCommandBuffers"))
5777 {
5778 return (void*)entry_vkAllocateCommandBuffers;
5779 }
5780 if (!strcmp(name, "vkFreeCommandBuffers"))
5781 {
5782 return (void*)entry_vkFreeCommandBuffers;
5783 }
5784 if (!strcmp(name, "vkBeginCommandBuffer"))
5785 {
5786 return (void*)entry_vkBeginCommandBuffer;
5787 }
5788 if (!strcmp(name, "vkEndCommandBuffer"))
5789 {
5790 return (void*)entry_vkEndCommandBuffer;
5791 }
5792 if (!strcmp(name, "vkResetCommandBuffer"))
5793 {
5794 return (void*)entry_vkResetCommandBuffer;
5795 }
5796 if (!strcmp(name, "vkCmdBindPipeline"))
5797 {
5798 return (void*)entry_vkCmdBindPipeline;
5799 }
5800 if (!strcmp(name, "vkCmdSetViewport"))
5801 {
5802 return (void*)entry_vkCmdSetViewport;
5803 }
5804 if (!strcmp(name, "vkCmdSetScissor"))
5805 {
5806 return (void*)entry_vkCmdSetScissor;
5807 }
5808 if (!strcmp(name, "vkCmdSetLineWidth"))
5809 {
5810 return (void*)entry_vkCmdSetLineWidth;
5811 }
5812 if (!strcmp(name, "vkCmdSetDepthBias"))
5813 {
5814 return (void*)entry_vkCmdSetDepthBias;
5815 }
5816 if (!strcmp(name, "vkCmdSetBlendConstants"))
5817 {
5818 return (void*)entry_vkCmdSetBlendConstants;
5819 }
5820 if (!strcmp(name, "vkCmdSetDepthBounds"))
5821 {
5822 return (void*)entry_vkCmdSetDepthBounds;
5823 }
5824 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5825 {
5826 return (void*)entry_vkCmdSetStencilCompareMask;
5827 }
5828 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5829 {
5830 return (void*)entry_vkCmdSetStencilWriteMask;
5831 }
5832 if (!strcmp(name, "vkCmdSetStencilReference"))
5833 {
5834 return (void*)entry_vkCmdSetStencilReference;
5835 }
5836 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5837 {
5838 return (void*)entry_vkCmdBindDescriptorSets;
5839 }
5840 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5841 {
5842 return (void*)entry_vkCmdBindIndexBuffer;
5843 }
5844 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5845 {
5846 return (void*)entry_vkCmdBindVertexBuffers;
5847 }
5848 if (!strcmp(name, "vkCmdDraw"))
5849 {
5850 return (void*)entry_vkCmdDraw;
5851 }
5852 if (!strcmp(name, "vkCmdDrawIndexed"))
5853 {
5854 return (void*)entry_vkCmdDrawIndexed;
5855 }
5856 if (!strcmp(name, "vkCmdDrawIndirect"))
5857 {
5858 return (void*)entry_vkCmdDrawIndirect;
5859 }
5860 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5861 {
5862 return (void*)entry_vkCmdDrawIndexedIndirect;
5863 }
5864 if (!strcmp(name, "vkCmdDispatch"))
5865 {
5866 return (void*)entry_vkCmdDispatch;
5867 }
5868 if (!strcmp(name, "vkCmdDispatchIndirect"))
5869 {
5870 return (void*)entry_vkCmdDispatchIndirect;
5871 }
5872 if (!strcmp(name, "vkCmdCopyBuffer"))
5873 {
5874 return (void*)entry_vkCmdCopyBuffer;
5875 }
5876 if (!strcmp(name, "vkCmdCopyImage"))
5877 {
5878 return (void*)entry_vkCmdCopyImage;
5879 }
5880 if (!strcmp(name, "vkCmdBlitImage"))
5881 {
5882 return (void*)entry_vkCmdBlitImage;
5883 }
5884 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5885 {
5886 return (void*)entry_vkCmdCopyBufferToImage;
5887 }
5888 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5889 {
5890 return (void*)entry_vkCmdCopyImageToBuffer;
5891 }
5892 if (!strcmp(name, "vkCmdUpdateBuffer"))
5893 {
5894 return (void*)entry_vkCmdUpdateBuffer;
5895 }
5896 if (!strcmp(name, "vkCmdFillBuffer"))
5897 {
5898 return (void*)entry_vkCmdFillBuffer;
5899 }
5900 if (!strcmp(name, "vkCmdClearColorImage"))
5901 {
5902 return (void*)entry_vkCmdClearColorImage;
5903 }
5904 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5905 {
5906 return (void*)entry_vkCmdClearDepthStencilImage;
5907 }
5908 if (!strcmp(name, "vkCmdClearAttachments"))
5909 {
5910 return (void*)entry_vkCmdClearAttachments;
5911 }
5912 if (!strcmp(name, "vkCmdResolveImage"))
5913 {
5914 return (void*)entry_vkCmdResolveImage;
5915 }
5916 if (!strcmp(name, "vkCmdSetEvent"))
5917 {
5918 return (void*)entry_vkCmdSetEvent;
5919 }
5920 if (!strcmp(name, "vkCmdResetEvent"))
5921 {
5922 return (void*)entry_vkCmdResetEvent;
5923 }
5924 if (!strcmp(name, "vkCmdWaitEvents"))
5925 {
5926 return (void*)entry_vkCmdWaitEvents;
5927 }
5928 if (!strcmp(name, "vkCmdPipelineBarrier"))
5929 {
5930 return (void*)entry_vkCmdPipelineBarrier;
5931 }
5932 if (!strcmp(name, "vkCmdBeginQuery"))
5933 {
5934 return (void*)entry_vkCmdBeginQuery;
5935 }
5936 if (!strcmp(name, "vkCmdEndQuery"))
5937 {
5938 return (void*)entry_vkCmdEndQuery;
5939 }
5940 if (!strcmp(name, "vkCmdResetQueryPool"))
5941 {
5942 return (void*)entry_vkCmdResetQueryPool;
5943 }
5944 if (!strcmp(name, "vkCmdWriteTimestamp"))
5945 {
5946 return (void*)entry_vkCmdWriteTimestamp;
5947 }
5948 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5949 {
5950 return (void*)entry_vkCmdCopyQueryPoolResults;
5951 }
5952 if (!strcmp(name, "vkCmdPushConstants"))
5953 {
5954 return (void*)entry_vkCmdPushConstants;
5955 }
5956 if (!strcmp(name, "vkCmdBeginRenderPass"))
5957 {
5958 return (void*)entry_vkCmdBeginRenderPass;
5959 }
5960 if (!strcmp(name, "vkCmdNextSubpass"))
5961 {
5962 return (void*)entry_vkCmdNextSubpass;
5963 }
5964 if (!strcmp(name, "vkCmdEndRenderPass"))
5965 {
5966 return (void*)entry_vkCmdEndRenderPass;
5967 }
5968 if (!strcmp(name, "vkCmdExecuteCommands"))
5969 {
5970 return (void*)entry_vkCmdExecuteCommands;
5971 }
5972#endif
5973#ifdef VK_VERSION_1_1
5974 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5975 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005976 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005977 }
5978 if (!strcmp(name, "vkBindBufferMemory2"))
5979 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005980 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005981 }
5982 if (!strcmp(name, "vkBindImageMemory2"))
5983 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005984 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005985 }
5986 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5987 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005988 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005989 }
5990 if (!strcmp(name, "vkCmdSetDeviceMask"))
5991 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005992 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005993 }
5994 if (!strcmp(name, "vkCmdDispatchBase"))
5995 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005996 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005997 }
5998 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5999 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08006000 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006001 }
6002 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
6003 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006004 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006005 }
6006 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
6007 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006008 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006009 }
6010 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
6011 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006012 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006013 }
6014 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
6015 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006016 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006017 }
6018 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
6019 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006020 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006021 }
6022 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
6023 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006024 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006025 }
6026 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
6027 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006028 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006029 }
6030 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
6031 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006032 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006033 }
6034 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
6035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006037 }
6038 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
6039 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006040 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006041 }
6042 if (!strcmp(name, "vkTrimCommandPool"))
6043 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006044 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006045 }
6046 if (!strcmp(name, "vkGetDeviceQueue2"))
6047 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006048 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006049 }
6050 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
6051 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006052 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006053 }
6054 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
6055 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006056 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006057 }
6058 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
6059 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006060 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006061 }
6062 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
6063 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006064 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006065 }
6066 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
6067 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006068 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006069 }
6070 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
6071 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006072 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006073 }
6074 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
6075 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006076 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006077 }
6078 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
6079 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006080 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006081 }
6082 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
6083 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006084 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006085 }
6086#endif
6087#ifdef VK_KHR_surface
6088 if (!strcmp(name, "vkDestroySurfaceKHR"))
6089 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006090 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006091 }
6092 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
6093 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006094 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006095 }
6096 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6097 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006098 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006099 }
6100 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6101 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006102 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006103 }
6104 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6105 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006106 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006107 }
6108#endif
6109#ifdef VK_KHR_swapchain
6110 if (!strcmp(name, "vkCreateSwapchainKHR"))
6111 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006112 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006113 }
6114 if (!strcmp(name, "vkDestroySwapchainKHR"))
6115 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006116 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006117 }
6118 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6119 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006120 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006121 }
6122 if (!strcmp(name, "vkAcquireNextImageKHR"))
6123 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006124 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006125 }
6126 if (!strcmp(name, "vkQueuePresentKHR"))
6127 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006128 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006129 }
6130 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6131 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006132 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006133 }
6134 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6135 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006136 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006137 }
6138 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6139 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006140 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006141 }
6142 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6143 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006144 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006145 }
6146#endif
6147#ifdef VK_KHR_display
6148 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6149 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006150 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006151 }
6152 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6153 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006154 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006155 }
6156 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6157 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006158 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006159 }
6160 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6161 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006162 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006163 }
6164 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6165 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006166 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006167 }
6168 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6169 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006170 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006171 }
6172 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6173 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006174 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006175 }
6176#endif
6177#ifdef VK_KHR_display_swapchain
6178 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6179 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006180 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006181 }
6182#endif
6183#ifdef VK_KHR_xlib_surface
6184 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6185 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006186 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006187 }
6188 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6189 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006190 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006191 }
6192#endif
6193#ifdef VK_KHR_xcb_surface
6194 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6195 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006196 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006197 }
6198 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6199 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006200 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006201 }
6202#endif
6203#ifdef VK_KHR_wayland_surface
6204 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6205 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006206 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006207 }
6208 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6209 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006210 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006211 }
6212#endif
6213#ifdef VK_KHR_mir_surface
6214 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6215 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006216 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006217 }
6218 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6219 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006220 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006221 }
6222#endif
6223#ifdef VK_KHR_android_surface
6224 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6225 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006226 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006227 }
6228#endif
6229#ifdef VK_KHR_win32_surface
6230 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6231 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006232 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006233 }
6234 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6235 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006236 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006237 }
6238#endif
6239#ifdef VK_KHR_get_physical_device_properties2
6240 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6241 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006242 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006243 }
6244 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6245 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006246 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006247 }
6248 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6249 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006250 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006251 }
6252 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6253 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006254 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006255 }
6256 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6257 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006258 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006259 }
6260 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6261 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006262 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006263 }
6264 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6265 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006266 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006267 }
6268#endif
6269#ifdef VK_KHR_device_group
6270 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6271 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006272 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006273 }
6274 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6275 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006276 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006277 }
6278 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6279 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006280 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006281 }
6282#endif
6283#ifdef VK_KHR_maintenance1
6284 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6285 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006286 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006287 }
6288#endif
6289#ifdef VK_KHR_device_group_creation
6290 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6291 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006292 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006293 }
6294#endif
6295#ifdef VK_KHR_external_memory_capabilities
6296 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6297 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006298 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006299 }
6300#endif
6301#ifdef VK_KHR_external_memory_win32
6302 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6303 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006304 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006305 }
6306 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6307 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006308 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006309 }
6310#endif
6311#ifdef VK_KHR_external_memory_fd
6312 if (!strcmp(name, "vkGetMemoryFdKHR"))
6313 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006314 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006315 }
6316 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6317 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006318 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006319 }
6320#endif
6321#ifdef VK_KHR_external_semaphore_capabilities
6322 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6323 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006324 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006325 }
6326#endif
6327#ifdef VK_KHR_external_semaphore_win32
6328 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6329 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006330 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006331 }
6332 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6333 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006334 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006335 }
6336#endif
6337#ifdef VK_KHR_external_semaphore_fd
6338 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6339 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006340 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006341 }
6342 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6343 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006344 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006345 }
6346#endif
6347#ifdef VK_KHR_push_descriptor
6348 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6349 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006350 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006351 }
6352 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6353 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006354 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006355 }
6356#endif
6357#ifdef VK_KHR_descriptor_update_template
6358 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6359 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006360 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006361 }
6362 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6363 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006364 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006365 }
6366 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6367 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006368 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006369 }
6370#endif
6371#ifdef VK_KHR_create_renderpass2
6372 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6373 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006374 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006375 }
6376 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6377 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006378 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006379 }
6380 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6381 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006382 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006383 }
6384 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6385 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006386 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006387 }
6388#endif
6389#ifdef VK_KHR_shared_presentable_image
6390 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6391 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006392 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006393 }
6394#endif
6395#ifdef VK_KHR_external_fence_capabilities
6396 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6397 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006398 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006399 }
6400#endif
6401#ifdef VK_KHR_external_fence_win32
6402 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6403 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006404 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006405 }
6406 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6407 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006408 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006409 }
6410#endif
6411#ifdef VK_KHR_external_fence_fd
6412 if (!strcmp(name, "vkImportFenceFdKHR"))
6413 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006414 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006415 }
6416 if (!strcmp(name, "vkGetFenceFdKHR"))
6417 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006418 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006419 }
6420#endif
6421#ifdef VK_KHR_get_surface_capabilities2
6422 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6423 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006424 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006425 }
6426 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6427 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006428 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006429 }
6430#endif
6431#ifdef VK_KHR_get_display_properties2
6432 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6433 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006434 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006435 }
6436 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6437 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006438 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006439 }
6440 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6441 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006442 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006443 }
6444 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6445 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006446 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006447 }
6448#endif
6449#ifdef VK_KHR_get_memory_requirements2
6450 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6451 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006452 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006453 }
6454 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6455 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006456 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006457 }
6458 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6459 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006460 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006461 }
6462#endif
6463#ifdef VK_KHR_sampler_ycbcr_conversion
6464 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6465 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006466 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006467 }
6468 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006471 }
6472#endif
6473#ifdef VK_KHR_bind_memory2
6474 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6475 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006476 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006477 }
6478 if (!strcmp(name, "vkBindImageMemory2KHR"))
6479 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006480 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006481 }
6482#endif
6483#ifdef VK_KHR_maintenance3
6484 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6485 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006486 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006487 }
6488#endif
6489#ifdef VK_KHR_draw_indirect_count
6490 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6491 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006492 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006493 }
6494 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6495 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006496 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006497 }
6498#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006499#ifdef VK_ANDROID_native_buffer
6500 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006502 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006503 }
6504 if (!strcmp(name, "vkAcquireImageANDROID"))
6505 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006506 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006507 }
6508 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6509 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006510 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006511 }
6512#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006513#ifdef VK_EXT_debug_report
6514 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6515 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006516 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006517 }
6518 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6519 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006520 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006521 }
6522 if (!strcmp(name, "vkDebugReportMessageEXT"))
6523 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006524 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006525 }
6526#endif
6527#ifdef VK_EXT_debug_marker
6528 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6529 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006530 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006531 }
6532 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6533 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006534 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006535 }
6536 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6537 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006538 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006539 }
6540 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006543 }
6544 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006547 }
6548#endif
6549#ifdef VK_AMD_draw_indirect_count
6550 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6551 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006552 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006553 }
6554 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6555 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006556 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006557 }
6558#endif
6559#ifdef VK_AMD_shader_info
6560 if (!strcmp(name, "vkGetShaderInfoAMD"))
6561 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006562 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006563 }
6564#endif
6565#ifdef VK_NV_external_memory_capabilities
6566 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6567 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006568 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006569 }
6570#endif
6571#ifdef VK_NV_external_memory_win32
6572 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6573 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006574 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006575 }
6576#endif
6577#ifdef VK_NN_vi_surface
6578 if (!strcmp(name, "vkCreateViSurfaceNN"))
6579 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006580 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006581 }
6582#endif
6583#ifdef VK_EXT_conditional_rendering
6584 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6585 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006586 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006587 }
6588 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6589 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006590 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006591 }
6592#endif
6593#ifdef VK_NVX_device_generated_commands
6594 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6595 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006596 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006597 }
6598 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6599 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006600 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006601 }
6602 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6603 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006604 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006605 }
6606 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6607 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006608 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006609 }
6610 if (!strcmp(name, "vkCreateObjectTableNVX"))
6611 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006612 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006613 }
6614 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6615 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006616 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006617 }
6618 if (!strcmp(name, "vkRegisterObjectsNVX"))
6619 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006620 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006621 }
6622 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6623 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006624 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006625 }
6626 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6627 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006628 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006629 }
6630#endif
6631#ifdef VK_NV_clip_space_w_scaling
6632 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6633 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006634 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006635 }
6636#endif
6637#ifdef VK_EXT_direct_mode_display
6638 if (!strcmp(name, "vkReleaseDisplayEXT"))
6639 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006640 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006641 }
6642#endif
6643#ifdef VK_EXT_acquire_xlib_display
6644 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6645 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006646 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006647 }
6648 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6649 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006650 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006651 }
6652#endif
6653#ifdef VK_EXT_display_surface_counter
6654 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6655 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006656 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006657 }
6658#endif
6659#ifdef VK_EXT_display_control
6660 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6661 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006662 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006663 }
6664 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6665 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006666 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006667 }
6668 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6669 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006670 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006671 }
6672 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6673 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006674 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006675 }
6676#endif
6677#ifdef VK_GOOGLE_display_timing
6678 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6679 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006680 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006681 }
6682 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6683 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006684 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006685 }
6686#endif
6687#ifdef VK_EXT_discard_rectangles
6688 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6689 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006690 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006691 }
6692#endif
6693#ifdef VK_EXT_hdr_metadata
6694 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6695 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006696 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006697 }
6698#endif
6699#ifdef VK_MVK_ios_surface
6700 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6701 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006702 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006703 }
6704#endif
6705#ifdef VK_MVK_macos_surface
6706 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6707 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006708 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006709 }
6710#endif
6711#ifdef VK_EXT_debug_utils
6712 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6713 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006714 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006715 }
6716 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6717 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006718 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006719 }
6720 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6721 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006722 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006723 }
6724 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6725 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006726 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006727 }
6728 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6729 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006730 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006731 }
6732 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6733 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006734 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006735 }
6736 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6737 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006738 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006739 }
6740 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6741 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006742 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006743 }
6744 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6745 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006746 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006747 }
6748 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6749 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006750 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006751 }
6752 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6753 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006754 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006755 }
6756#endif
6757#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6758 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6759 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006760 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006761 }
6762 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6763 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006764 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006765 }
6766#endif
6767#ifdef VK_EXT_sample_locations
6768 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6769 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006770 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006771 }
6772 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6773 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006774 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006775 }
6776#endif
6777#ifdef VK_EXT_validation_cache
6778 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6779 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006780 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006781 }
6782 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6783 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006784 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006785 }
6786 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6787 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006788 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006789 }
6790 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6791 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006792 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006793 }
6794#endif
6795#ifdef VK_EXT_external_memory_host
6796 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6797 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006798 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006799 }
6800#endif
6801#ifdef VK_AMD_buffer_marker
6802 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6803 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006804 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006805 }
6806#endif
6807#ifdef VK_NV_device_diagnostic_checkpoints
6808 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6809 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006810 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006811 }
6812 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6813 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006814 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006815 }
6816#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006817#ifdef VK_GOOGLE_address_space
6818 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6819 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006820 return nullptr;
6821 }
6822#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006823#ifdef VK_GOOGLE_color_buffer
6824 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6825 {
6826 return nullptr;
6827 }
6828 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6829 {
6830 return nullptr;
6831 }
6832#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006833#ifdef VK_GOOGLE_sized_descriptor_update_template
6834 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6835 {
6836 return nullptr;
6837 }
6838#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006839#ifdef VK_GOOGLE_async_command_buffers
6840 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6841 {
6842 return nullptr;
6843 }
6844 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6845 {
6846 return nullptr;
6847 }
6848 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6849 {
6850 return nullptr;
6851 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006852 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6853 {
6854 return nullptr;
6855 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006856#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006857#ifdef VK_GOOGLE_create_resources_with_requirements
6858 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6859 {
6860 return nullptr;
6861 }
6862 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6863 {
6864 return nullptr;
6865 }
6866#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006867#ifdef VK_GOOGLE_address_space_info
6868 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6869 {
6870 return nullptr;
6871 }
6872#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006873#ifdef VK_GOOGLE_free_memory_sync
6874 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6875 {
6876 return nullptr;
6877 }
6878#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07006879#ifdef VK_GOOGLE_async_queue_submit
6880 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
6881 {
6882 return nullptr;
6883 }
6884 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
6885 {
6886 return nullptr;
6887 }
6888 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
6889 {
6890 return nullptr;
6891 }
6892 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
6893 {
6894 return nullptr;
6895 }
6896#endif
Yilong Lia48b0102020-09-15 15:08:28 -07006897#ifdef VK_GOOGLE_linear_image_layout
6898 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
6899 {
6900 return nullptr;
6901 }
6902#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08006903#ifdef VK_MVK_moltenvk
6904 if (!strcmp(name, "vkGetMTLDeviceMVK"))
6905 {
6906 return nullptr;
6907 }
6908 if (!strcmp(name, "vkSetMTLTextureMVK"))
6909 {
6910 return nullptr;
6911 }
6912 if (!strcmp(name, "vkGetMTLTextureMVK"))
6913 {
6914 return nullptr;
6915 }
6916 if (!strcmp(name, "vkGetMTLBufferMVK"))
6917 {
6918 return nullptr;
6919 }
6920 if (!strcmp(name, "vkUseIOSurfaceMVK"))
6921 {
6922 return nullptr;
6923 }
6924 if (!strcmp(name, "vkGetIOSurfaceMVK"))
6925 {
6926 return nullptr;
6927 }
6928#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006929 return nullptr;
6930}
6931void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6932 auto resources = ResourceTracker::get();
6933 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6934#ifdef VK_VERSION_1_0
6935 if (!strcmp(name, "vkCreateInstance"))
6936 {
6937 return (void*)entry_vkCreateInstance;
6938 }
6939 if (!strcmp(name, "vkDestroyInstance"))
6940 {
6941 return (void*)entry_vkDestroyInstance;
6942 }
6943 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6944 {
6945 return (void*)entry_vkEnumeratePhysicalDevices;
6946 }
6947 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6948 {
6949 return (void*)entry_vkGetPhysicalDeviceFeatures;
6950 }
6951 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6952 {
6953 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6954 }
6955 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6956 {
6957 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6958 }
6959 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6960 {
6961 return (void*)entry_vkGetPhysicalDeviceProperties;
6962 }
6963 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6964 {
6965 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6966 }
6967 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6968 {
6969 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6970 }
6971 if (!strcmp(name, "vkGetInstanceProcAddr"))
6972 {
6973 return (void*)entry_vkGetInstanceProcAddr;
6974 }
6975 if (!strcmp(name, "vkGetDeviceProcAddr"))
6976 {
6977 return (void*)entry_vkGetDeviceProcAddr;
6978 }
6979 if (!strcmp(name, "vkCreateDevice"))
6980 {
6981 return (void*)entry_vkCreateDevice;
6982 }
6983 if (!strcmp(name, "vkDestroyDevice"))
6984 {
6985 return (void*)entry_vkDestroyDevice;
6986 }
6987 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6988 {
6989 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6990 }
6991 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6992 {
6993 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6994 }
6995 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6996 {
6997 return (void*)entry_vkEnumerateInstanceLayerProperties;
6998 }
6999 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
7000 {
7001 return (void*)entry_vkEnumerateDeviceLayerProperties;
7002 }
7003 if (!strcmp(name, "vkGetDeviceQueue"))
7004 {
7005 return (void*)entry_vkGetDeviceQueue;
7006 }
7007 if (!strcmp(name, "vkQueueSubmit"))
7008 {
7009 return (void*)entry_vkQueueSubmit;
7010 }
7011 if (!strcmp(name, "vkQueueWaitIdle"))
7012 {
7013 return (void*)entry_vkQueueWaitIdle;
7014 }
7015 if (!strcmp(name, "vkDeviceWaitIdle"))
7016 {
7017 return (void*)entry_vkDeviceWaitIdle;
7018 }
7019 if (!strcmp(name, "vkAllocateMemory"))
7020 {
7021 return (void*)entry_vkAllocateMemory;
7022 }
7023 if (!strcmp(name, "vkFreeMemory"))
7024 {
7025 return (void*)entry_vkFreeMemory;
7026 }
7027 if (!strcmp(name, "vkMapMemory"))
7028 {
7029 return (void*)entry_vkMapMemory;
7030 }
7031 if (!strcmp(name, "vkUnmapMemory"))
7032 {
7033 return (void*)entry_vkUnmapMemory;
7034 }
7035 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
7036 {
7037 return (void*)entry_vkFlushMappedMemoryRanges;
7038 }
7039 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
7040 {
7041 return (void*)entry_vkInvalidateMappedMemoryRanges;
7042 }
7043 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
7044 {
7045 return (void*)entry_vkGetDeviceMemoryCommitment;
7046 }
7047 if (!strcmp(name, "vkBindBufferMemory"))
7048 {
7049 return (void*)entry_vkBindBufferMemory;
7050 }
7051 if (!strcmp(name, "vkBindImageMemory"))
7052 {
7053 return (void*)entry_vkBindImageMemory;
7054 }
7055 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
7056 {
7057 return (void*)entry_vkGetBufferMemoryRequirements;
7058 }
7059 if (!strcmp(name, "vkGetImageMemoryRequirements"))
7060 {
7061 return (void*)entry_vkGetImageMemoryRequirements;
7062 }
7063 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
7064 {
7065 return (void*)entry_vkGetImageSparseMemoryRequirements;
7066 }
7067 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
7068 {
7069 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
7070 }
7071 if (!strcmp(name, "vkQueueBindSparse"))
7072 {
7073 return (void*)entry_vkQueueBindSparse;
7074 }
7075 if (!strcmp(name, "vkCreateFence"))
7076 {
7077 return (void*)entry_vkCreateFence;
7078 }
7079 if (!strcmp(name, "vkDestroyFence"))
7080 {
7081 return (void*)entry_vkDestroyFence;
7082 }
7083 if (!strcmp(name, "vkResetFences"))
7084 {
7085 return (void*)entry_vkResetFences;
7086 }
7087 if (!strcmp(name, "vkGetFenceStatus"))
7088 {
7089 return (void*)entry_vkGetFenceStatus;
7090 }
7091 if (!strcmp(name, "vkWaitForFences"))
7092 {
7093 return (void*)entry_vkWaitForFences;
7094 }
7095 if (!strcmp(name, "vkCreateSemaphore"))
7096 {
7097 return (void*)entry_vkCreateSemaphore;
7098 }
7099 if (!strcmp(name, "vkDestroySemaphore"))
7100 {
7101 return (void*)entry_vkDestroySemaphore;
7102 }
7103 if (!strcmp(name, "vkCreateEvent"))
7104 {
7105 return (void*)entry_vkCreateEvent;
7106 }
7107 if (!strcmp(name, "vkDestroyEvent"))
7108 {
7109 return (void*)entry_vkDestroyEvent;
7110 }
7111 if (!strcmp(name, "vkGetEventStatus"))
7112 {
7113 return (void*)entry_vkGetEventStatus;
7114 }
7115 if (!strcmp(name, "vkSetEvent"))
7116 {
7117 return (void*)entry_vkSetEvent;
7118 }
7119 if (!strcmp(name, "vkResetEvent"))
7120 {
7121 return (void*)entry_vkResetEvent;
7122 }
7123 if (!strcmp(name, "vkCreateQueryPool"))
7124 {
7125 return (void*)entry_vkCreateQueryPool;
7126 }
7127 if (!strcmp(name, "vkDestroyQueryPool"))
7128 {
7129 return (void*)entry_vkDestroyQueryPool;
7130 }
7131 if (!strcmp(name, "vkGetQueryPoolResults"))
7132 {
7133 return (void*)entry_vkGetQueryPoolResults;
7134 }
7135 if (!strcmp(name, "vkCreateBuffer"))
7136 {
7137 return (void*)entry_vkCreateBuffer;
7138 }
7139 if (!strcmp(name, "vkDestroyBuffer"))
7140 {
7141 return (void*)entry_vkDestroyBuffer;
7142 }
7143 if (!strcmp(name, "vkCreateBufferView"))
7144 {
7145 return (void*)entry_vkCreateBufferView;
7146 }
7147 if (!strcmp(name, "vkDestroyBufferView"))
7148 {
7149 return (void*)entry_vkDestroyBufferView;
7150 }
7151 if (!strcmp(name, "vkCreateImage"))
7152 {
7153 return (void*)entry_vkCreateImage;
7154 }
7155 if (!strcmp(name, "vkDestroyImage"))
7156 {
7157 return (void*)entry_vkDestroyImage;
7158 }
7159 if (!strcmp(name, "vkGetImageSubresourceLayout"))
7160 {
7161 return (void*)entry_vkGetImageSubresourceLayout;
7162 }
7163 if (!strcmp(name, "vkCreateImageView"))
7164 {
7165 return (void*)entry_vkCreateImageView;
7166 }
7167 if (!strcmp(name, "vkDestroyImageView"))
7168 {
7169 return (void*)entry_vkDestroyImageView;
7170 }
7171 if (!strcmp(name, "vkCreateShaderModule"))
7172 {
7173 return (void*)entry_vkCreateShaderModule;
7174 }
7175 if (!strcmp(name, "vkDestroyShaderModule"))
7176 {
7177 return (void*)entry_vkDestroyShaderModule;
7178 }
7179 if (!strcmp(name, "vkCreatePipelineCache"))
7180 {
7181 return (void*)entry_vkCreatePipelineCache;
7182 }
7183 if (!strcmp(name, "vkDestroyPipelineCache"))
7184 {
7185 return (void*)entry_vkDestroyPipelineCache;
7186 }
7187 if (!strcmp(name, "vkGetPipelineCacheData"))
7188 {
7189 return (void*)entry_vkGetPipelineCacheData;
7190 }
7191 if (!strcmp(name, "vkMergePipelineCaches"))
7192 {
7193 return (void*)entry_vkMergePipelineCaches;
7194 }
7195 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7196 {
7197 return (void*)entry_vkCreateGraphicsPipelines;
7198 }
7199 if (!strcmp(name, "vkCreateComputePipelines"))
7200 {
7201 return (void*)entry_vkCreateComputePipelines;
7202 }
7203 if (!strcmp(name, "vkDestroyPipeline"))
7204 {
7205 return (void*)entry_vkDestroyPipeline;
7206 }
7207 if (!strcmp(name, "vkCreatePipelineLayout"))
7208 {
7209 return (void*)entry_vkCreatePipelineLayout;
7210 }
7211 if (!strcmp(name, "vkDestroyPipelineLayout"))
7212 {
7213 return (void*)entry_vkDestroyPipelineLayout;
7214 }
7215 if (!strcmp(name, "vkCreateSampler"))
7216 {
7217 return (void*)entry_vkCreateSampler;
7218 }
7219 if (!strcmp(name, "vkDestroySampler"))
7220 {
7221 return (void*)entry_vkDestroySampler;
7222 }
7223 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7224 {
7225 return (void*)entry_vkCreateDescriptorSetLayout;
7226 }
7227 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7228 {
7229 return (void*)entry_vkDestroyDescriptorSetLayout;
7230 }
7231 if (!strcmp(name, "vkCreateDescriptorPool"))
7232 {
7233 return (void*)entry_vkCreateDescriptorPool;
7234 }
7235 if (!strcmp(name, "vkDestroyDescriptorPool"))
7236 {
7237 return (void*)entry_vkDestroyDescriptorPool;
7238 }
7239 if (!strcmp(name, "vkResetDescriptorPool"))
7240 {
7241 return (void*)entry_vkResetDescriptorPool;
7242 }
7243 if (!strcmp(name, "vkAllocateDescriptorSets"))
7244 {
7245 return (void*)entry_vkAllocateDescriptorSets;
7246 }
7247 if (!strcmp(name, "vkFreeDescriptorSets"))
7248 {
7249 return (void*)entry_vkFreeDescriptorSets;
7250 }
7251 if (!strcmp(name, "vkUpdateDescriptorSets"))
7252 {
7253 return (void*)entry_vkUpdateDescriptorSets;
7254 }
7255 if (!strcmp(name, "vkCreateFramebuffer"))
7256 {
7257 return (void*)entry_vkCreateFramebuffer;
7258 }
7259 if (!strcmp(name, "vkDestroyFramebuffer"))
7260 {
7261 return (void*)entry_vkDestroyFramebuffer;
7262 }
7263 if (!strcmp(name, "vkCreateRenderPass"))
7264 {
7265 return (void*)entry_vkCreateRenderPass;
7266 }
7267 if (!strcmp(name, "vkDestroyRenderPass"))
7268 {
7269 return (void*)entry_vkDestroyRenderPass;
7270 }
7271 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7272 {
7273 return (void*)entry_vkGetRenderAreaGranularity;
7274 }
7275 if (!strcmp(name, "vkCreateCommandPool"))
7276 {
7277 return (void*)entry_vkCreateCommandPool;
7278 }
7279 if (!strcmp(name, "vkDestroyCommandPool"))
7280 {
7281 return (void*)entry_vkDestroyCommandPool;
7282 }
7283 if (!strcmp(name, "vkResetCommandPool"))
7284 {
7285 return (void*)entry_vkResetCommandPool;
7286 }
7287 if (!strcmp(name, "vkAllocateCommandBuffers"))
7288 {
7289 return (void*)entry_vkAllocateCommandBuffers;
7290 }
7291 if (!strcmp(name, "vkFreeCommandBuffers"))
7292 {
7293 return (void*)entry_vkFreeCommandBuffers;
7294 }
7295 if (!strcmp(name, "vkBeginCommandBuffer"))
7296 {
7297 return (void*)entry_vkBeginCommandBuffer;
7298 }
7299 if (!strcmp(name, "vkEndCommandBuffer"))
7300 {
7301 return (void*)entry_vkEndCommandBuffer;
7302 }
7303 if (!strcmp(name, "vkResetCommandBuffer"))
7304 {
7305 return (void*)entry_vkResetCommandBuffer;
7306 }
7307 if (!strcmp(name, "vkCmdBindPipeline"))
7308 {
7309 return (void*)entry_vkCmdBindPipeline;
7310 }
7311 if (!strcmp(name, "vkCmdSetViewport"))
7312 {
7313 return (void*)entry_vkCmdSetViewport;
7314 }
7315 if (!strcmp(name, "vkCmdSetScissor"))
7316 {
7317 return (void*)entry_vkCmdSetScissor;
7318 }
7319 if (!strcmp(name, "vkCmdSetLineWidth"))
7320 {
7321 return (void*)entry_vkCmdSetLineWidth;
7322 }
7323 if (!strcmp(name, "vkCmdSetDepthBias"))
7324 {
7325 return (void*)entry_vkCmdSetDepthBias;
7326 }
7327 if (!strcmp(name, "vkCmdSetBlendConstants"))
7328 {
7329 return (void*)entry_vkCmdSetBlendConstants;
7330 }
7331 if (!strcmp(name, "vkCmdSetDepthBounds"))
7332 {
7333 return (void*)entry_vkCmdSetDepthBounds;
7334 }
7335 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7336 {
7337 return (void*)entry_vkCmdSetStencilCompareMask;
7338 }
7339 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7340 {
7341 return (void*)entry_vkCmdSetStencilWriteMask;
7342 }
7343 if (!strcmp(name, "vkCmdSetStencilReference"))
7344 {
7345 return (void*)entry_vkCmdSetStencilReference;
7346 }
7347 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7348 {
7349 return (void*)entry_vkCmdBindDescriptorSets;
7350 }
7351 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7352 {
7353 return (void*)entry_vkCmdBindIndexBuffer;
7354 }
7355 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7356 {
7357 return (void*)entry_vkCmdBindVertexBuffers;
7358 }
7359 if (!strcmp(name, "vkCmdDraw"))
7360 {
7361 return (void*)entry_vkCmdDraw;
7362 }
7363 if (!strcmp(name, "vkCmdDrawIndexed"))
7364 {
7365 return (void*)entry_vkCmdDrawIndexed;
7366 }
7367 if (!strcmp(name, "vkCmdDrawIndirect"))
7368 {
7369 return (void*)entry_vkCmdDrawIndirect;
7370 }
7371 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7372 {
7373 return (void*)entry_vkCmdDrawIndexedIndirect;
7374 }
7375 if (!strcmp(name, "vkCmdDispatch"))
7376 {
7377 return (void*)entry_vkCmdDispatch;
7378 }
7379 if (!strcmp(name, "vkCmdDispatchIndirect"))
7380 {
7381 return (void*)entry_vkCmdDispatchIndirect;
7382 }
7383 if (!strcmp(name, "vkCmdCopyBuffer"))
7384 {
7385 return (void*)entry_vkCmdCopyBuffer;
7386 }
7387 if (!strcmp(name, "vkCmdCopyImage"))
7388 {
7389 return (void*)entry_vkCmdCopyImage;
7390 }
7391 if (!strcmp(name, "vkCmdBlitImage"))
7392 {
7393 return (void*)entry_vkCmdBlitImage;
7394 }
7395 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7396 {
7397 return (void*)entry_vkCmdCopyBufferToImage;
7398 }
7399 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7400 {
7401 return (void*)entry_vkCmdCopyImageToBuffer;
7402 }
7403 if (!strcmp(name, "vkCmdUpdateBuffer"))
7404 {
7405 return (void*)entry_vkCmdUpdateBuffer;
7406 }
7407 if (!strcmp(name, "vkCmdFillBuffer"))
7408 {
7409 return (void*)entry_vkCmdFillBuffer;
7410 }
7411 if (!strcmp(name, "vkCmdClearColorImage"))
7412 {
7413 return (void*)entry_vkCmdClearColorImage;
7414 }
7415 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7416 {
7417 return (void*)entry_vkCmdClearDepthStencilImage;
7418 }
7419 if (!strcmp(name, "vkCmdClearAttachments"))
7420 {
7421 return (void*)entry_vkCmdClearAttachments;
7422 }
7423 if (!strcmp(name, "vkCmdResolveImage"))
7424 {
7425 return (void*)entry_vkCmdResolveImage;
7426 }
7427 if (!strcmp(name, "vkCmdSetEvent"))
7428 {
7429 return (void*)entry_vkCmdSetEvent;
7430 }
7431 if (!strcmp(name, "vkCmdResetEvent"))
7432 {
7433 return (void*)entry_vkCmdResetEvent;
7434 }
7435 if (!strcmp(name, "vkCmdWaitEvents"))
7436 {
7437 return (void*)entry_vkCmdWaitEvents;
7438 }
7439 if (!strcmp(name, "vkCmdPipelineBarrier"))
7440 {
7441 return (void*)entry_vkCmdPipelineBarrier;
7442 }
7443 if (!strcmp(name, "vkCmdBeginQuery"))
7444 {
7445 return (void*)entry_vkCmdBeginQuery;
7446 }
7447 if (!strcmp(name, "vkCmdEndQuery"))
7448 {
7449 return (void*)entry_vkCmdEndQuery;
7450 }
7451 if (!strcmp(name, "vkCmdResetQueryPool"))
7452 {
7453 return (void*)entry_vkCmdResetQueryPool;
7454 }
7455 if (!strcmp(name, "vkCmdWriteTimestamp"))
7456 {
7457 return (void*)entry_vkCmdWriteTimestamp;
7458 }
7459 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7460 {
7461 return (void*)entry_vkCmdCopyQueryPoolResults;
7462 }
7463 if (!strcmp(name, "vkCmdPushConstants"))
7464 {
7465 return (void*)entry_vkCmdPushConstants;
7466 }
7467 if (!strcmp(name, "vkCmdBeginRenderPass"))
7468 {
7469 return (void*)entry_vkCmdBeginRenderPass;
7470 }
7471 if (!strcmp(name, "vkCmdNextSubpass"))
7472 {
7473 return (void*)entry_vkCmdNextSubpass;
7474 }
7475 if (!strcmp(name, "vkCmdEndRenderPass"))
7476 {
7477 return (void*)entry_vkCmdEndRenderPass;
7478 }
7479 if (!strcmp(name, "vkCmdExecuteCommands"))
7480 {
7481 return (void*)entry_vkCmdExecuteCommands;
7482 }
7483#endif
7484#ifdef VK_VERSION_1_1
7485 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7486 {
7487 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7488 }
7489 if (!strcmp(name, "vkBindBufferMemory2"))
7490 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007491 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007492 }
7493 if (!strcmp(name, "vkBindImageMemory2"))
7494 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007495 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007496 }
7497 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7498 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007499 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007500 }
7501 if (!strcmp(name, "vkCmdSetDeviceMask"))
7502 {
7503 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7504 }
7505 if (!strcmp(name, "vkCmdDispatchBase"))
7506 {
7507 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7508 }
7509 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7510 {
7511 return nullptr;
7512 }
7513 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7514 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007515 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007516 }
7517 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7518 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007519 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007520 }
7521 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7522 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007523 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007524 }
7525 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7526 {
7527 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7528 }
7529 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7530 {
7531 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7532 }
7533 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7534 {
7535 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7536 }
7537 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7538 {
7539 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7540 }
7541 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7542 {
7543 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7544 }
7545 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7546 {
7547 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7548 }
7549 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7550 {
7551 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7552 }
7553 if (!strcmp(name, "vkTrimCommandPool"))
7554 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007555 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007556 }
7557 if (!strcmp(name, "vkGetDeviceQueue2"))
7558 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007559 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007560 }
7561 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7562 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007563 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007564 }
7565 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7566 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007567 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007568 }
7569 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7570 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007571 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007572 }
7573 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7574 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007575 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007576 }
7577 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7578 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007579 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007580 }
7581 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7582 {
7583 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7584 }
7585 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7586 {
7587 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7588 }
7589 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7590 {
7591 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7592 }
7593 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7594 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007595 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007596 }
7597#endif
7598#ifdef VK_KHR_surface
7599 if (!strcmp(name, "vkDestroySurfaceKHR"))
7600 {
7601 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7602 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7603 }
7604 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7605 {
7606 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7607 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7608 }
7609 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7610 {
7611 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7612 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7613 }
7614 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7615 {
7616 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7617 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7618 }
7619 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7620 {
7621 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7622 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7623 }
7624#endif
7625#ifdef VK_KHR_swapchain
7626 if (!strcmp(name, "vkCreateSwapchainKHR"))
7627 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007628 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007629 }
7630 if (!strcmp(name, "vkDestroySwapchainKHR"))
7631 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007632 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007633 }
7634 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7635 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007636 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007637 }
7638 if (!strcmp(name, "vkAcquireNextImageKHR"))
7639 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007640 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007641 }
7642 if (!strcmp(name, "vkQueuePresentKHR"))
7643 {
7644 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7645 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7646 }
7647 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7648 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007649 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007650 }
7651 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7652 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007653 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007654 }
7655 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7656 {
7657 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7658 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7659 }
7660 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7661 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007662 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007663 }
7664#endif
7665#ifdef VK_KHR_display
7666 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7667 {
7668 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7669 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7670 }
7671 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7672 {
7673 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7674 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7675 }
7676 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7677 {
7678 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7679 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7680 }
7681 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7682 {
7683 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7684 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7685 }
7686 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7687 {
7688 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7689 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7690 }
7691 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7692 {
7693 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7694 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7695 }
7696 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7697 {
7698 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7699 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7700 }
7701#endif
7702#ifdef VK_KHR_display_swapchain
7703 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7704 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007705 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007706 }
7707#endif
7708#ifdef VK_KHR_xlib_surface
7709 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7710 {
7711 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7712 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7713 }
7714 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7715 {
7716 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7717 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7718 }
7719#endif
7720#ifdef VK_KHR_xcb_surface
7721 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7722 {
7723 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7724 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7725 }
7726 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7727 {
7728 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7729 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7730 }
7731#endif
7732#ifdef VK_KHR_wayland_surface
7733 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7734 {
7735 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7736 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7737 }
7738 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7739 {
7740 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7741 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7742 }
7743#endif
7744#ifdef VK_KHR_mir_surface
7745 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7746 {
7747 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7748 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7749 }
7750 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7751 {
7752 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7753 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7754 }
7755#endif
7756#ifdef VK_KHR_android_surface
7757 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7758 {
7759 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7760 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7761 }
7762#endif
7763#ifdef VK_KHR_win32_surface
7764 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7765 {
7766 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7767 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7768 }
7769 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7770 {
7771 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7772 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7773 }
7774#endif
7775#ifdef VK_KHR_get_physical_device_properties2
7776 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7777 {
7778 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7779 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7780 }
7781 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7782 {
7783 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7784 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7785 }
7786 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7787 {
7788 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7789 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7790 }
7791 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7792 {
7793 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7794 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7795 }
7796 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7797 {
7798 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7799 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7800 }
7801 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7802 {
7803 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7804 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7805 }
7806 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7807 {
7808 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7809 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7810 }
7811#endif
7812#ifdef VK_KHR_device_group
7813 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7814 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007815 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007816 }
7817 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7818 {
7819 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7820 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7821 }
7822 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7823 {
7824 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7825 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7826 }
7827#endif
7828#ifdef VK_KHR_maintenance1
7829 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7830 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007831 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007832 }
7833#endif
7834#ifdef VK_KHR_device_group_creation
7835 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7836 {
7837 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7838 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7839 }
7840#endif
7841#ifdef VK_KHR_external_memory_capabilities
7842 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7843 {
7844 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7845 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7846 }
7847#endif
7848#ifdef VK_KHR_external_memory_win32
7849 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7850 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007851 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007852 }
7853 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7854 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007855 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007856 }
7857#endif
7858#ifdef VK_KHR_external_memory_fd
7859 if (!strcmp(name, "vkGetMemoryFdKHR"))
7860 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007861 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007862 }
7863 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7864 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007865 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007866 }
7867#endif
7868#ifdef VK_KHR_external_semaphore_capabilities
7869 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7870 {
7871 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7872 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7873 }
7874#endif
7875#ifdef VK_KHR_external_semaphore_win32
7876 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7877 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007878 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007879 }
7880 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7881 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007882 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007883 }
7884#endif
7885#ifdef VK_KHR_external_semaphore_fd
7886 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7887 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007888 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007889 }
7890 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7891 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007892 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007893 }
7894#endif
7895#ifdef VK_KHR_push_descriptor
7896 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7897 {
7898 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7899 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7900 }
7901 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7902 {
7903 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7904 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7905 }
7906#endif
7907#ifdef VK_KHR_descriptor_update_template
7908 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7909 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007910 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007911 }
7912 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7913 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007914 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007915 }
7916 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7917 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007918 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007919 }
7920#endif
7921#ifdef VK_KHR_create_renderpass2
7922 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7923 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007924 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007925 }
7926 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7927 {
7928 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7929 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7930 }
7931 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7932 {
7933 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7934 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7935 }
7936 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7937 {
7938 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7939 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7940 }
7941#endif
7942#ifdef VK_KHR_shared_presentable_image
7943 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7944 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007945 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007946 }
7947#endif
7948#ifdef VK_KHR_external_fence_capabilities
7949 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7950 {
7951 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7952 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7953 }
7954#endif
7955#ifdef VK_KHR_external_fence_win32
7956 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7957 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007958 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007959 }
7960 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7961 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007962 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007963 }
7964#endif
7965#ifdef VK_KHR_external_fence_fd
7966 if (!strcmp(name, "vkImportFenceFdKHR"))
7967 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007968 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007969 }
7970 if (!strcmp(name, "vkGetFenceFdKHR"))
7971 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007972 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007973 }
7974#endif
7975#ifdef VK_KHR_get_surface_capabilities2
7976 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7977 {
7978 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7979 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7980 }
7981 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7982 {
7983 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7984 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7985 }
7986#endif
7987#ifdef VK_KHR_get_display_properties2
7988 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7989 {
7990 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7991 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7992 }
7993 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7994 {
7995 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7996 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7997 }
7998 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7999 {
8000 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
8001 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
8002 }
8003 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
8004 {
8005 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
8006 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
8007 }
8008#endif
8009#ifdef VK_KHR_get_memory_requirements2
8010 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
8011 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008012 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008013 }
8014 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
8015 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008016 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008017 }
8018 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
8019 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008020 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008021 }
8022#endif
8023#ifdef VK_KHR_sampler_ycbcr_conversion
8024 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
8025 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008026 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008027 }
8028 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
8029 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008030 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008031 }
8032#endif
8033#ifdef VK_KHR_bind_memory2
8034 if (!strcmp(name, "vkBindBufferMemory2KHR"))
8035 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008036 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008037 }
8038 if (!strcmp(name, "vkBindImageMemory2KHR"))
8039 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008040 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008041 }
8042#endif
8043#ifdef VK_KHR_maintenance3
8044 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
8045 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008046 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008047 }
8048#endif
8049#ifdef VK_KHR_draw_indirect_count
8050 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
8051 {
8052 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
8053 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
8054 }
8055 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
8056 {
8057 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
8058 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
8059 }
8060#endif
8061#ifdef VK_ANDROID_native_buffer
8062 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
8063 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008064 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008065 }
8066 if (!strcmp(name, "vkAcquireImageANDROID"))
8067 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008068 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008069 }
8070 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
8071 {
8072 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
8073 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
8074 }
8075#endif
8076#ifdef VK_EXT_debug_report
8077 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
8078 {
8079 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8080 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
8081 }
8082 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
8083 {
8084 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8085 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
8086 }
8087 if (!strcmp(name, "vkDebugReportMessageEXT"))
8088 {
8089 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8090 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
8091 }
8092#endif
8093#ifdef VK_EXT_debug_marker
8094 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
8095 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008096 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008097 }
8098 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
8099 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008100 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008101 }
8102 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
8103 {
8104 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8105 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
8106 }
8107 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
8108 {
8109 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8110 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
8111 }
8112 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8113 {
8114 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8115 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8116 }
8117#endif
8118#ifdef VK_AMD_draw_indirect_count
8119 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8120 {
8121 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8122 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8123 }
8124 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8125 {
8126 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8127 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8128 }
8129#endif
8130#ifdef VK_AMD_shader_info
8131 if (!strcmp(name, "vkGetShaderInfoAMD"))
8132 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008133 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008134 }
8135#endif
8136#ifdef VK_NV_external_memory_capabilities
8137 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8138 {
8139 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
8140 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8141 }
8142#endif
8143#ifdef VK_NV_external_memory_win32
8144 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8145 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008146 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008147 }
8148#endif
8149#ifdef VK_NN_vi_surface
8150 if (!strcmp(name, "vkCreateViSurfaceNN"))
8151 {
8152 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
8153 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8154 }
8155#endif
8156#ifdef VK_EXT_conditional_rendering
8157 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8158 {
8159 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8160 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8161 }
8162 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8163 {
8164 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8165 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8166 }
8167#endif
8168#ifdef VK_NVX_device_generated_commands
8169 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8170 {
8171 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8172 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8173 }
8174 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8175 {
8176 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8177 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8178 }
8179 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8180 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008181 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008182 }
8183 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8184 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008185 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008186 }
8187 if (!strcmp(name, "vkCreateObjectTableNVX"))
8188 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008189 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008190 }
8191 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8192 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008193 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008194 }
8195 if (!strcmp(name, "vkRegisterObjectsNVX"))
8196 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008197 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008198 }
8199 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8200 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008201 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008202 }
8203 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8204 {
8205 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8206 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8207 }
8208#endif
8209#ifdef VK_NV_clip_space_w_scaling
8210 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8211 {
8212 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8213 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8214 }
8215#endif
8216#ifdef VK_EXT_direct_mode_display
8217 if (!strcmp(name, "vkReleaseDisplayEXT"))
8218 {
8219 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8220 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8221 }
8222#endif
8223#ifdef VK_EXT_acquire_xlib_display
8224 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8225 {
8226 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8227 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8228 }
8229 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8230 {
8231 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8232 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8233 }
8234#endif
8235#ifdef VK_EXT_display_surface_counter
8236 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8237 {
8238 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8239 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8240 }
8241#endif
8242#ifdef VK_EXT_display_control
8243 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8244 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008245 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008246 }
8247 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8248 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008249 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008250 }
8251 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8252 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008253 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008254 }
8255 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8256 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008257 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008258 }
8259#endif
8260#ifdef VK_GOOGLE_display_timing
8261 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8262 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008263 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008264 }
8265 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8266 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008267 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008268 }
8269#endif
8270#ifdef VK_EXT_discard_rectangles
8271 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8272 {
8273 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8274 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8275 }
8276#endif
8277#ifdef VK_EXT_hdr_metadata
8278 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8279 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008280 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008281 }
8282#endif
8283#ifdef VK_MVK_ios_surface
8284 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8285 {
8286 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8287 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8288 }
8289#endif
8290#ifdef VK_MVK_macos_surface
8291 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8292 {
8293 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8294 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8295 }
8296#endif
8297#ifdef VK_EXT_debug_utils
8298 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8299 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008300 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008301 }
8302 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8303 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008304 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008305 }
8306 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8307 {
8308 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8309 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8310 }
8311 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8312 {
8313 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8314 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8315 }
8316 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8317 {
8318 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8319 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8320 }
8321 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8322 {
8323 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8324 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8325 }
8326 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8327 {
8328 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8329 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8330 }
8331 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8332 {
8333 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8334 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8335 }
8336 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8337 {
8338 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8339 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8340 }
8341 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8342 {
8343 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8344 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8345 }
8346 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8347 {
8348 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8349 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8350 }
8351#endif
8352#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8353 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8354 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008355 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008356 }
8357 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8358 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008359 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008360 }
8361#endif
8362#ifdef VK_EXT_sample_locations
8363 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8364 {
8365 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8366 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8367 }
8368 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8369 {
8370 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8371 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8372 }
8373#endif
8374#ifdef VK_EXT_validation_cache
8375 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8376 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008377 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008378 }
8379 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8380 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008381 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008382 }
8383 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8384 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008385 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008386 }
8387 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8388 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008389 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008390 }
8391#endif
8392#ifdef VK_EXT_external_memory_host
8393 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8394 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008395 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008396 }
8397#endif
8398#ifdef VK_AMD_buffer_marker
8399 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8400 {
8401 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8402 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8403 }
8404#endif
8405#ifdef VK_NV_device_diagnostic_checkpoints
8406 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8407 {
8408 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8409 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8410 }
8411 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8412 {
8413 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8414 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8415 }
8416#endif
8417#ifdef VK_GOOGLE_address_space
8418 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8419 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008420 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008421 }
8422#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008423#ifdef VK_GOOGLE_color_buffer
8424 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8425 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008426 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008427 }
8428 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8429 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008430 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008431 }
8432#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008433#ifdef VK_GOOGLE_sized_descriptor_update_template
8434 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8435 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008436 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008437 }
8438#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008439#ifdef VK_GOOGLE_async_command_buffers
8440 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8441 {
8442 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8443 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8444 }
8445 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8446 {
8447 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8448 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8449 }
8450 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8451 {
8452 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8453 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8454 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008455 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8456 {
8457 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8458 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8459 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008460#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008461#ifdef VK_GOOGLE_create_resources_with_requirements
8462 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8463 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008464 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008465 }
8466 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8467 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008468 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008469 }
8470#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008471#ifdef VK_GOOGLE_address_space_info
8472 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8473 {
8474 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8475 }
8476#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008477#ifdef VK_GOOGLE_free_memory_sync
8478 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8479 {
8480 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8481 }
8482#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008483#ifdef VK_GOOGLE_async_queue_submit
8484 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
8485 {
8486 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8487 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
8488 }
8489 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
8490 {
8491 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8492 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
8493 }
8494 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
8495 {
8496 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8497 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
8498 }
8499 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
8500 {
8501 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8502 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
8503 }
8504#endif
Yilong Lia48b0102020-09-15 15:08:28 -07008505#ifdef VK_GOOGLE_linear_image_layout
8506 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
8507 {
8508 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
8509 }
8510#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -08008511#ifdef VK_MVK_moltenvk
8512 if (!strcmp(name, "vkGetMTLDeviceMVK"))
8513 {
8514 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8515 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
8516 }
8517 if (!strcmp(name, "vkSetMTLTextureMVK"))
8518 {
8519 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8520 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
8521 }
8522 if (!strcmp(name, "vkGetMTLTextureMVK"))
8523 {
8524 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8525 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
8526 }
8527 if (!strcmp(name, "vkGetMTLBufferMVK"))
8528 {
8529 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8530 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
8531 }
8532 if (!strcmp(name, "vkUseIOSurfaceMVK"))
8533 {
8534 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8535 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
8536 }
8537 if (!strcmp(name, "vkGetIOSurfaceMVK"))
8538 {
8539 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
8540 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
8541 }
8542#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008543 return nullptr;
8544}
8545void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8546 auto resources = ResourceTracker::get();
8547 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8548#ifdef VK_VERSION_1_0
8549 if (!strcmp(name, "vkCreateInstance"))
8550 {
8551 return (void*)entry_vkCreateInstance;
8552 }
8553 if (!strcmp(name, "vkDestroyInstance"))
8554 {
8555 return (void*)entry_vkDestroyInstance;
8556 }
8557 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8558 {
8559 return (void*)entry_vkEnumeratePhysicalDevices;
8560 }
8561 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8562 {
8563 return (void*)entry_vkGetPhysicalDeviceFeatures;
8564 }
8565 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8566 {
8567 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8568 }
8569 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8570 {
8571 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8572 }
8573 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8574 {
8575 return (void*)entry_vkGetPhysicalDeviceProperties;
8576 }
8577 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8578 {
8579 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8580 }
8581 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8582 {
8583 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8584 }
8585 if (!strcmp(name, "vkGetInstanceProcAddr"))
8586 {
8587 return (void*)entry_vkGetInstanceProcAddr;
8588 }
8589 if (!strcmp(name, "vkGetDeviceProcAddr"))
8590 {
8591 return (void*)entry_vkGetDeviceProcAddr;
8592 }
8593 if (!strcmp(name, "vkCreateDevice"))
8594 {
8595 return (void*)entry_vkCreateDevice;
8596 }
8597 if (!strcmp(name, "vkDestroyDevice"))
8598 {
8599 return (void*)entry_vkDestroyDevice;
8600 }
8601 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8602 {
8603 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8604 }
8605 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8606 {
8607 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8608 }
8609 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8610 {
8611 return (void*)entry_vkEnumerateInstanceLayerProperties;
8612 }
8613 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8614 {
8615 return (void*)entry_vkEnumerateDeviceLayerProperties;
8616 }
8617 if (!strcmp(name, "vkGetDeviceQueue"))
8618 {
8619 return (void*)entry_vkGetDeviceQueue;
8620 }
8621 if (!strcmp(name, "vkQueueSubmit"))
8622 {
8623 return (void*)entry_vkQueueSubmit;
8624 }
8625 if (!strcmp(name, "vkQueueWaitIdle"))
8626 {
8627 return (void*)entry_vkQueueWaitIdle;
8628 }
8629 if (!strcmp(name, "vkDeviceWaitIdle"))
8630 {
8631 return (void*)entry_vkDeviceWaitIdle;
8632 }
8633 if (!strcmp(name, "vkAllocateMemory"))
8634 {
8635 return (void*)entry_vkAllocateMemory;
8636 }
8637 if (!strcmp(name, "vkFreeMemory"))
8638 {
8639 return (void*)entry_vkFreeMemory;
8640 }
8641 if (!strcmp(name, "vkMapMemory"))
8642 {
8643 return (void*)entry_vkMapMemory;
8644 }
8645 if (!strcmp(name, "vkUnmapMemory"))
8646 {
8647 return (void*)entry_vkUnmapMemory;
8648 }
8649 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8650 {
8651 return (void*)entry_vkFlushMappedMemoryRanges;
8652 }
8653 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8654 {
8655 return (void*)entry_vkInvalidateMappedMemoryRanges;
8656 }
8657 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8658 {
8659 return (void*)entry_vkGetDeviceMemoryCommitment;
8660 }
8661 if (!strcmp(name, "vkBindBufferMemory"))
8662 {
8663 return (void*)entry_vkBindBufferMemory;
8664 }
8665 if (!strcmp(name, "vkBindImageMemory"))
8666 {
8667 return (void*)entry_vkBindImageMemory;
8668 }
8669 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8670 {
8671 return (void*)entry_vkGetBufferMemoryRequirements;
8672 }
8673 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8674 {
8675 return (void*)entry_vkGetImageMemoryRequirements;
8676 }
8677 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8678 {
8679 return (void*)entry_vkGetImageSparseMemoryRequirements;
8680 }
8681 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8682 {
8683 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8684 }
8685 if (!strcmp(name, "vkQueueBindSparse"))
8686 {
8687 return (void*)entry_vkQueueBindSparse;
8688 }
8689 if (!strcmp(name, "vkCreateFence"))
8690 {
8691 return (void*)entry_vkCreateFence;
8692 }
8693 if (!strcmp(name, "vkDestroyFence"))
8694 {
8695 return (void*)entry_vkDestroyFence;
8696 }
8697 if (!strcmp(name, "vkResetFences"))
8698 {
8699 return (void*)entry_vkResetFences;
8700 }
8701 if (!strcmp(name, "vkGetFenceStatus"))
8702 {
8703 return (void*)entry_vkGetFenceStatus;
8704 }
8705 if (!strcmp(name, "vkWaitForFences"))
8706 {
8707 return (void*)entry_vkWaitForFences;
8708 }
8709 if (!strcmp(name, "vkCreateSemaphore"))
8710 {
8711 return (void*)entry_vkCreateSemaphore;
8712 }
8713 if (!strcmp(name, "vkDestroySemaphore"))
8714 {
8715 return (void*)entry_vkDestroySemaphore;
8716 }
8717 if (!strcmp(name, "vkCreateEvent"))
8718 {
8719 return (void*)entry_vkCreateEvent;
8720 }
8721 if (!strcmp(name, "vkDestroyEvent"))
8722 {
8723 return (void*)entry_vkDestroyEvent;
8724 }
8725 if (!strcmp(name, "vkGetEventStatus"))
8726 {
8727 return (void*)entry_vkGetEventStatus;
8728 }
8729 if (!strcmp(name, "vkSetEvent"))
8730 {
8731 return (void*)entry_vkSetEvent;
8732 }
8733 if (!strcmp(name, "vkResetEvent"))
8734 {
8735 return (void*)entry_vkResetEvent;
8736 }
8737 if (!strcmp(name, "vkCreateQueryPool"))
8738 {
8739 return (void*)entry_vkCreateQueryPool;
8740 }
8741 if (!strcmp(name, "vkDestroyQueryPool"))
8742 {
8743 return (void*)entry_vkDestroyQueryPool;
8744 }
8745 if (!strcmp(name, "vkGetQueryPoolResults"))
8746 {
8747 return (void*)entry_vkGetQueryPoolResults;
8748 }
8749 if (!strcmp(name, "vkCreateBuffer"))
8750 {
8751 return (void*)entry_vkCreateBuffer;
8752 }
8753 if (!strcmp(name, "vkDestroyBuffer"))
8754 {
8755 return (void*)entry_vkDestroyBuffer;
8756 }
8757 if (!strcmp(name, "vkCreateBufferView"))
8758 {
8759 return (void*)entry_vkCreateBufferView;
8760 }
8761 if (!strcmp(name, "vkDestroyBufferView"))
8762 {
8763 return (void*)entry_vkDestroyBufferView;
8764 }
8765 if (!strcmp(name, "vkCreateImage"))
8766 {
8767 return (void*)entry_vkCreateImage;
8768 }
8769 if (!strcmp(name, "vkDestroyImage"))
8770 {
8771 return (void*)entry_vkDestroyImage;
8772 }
8773 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8774 {
8775 return (void*)entry_vkGetImageSubresourceLayout;
8776 }
8777 if (!strcmp(name, "vkCreateImageView"))
8778 {
8779 return (void*)entry_vkCreateImageView;
8780 }
8781 if (!strcmp(name, "vkDestroyImageView"))
8782 {
8783 return (void*)entry_vkDestroyImageView;
8784 }
8785 if (!strcmp(name, "vkCreateShaderModule"))
8786 {
8787 return (void*)entry_vkCreateShaderModule;
8788 }
8789 if (!strcmp(name, "vkDestroyShaderModule"))
8790 {
8791 return (void*)entry_vkDestroyShaderModule;
8792 }
8793 if (!strcmp(name, "vkCreatePipelineCache"))
8794 {
8795 return (void*)entry_vkCreatePipelineCache;
8796 }
8797 if (!strcmp(name, "vkDestroyPipelineCache"))
8798 {
8799 return (void*)entry_vkDestroyPipelineCache;
8800 }
8801 if (!strcmp(name, "vkGetPipelineCacheData"))
8802 {
8803 return (void*)entry_vkGetPipelineCacheData;
8804 }
8805 if (!strcmp(name, "vkMergePipelineCaches"))
8806 {
8807 return (void*)entry_vkMergePipelineCaches;
8808 }
8809 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8810 {
8811 return (void*)entry_vkCreateGraphicsPipelines;
8812 }
8813 if (!strcmp(name, "vkCreateComputePipelines"))
8814 {
8815 return (void*)entry_vkCreateComputePipelines;
8816 }
8817 if (!strcmp(name, "vkDestroyPipeline"))
8818 {
8819 return (void*)entry_vkDestroyPipeline;
8820 }
8821 if (!strcmp(name, "vkCreatePipelineLayout"))
8822 {
8823 return (void*)entry_vkCreatePipelineLayout;
8824 }
8825 if (!strcmp(name, "vkDestroyPipelineLayout"))
8826 {
8827 return (void*)entry_vkDestroyPipelineLayout;
8828 }
8829 if (!strcmp(name, "vkCreateSampler"))
8830 {
8831 return (void*)entry_vkCreateSampler;
8832 }
8833 if (!strcmp(name, "vkDestroySampler"))
8834 {
8835 return (void*)entry_vkDestroySampler;
8836 }
8837 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8838 {
8839 return (void*)entry_vkCreateDescriptorSetLayout;
8840 }
8841 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8842 {
8843 return (void*)entry_vkDestroyDescriptorSetLayout;
8844 }
8845 if (!strcmp(name, "vkCreateDescriptorPool"))
8846 {
8847 return (void*)entry_vkCreateDescriptorPool;
8848 }
8849 if (!strcmp(name, "vkDestroyDescriptorPool"))
8850 {
8851 return (void*)entry_vkDestroyDescriptorPool;
8852 }
8853 if (!strcmp(name, "vkResetDescriptorPool"))
8854 {
8855 return (void*)entry_vkResetDescriptorPool;
8856 }
8857 if (!strcmp(name, "vkAllocateDescriptorSets"))
8858 {
8859 return (void*)entry_vkAllocateDescriptorSets;
8860 }
8861 if (!strcmp(name, "vkFreeDescriptorSets"))
8862 {
8863 return (void*)entry_vkFreeDescriptorSets;
8864 }
8865 if (!strcmp(name, "vkUpdateDescriptorSets"))
8866 {
8867 return (void*)entry_vkUpdateDescriptorSets;
8868 }
8869 if (!strcmp(name, "vkCreateFramebuffer"))
8870 {
8871 return (void*)entry_vkCreateFramebuffer;
8872 }
8873 if (!strcmp(name, "vkDestroyFramebuffer"))
8874 {
8875 return (void*)entry_vkDestroyFramebuffer;
8876 }
8877 if (!strcmp(name, "vkCreateRenderPass"))
8878 {
8879 return (void*)entry_vkCreateRenderPass;
8880 }
8881 if (!strcmp(name, "vkDestroyRenderPass"))
8882 {
8883 return (void*)entry_vkDestroyRenderPass;
8884 }
8885 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8886 {
8887 return (void*)entry_vkGetRenderAreaGranularity;
8888 }
8889 if (!strcmp(name, "vkCreateCommandPool"))
8890 {
8891 return (void*)entry_vkCreateCommandPool;
8892 }
8893 if (!strcmp(name, "vkDestroyCommandPool"))
8894 {
8895 return (void*)entry_vkDestroyCommandPool;
8896 }
8897 if (!strcmp(name, "vkResetCommandPool"))
8898 {
8899 return (void*)entry_vkResetCommandPool;
8900 }
8901 if (!strcmp(name, "vkAllocateCommandBuffers"))
8902 {
8903 return (void*)entry_vkAllocateCommandBuffers;
8904 }
8905 if (!strcmp(name, "vkFreeCommandBuffers"))
8906 {
8907 return (void*)entry_vkFreeCommandBuffers;
8908 }
8909 if (!strcmp(name, "vkBeginCommandBuffer"))
8910 {
8911 return (void*)entry_vkBeginCommandBuffer;
8912 }
8913 if (!strcmp(name, "vkEndCommandBuffer"))
8914 {
8915 return (void*)entry_vkEndCommandBuffer;
8916 }
8917 if (!strcmp(name, "vkResetCommandBuffer"))
8918 {
8919 return (void*)entry_vkResetCommandBuffer;
8920 }
8921 if (!strcmp(name, "vkCmdBindPipeline"))
8922 {
8923 return (void*)entry_vkCmdBindPipeline;
8924 }
8925 if (!strcmp(name, "vkCmdSetViewport"))
8926 {
8927 return (void*)entry_vkCmdSetViewport;
8928 }
8929 if (!strcmp(name, "vkCmdSetScissor"))
8930 {
8931 return (void*)entry_vkCmdSetScissor;
8932 }
8933 if (!strcmp(name, "vkCmdSetLineWidth"))
8934 {
8935 return (void*)entry_vkCmdSetLineWidth;
8936 }
8937 if (!strcmp(name, "vkCmdSetDepthBias"))
8938 {
8939 return (void*)entry_vkCmdSetDepthBias;
8940 }
8941 if (!strcmp(name, "vkCmdSetBlendConstants"))
8942 {
8943 return (void*)entry_vkCmdSetBlendConstants;
8944 }
8945 if (!strcmp(name, "vkCmdSetDepthBounds"))
8946 {
8947 return (void*)entry_vkCmdSetDepthBounds;
8948 }
8949 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8950 {
8951 return (void*)entry_vkCmdSetStencilCompareMask;
8952 }
8953 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8954 {
8955 return (void*)entry_vkCmdSetStencilWriteMask;
8956 }
8957 if (!strcmp(name, "vkCmdSetStencilReference"))
8958 {
8959 return (void*)entry_vkCmdSetStencilReference;
8960 }
8961 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8962 {
8963 return (void*)entry_vkCmdBindDescriptorSets;
8964 }
8965 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8966 {
8967 return (void*)entry_vkCmdBindIndexBuffer;
8968 }
8969 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8970 {
8971 return (void*)entry_vkCmdBindVertexBuffers;
8972 }
8973 if (!strcmp(name, "vkCmdDraw"))
8974 {
8975 return (void*)entry_vkCmdDraw;
8976 }
8977 if (!strcmp(name, "vkCmdDrawIndexed"))
8978 {
8979 return (void*)entry_vkCmdDrawIndexed;
8980 }
8981 if (!strcmp(name, "vkCmdDrawIndirect"))
8982 {
8983 return (void*)entry_vkCmdDrawIndirect;
8984 }
8985 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8986 {
8987 return (void*)entry_vkCmdDrawIndexedIndirect;
8988 }
8989 if (!strcmp(name, "vkCmdDispatch"))
8990 {
8991 return (void*)entry_vkCmdDispatch;
8992 }
8993 if (!strcmp(name, "vkCmdDispatchIndirect"))
8994 {
8995 return (void*)entry_vkCmdDispatchIndirect;
8996 }
8997 if (!strcmp(name, "vkCmdCopyBuffer"))
8998 {
8999 return (void*)entry_vkCmdCopyBuffer;
9000 }
9001 if (!strcmp(name, "vkCmdCopyImage"))
9002 {
9003 return (void*)entry_vkCmdCopyImage;
9004 }
9005 if (!strcmp(name, "vkCmdBlitImage"))
9006 {
9007 return (void*)entry_vkCmdBlitImage;
9008 }
9009 if (!strcmp(name, "vkCmdCopyBufferToImage"))
9010 {
9011 return (void*)entry_vkCmdCopyBufferToImage;
9012 }
9013 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
9014 {
9015 return (void*)entry_vkCmdCopyImageToBuffer;
9016 }
9017 if (!strcmp(name, "vkCmdUpdateBuffer"))
9018 {
9019 return (void*)entry_vkCmdUpdateBuffer;
9020 }
9021 if (!strcmp(name, "vkCmdFillBuffer"))
9022 {
9023 return (void*)entry_vkCmdFillBuffer;
9024 }
9025 if (!strcmp(name, "vkCmdClearColorImage"))
9026 {
9027 return (void*)entry_vkCmdClearColorImage;
9028 }
9029 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
9030 {
9031 return (void*)entry_vkCmdClearDepthStencilImage;
9032 }
9033 if (!strcmp(name, "vkCmdClearAttachments"))
9034 {
9035 return (void*)entry_vkCmdClearAttachments;
9036 }
9037 if (!strcmp(name, "vkCmdResolveImage"))
9038 {
9039 return (void*)entry_vkCmdResolveImage;
9040 }
9041 if (!strcmp(name, "vkCmdSetEvent"))
9042 {
9043 return (void*)entry_vkCmdSetEvent;
9044 }
9045 if (!strcmp(name, "vkCmdResetEvent"))
9046 {
9047 return (void*)entry_vkCmdResetEvent;
9048 }
9049 if (!strcmp(name, "vkCmdWaitEvents"))
9050 {
9051 return (void*)entry_vkCmdWaitEvents;
9052 }
9053 if (!strcmp(name, "vkCmdPipelineBarrier"))
9054 {
9055 return (void*)entry_vkCmdPipelineBarrier;
9056 }
9057 if (!strcmp(name, "vkCmdBeginQuery"))
9058 {
9059 return (void*)entry_vkCmdBeginQuery;
9060 }
9061 if (!strcmp(name, "vkCmdEndQuery"))
9062 {
9063 return (void*)entry_vkCmdEndQuery;
9064 }
9065 if (!strcmp(name, "vkCmdResetQueryPool"))
9066 {
9067 return (void*)entry_vkCmdResetQueryPool;
9068 }
9069 if (!strcmp(name, "vkCmdWriteTimestamp"))
9070 {
9071 return (void*)entry_vkCmdWriteTimestamp;
9072 }
9073 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
9074 {
9075 return (void*)entry_vkCmdCopyQueryPoolResults;
9076 }
9077 if (!strcmp(name, "vkCmdPushConstants"))
9078 {
9079 return (void*)entry_vkCmdPushConstants;
9080 }
9081 if (!strcmp(name, "vkCmdBeginRenderPass"))
9082 {
9083 return (void*)entry_vkCmdBeginRenderPass;
9084 }
9085 if (!strcmp(name, "vkCmdNextSubpass"))
9086 {
9087 return (void*)entry_vkCmdNextSubpass;
9088 }
9089 if (!strcmp(name, "vkCmdEndRenderPass"))
9090 {
9091 return (void*)entry_vkCmdEndRenderPass;
9092 }
9093 if (!strcmp(name, "vkCmdExecuteCommands"))
9094 {
9095 return (void*)entry_vkCmdExecuteCommands;
9096 }
9097#endif
9098#ifdef VK_VERSION_1_1
9099 if (!strcmp(name, "vkEnumerateInstanceVersion"))
9100 {
9101 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
9102 }
9103 if (!strcmp(name, "vkBindBufferMemory2"))
9104 {
9105 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
9106 }
9107 if (!strcmp(name, "vkBindImageMemory2"))
9108 {
9109 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
9110 }
9111 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
9112 {
9113 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
9114 }
9115 if (!strcmp(name, "vkCmdSetDeviceMask"))
9116 {
9117 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
9118 }
9119 if (!strcmp(name, "vkCmdDispatchBase"))
9120 {
9121 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
9122 }
9123 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
9124 {
9125 return nullptr;
9126 }
9127 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
9128 {
9129 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
9130 }
9131 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
9132 {
9133 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
9134 }
9135 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
9136 {
9137 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
9138 }
9139 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
9140 {
9141 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
9142 }
9143 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
9144 {
9145 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
9146 }
9147 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
9148 {
9149 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
9150 }
9151 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9152 {
9153 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
9154 }
9155 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9156 {
9157 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
9158 }
9159 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9160 {
9161 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
9162 }
9163 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9164 {
9165 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
9166 }
9167 if (!strcmp(name, "vkTrimCommandPool"))
9168 {
9169 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
9170 }
9171 if (!strcmp(name, "vkGetDeviceQueue2"))
9172 {
9173 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
9174 }
9175 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9176 {
9177 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
9178 }
9179 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9180 {
9181 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
9182 }
9183 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9184 {
9185 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
9186 }
9187 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9188 {
9189 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
9190 }
9191 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9192 {
9193 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
9194 }
9195 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9196 {
9197 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
9198 }
9199 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9200 {
9201 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
9202 }
9203 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9204 {
9205 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
9206 }
9207 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9208 {
9209 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
9210 }
9211#endif
9212#ifdef VK_KHR_surface
9213 if (!strcmp(name, "vkDestroySurfaceKHR"))
9214 {
9215 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9216 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
9217 }
9218 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9219 {
9220 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9221 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
9222 }
9223 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9224 {
9225 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9226 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
9227 }
9228 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9229 {
9230 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9231 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
9232 }
9233 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9234 {
9235 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9236 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
9237 }
9238#endif
9239#ifdef VK_KHR_swapchain
9240 if (!strcmp(name, "vkCreateSwapchainKHR"))
9241 {
9242 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9243 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9244 }
9245 if (!strcmp(name, "vkDestroySwapchainKHR"))
9246 {
9247 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9248 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9249 }
9250 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9251 {
9252 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9253 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9254 }
9255 if (!strcmp(name, "vkAcquireNextImageKHR"))
9256 {
9257 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9258 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9259 }
9260 if (!strcmp(name, "vkQueuePresentKHR"))
9261 {
9262 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9263 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9264 }
9265 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9266 {
9267 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9268 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9269 }
9270 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9271 {
9272 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9273 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9274 }
9275 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9276 {
9277 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9278 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9279 }
9280 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9281 {
9282 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9283 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9284 }
9285#endif
9286#ifdef VK_KHR_display
9287 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9288 {
9289 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9290 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9291 }
9292 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9293 {
9294 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9295 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9296 }
9297 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9298 {
9299 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9300 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9301 }
9302 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9303 {
9304 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9305 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9306 }
9307 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9308 {
9309 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9310 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9311 }
9312 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9313 {
9314 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9315 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9316 }
9317 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9318 {
9319 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9320 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9321 }
9322#endif
9323#ifdef VK_KHR_display_swapchain
9324 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9325 {
9326 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9327 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9328 }
9329#endif
9330#ifdef VK_KHR_xlib_surface
9331 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9332 {
9333 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9334 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9335 }
9336 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9337 {
9338 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9339 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9340 }
9341#endif
9342#ifdef VK_KHR_xcb_surface
9343 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9344 {
9345 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9346 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9347 }
9348 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9349 {
9350 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9351 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9352 }
9353#endif
9354#ifdef VK_KHR_wayland_surface
9355 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9356 {
9357 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9358 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9359 }
9360 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9361 {
9362 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9363 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9364 }
9365#endif
9366#ifdef VK_KHR_mir_surface
9367 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9368 {
9369 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9370 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9371 }
9372 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9373 {
9374 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9375 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9376 }
9377#endif
9378#ifdef VK_KHR_android_surface
9379 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9380 {
9381 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9382 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9383 }
9384#endif
9385#ifdef VK_KHR_win32_surface
9386 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9387 {
9388 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9389 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9390 }
9391 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9392 {
9393 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9394 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9395 }
9396#endif
9397#ifdef VK_KHR_get_physical_device_properties2
9398 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9399 {
9400 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9401 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9402 }
9403 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9404 {
9405 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9406 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9407 }
9408 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9409 {
9410 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9411 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9412 }
9413 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9414 {
9415 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9416 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9417 }
9418 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9419 {
9420 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9421 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9422 }
9423 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9424 {
9425 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9426 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9427 }
9428 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9429 {
9430 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9431 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9432 }
9433#endif
9434#ifdef VK_KHR_device_group
9435 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9436 {
9437 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9438 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9439 }
9440 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9441 {
9442 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9443 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9444 }
9445 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9446 {
9447 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9448 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9449 }
9450#endif
9451#ifdef VK_KHR_maintenance1
9452 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9453 {
9454 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9455 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9456 }
9457#endif
9458#ifdef VK_KHR_device_group_creation
9459 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9460 {
9461 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9462 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9463 }
9464#endif
9465#ifdef VK_KHR_external_memory_capabilities
9466 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9467 {
9468 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9469 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9470 }
9471#endif
9472#ifdef VK_KHR_external_memory_win32
9473 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9474 {
9475 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9476 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9477 }
9478 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9479 {
9480 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9481 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9482 }
9483#endif
9484#ifdef VK_KHR_external_memory_fd
9485 if (!strcmp(name, "vkGetMemoryFdKHR"))
9486 {
9487 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9488 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9489 }
9490 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9491 {
9492 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9493 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9494 }
9495#endif
9496#ifdef VK_KHR_external_semaphore_capabilities
9497 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9498 {
9499 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9500 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9501 }
9502#endif
9503#ifdef VK_KHR_external_semaphore_win32
9504 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9505 {
9506 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9507 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9508 }
9509 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9510 {
9511 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9512 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9513 }
9514#endif
9515#ifdef VK_KHR_external_semaphore_fd
9516 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9517 {
9518 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9519 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9520 }
9521 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9522 {
9523 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9524 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9525 }
9526#endif
9527#ifdef VK_KHR_push_descriptor
9528 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9529 {
9530 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9531 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9532 }
9533 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9534 {
9535 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9536 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9537 }
9538#endif
9539#ifdef VK_KHR_descriptor_update_template
9540 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9541 {
9542 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9543 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9544 }
9545 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9546 {
9547 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9548 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9549 }
9550 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9551 {
9552 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9553 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9554 }
9555#endif
9556#ifdef VK_KHR_create_renderpass2
9557 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9558 {
9559 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9560 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9561 }
9562 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9563 {
9564 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9565 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9566 }
9567 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9568 {
9569 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9570 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9571 }
9572 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9573 {
9574 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9575 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9576 }
9577#endif
9578#ifdef VK_KHR_shared_presentable_image
9579 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9580 {
9581 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9582 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9583 }
9584#endif
9585#ifdef VK_KHR_external_fence_capabilities
9586 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9587 {
9588 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9589 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9590 }
9591#endif
9592#ifdef VK_KHR_external_fence_win32
9593 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9594 {
9595 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9596 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9597 }
9598 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9599 {
9600 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9601 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9602 }
9603#endif
9604#ifdef VK_KHR_external_fence_fd
9605 if (!strcmp(name, "vkImportFenceFdKHR"))
9606 {
9607 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9608 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9609 }
9610 if (!strcmp(name, "vkGetFenceFdKHR"))
9611 {
9612 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9613 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9614 }
9615#endif
9616#ifdef VK_KHR_get_surface_capabilities2
9617 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9618 {
9619 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9620 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9621 }
9622 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9623 {
9624 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9625 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9626 }
9627#endif
9628#ifdef VK_KHR_get_display_properties2
9629 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9630 {
9631 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9632 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9633 }
9634 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9635 {
9636 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9637 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9638 }
9639 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9640 {
9641 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9642 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9643 }
9644 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9645 {
9646 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9647 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9648 }
9649#endif
9650#ifdef VK_KHR_get_memory_requirements2
9651 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9652 {
9653 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9654 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9655 }
9656 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9657 {
9658 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9659 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9660 }
9661 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9662 {
9663 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9664 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9665 }
9666#endif
9667#ifdef VK_KHR_sampler_ycbcr_conversion
9668 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9669 {
9670 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9671 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9672 }
9673 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9674 {
9675 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9676 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9677 }
9678#endif
9679#ifdef VK_KHR_bind_memory2
9680 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9681 {
9682 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9683 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9684 }
9685 if (!strcmp(name, "vkBindImageMemory2KHR"))
9686 {
9687 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9688 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9689 }
9690#endif
9691#ifdef VK_KHR_maintenance3
9692 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9693 {
9694 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9695 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9696 }
9697#endif
9698#ifdef VK_KHR_draw_indirect_count
9699 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9700 {
9701 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9702 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9703 }
9704 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9705 {
9706 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9707 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9708 }
9709#endif
9710#ifdef VK_ANDROID_native_buffer
9711 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9712 {
9713 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9714 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9715 }
9716 if (!strcmp(name, "vkAcquireImageANDROID"))
9717 {
9718 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9719 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9720 }
9721 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9722 {
9723 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9724 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9725 }
9726#endif
9727#ifdef VK_EXT_debug_report
9728 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9729 {
9730 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9731 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9732 }
9733 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9734 {
9735 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9736 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9737 }
9738 if (!strcmp(name, "vkDebugReportMessageEXT"))
9739 {
9740 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9741 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9742 }
9743#endif
9744#ifdef VK_EXT_debug_marker
9745 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9746 {
9747 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9748 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9749 }
9750 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9751 {
9752 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9753 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9754 }
9755 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9756 {
9757 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9758 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9759 }
9760 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9761 {
9762 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9763 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9764 }
9765 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9766 {
9767 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9768 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9769 }
9770#endif
9771#ifdef VK_AMD_draw_indirect_count
9772 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9773 {
9774 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9775 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9776 }
9777 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9778 {
9779 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9780 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9781 }
9782#endif
9783#ifdef VK_AMD_shader_info
9784 if (!strcmp(name, "vkGetShaderInfoAMD"))
9785 {
9786 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9787 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9788 }
9789#endif
9790#ifdef VK_NV_external_memory_capabilities
9791 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9792 {
9793 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9794 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9795 }
9796#endif
9797#ifdef VK_NV_external_memory_win32
9798 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9799 {
9800 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9801 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9802 }
9803#endif
9804#ifdef VK_NN_vi_surface
9805 if (!strcmp(name, "vkCreateViSurfaceNN"))
9806 {
9807 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9808 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9809 }
9810#endif
9811#ifdef VK_EXT_conditional_rendering
9812 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9813 {
9814 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9815 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9816 }
9817 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9818 {
9819 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9820 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9821 }
9822#endif
9823#ifdef VK_NVX_device_generated_commands
9824 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9825 {
9826 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9827 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9828 }
9829 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9830 {
9831 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9832 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9833 }
9834 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9835 {
9836 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9837 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9838 }
9839 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9840 {
9841 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9842 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9843 }
9844 if (!strcmp(name, "vkCreateObjectTableNVX"))
9845 {
9846 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9847 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9848 }
9849 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9850 {
9851 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9852 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9853 }
9854 if (!strcmp(name, "vkRegisterObjectsNVX"))
9855 {
9856 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9857 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9858 }
9859 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9860 {
9861 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9862 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9863 }
9864 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9865 {
9866 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9867 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9868 }
9869#endif
9870#ifdef VK_NV_clip_space_w_scaling
9871 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9872 {
9873 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9874 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9875 }
9876#endif
9877#ifdef VK_EXT_direct_mode_display
9878 if (!strcmp(name, "vkReleaseDisplayEXT"))
9879 {
9880 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9881 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9882 }
9883#endif
9884#ifdef VK_EXT_acquire_xlib_display
9885 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9886 {
9887 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9888 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9889 }
9890 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9891 {
9892 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9893 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9894 }
9895#endif
9896#ifdef VK_EXT_display_surface_counter
9897 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9898 {
9899 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9900 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9901 }
9902#endif
9903#ifdef VK_EXT_display_control
9904 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9905 {
9906 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9907 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9908 }
9909 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9910 {
9911 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9912 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9913 }
9914 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9915 {
9916 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9917 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9918 }
9919 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9920 {
9921 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9922 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9923 }
9924#endif
9925#ifdef VK_GOOGLE_display_timing
9926 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9927 {
9928 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9929 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9930 }
9931 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9932 {
9933 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9934 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9935 }
9936#endif
9937#ifdef VK_EXT_discard_rectangles
9938 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9939 {
9940 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9941 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9942 }
9943#endif
9944#ifdef VK_EXT_hdr_metadata
9945 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9946 {
9947 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9948 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9949 }
9950#endif
9951#ifdef VK_MVK_ios_surface
9952 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9953 {
9954 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9955 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9956 }
9957#endif
9958#ifdef VK_MVK_macos_surface
9959 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9960 {
9961 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9962 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9963 }
9964#endif
9965#ifdef VK_EXT_debug_utils
9966 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9967 {
9968 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9969 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9970 }
9971 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9972 {
9973 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9974 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9975 }
9976 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9977 {
9978 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9979 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9980 }
9981 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9982 {
9983 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9984 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9985 }
9986 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9987 {
9988 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9989 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9990 }
9991 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9992 {
9993 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9994 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9995 }
9996 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9997 {
9998 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9999 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
10000 }
10001 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
10002 {
10003 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
10004 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
10005 }
10006 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
10007 {
10008 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
10009 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
10010 }
10011 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
10012 {
10013 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
10014 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
10015 }
10016 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
10017 {
10018 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
10019 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
10020 }
10021#endif
10022#ifdef VK_ANDROID_external_memory_android_hardware_buffer
10023 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
10024 {
10025 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
10026 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
10027 }
10028 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
10029 {
10030 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
10031 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
10032 }
10033#endif
10034#ifdef VK_EXT_sample_locations
10035 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
10036 {
10037 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
10038 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
10039 }
10040 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
10041 {
10042 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
10043 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
10044 }
10045#endif
10046#ifdef VK_EXT_validation_cache
10047 if (!strcmp(name, "vkCreateValidationCacheEXT"))
10048 {
10049 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
10050 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
10051 }
10052 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
10053 {
10054 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
10055 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
10056 }
10057 if (!strcmp(name, "vkMergeValidationCachesEXT"))
10058 {
10059 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
10060 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
10061 }
10062 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
10063 {
10064 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
10065 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
10066 }
10067#endif
10068#ifdef VK_EXT_external_memory_host
10069 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
10070 {
10071 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
10072 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
10073 }
10074#endif
10075#ifdef VK_AMD_buffer_marker
10076 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
10077 {
10078 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
10079 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
10080 }
10081#endif
10082#ifdef VK_NV_device_diagnostic_checkpoints
10083 if (!strcmp(name, "vkCmdSetCheckpointNV"))
10084 {
10085 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
10086 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
10087 }
10088 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
10089 {
10090 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
10091 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
10092 }
10093#endif
10094#ifdef VK_GOOGLE_address_space
10095 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
10096 {
10097 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
10098 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -080010099 }
10100#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -080010101#ifdef VK_GOOGLE_color_buffer
10102 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
10103 {
10104 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
10105 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
10106 }
10107 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
10108 {
10109 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
10110 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
10111 }
10112#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070010113#ifdef VK_GOOGLE_sized_descriptor_update_template
10114 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
10115 {
10116 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
10117 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
10118 }
10119#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010120#ifdef VK_GOOGLE_async_command_buffers
10121 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
10122 {
10123 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10124 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
10125 }
10126 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
10127 {
10128 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10129 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
10130 }
10131 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
10132 {
10133 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10134 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
10135 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070010136 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
10137 {
10138 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10139 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
10140 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010141#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +000010142#ifdef VK_GOOGLE_create_resources_with_requirements
10143 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
10144 {
10145 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10146 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
10147 }
10148 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
10149 {
10150 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10151 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
10152 }
10153#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080010154#ifdef VK_GOOGLE_address_space_info
10155 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
10156 {
10157 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
10158 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
10159 }
10160#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070010161#ifdef VK_GOOGLE_free_memory_sync
10162 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
10163 {
10164 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
10165 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
10166 }
10167#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010168#ifdef VK_GOOGLE_async_queue_submit
10169 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
10170 {
10171 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10172 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
10173 }
10174 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
10175 {
10176 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10177 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
10178 }
10179 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
10180 {
10181 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10182 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
10183 }
10184 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
10185 {
10186 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10187 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
10188 }
10189#endif
Yilong Lia48b0102020-09-15 15:08:28 -070010190#ifdef VK_GOOGLE_linear_image_layout
10191 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
10192 {
10193 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout");
10194 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
10195 }
10196#endif
Lingfeng Yang2178dc72021-01-08 14:01:47 -080010197#ifdef VK_MVK_moltenvk
10198 if (!strcmp(name, "vkGetMTLDeviceMVK"))
10199 {
10200 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10201 return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
10202 }
10203 if (!strcmp(name, "vkSetMTLTextureMVK"))
10204 {
10205 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10206 return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
10207 }
10208 if (!strcmp(name, "vkGetMTLTextureMVK"))
10209 {
10210 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10211 return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
10212 }
10213 if (!strcmp(name, "vkGetMTLBufferMVK"))
10214 {
10215 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10216 return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
10217 }
10218 if (!strcmp(name, "vkUseIOSurfaceMVK"))
10219 {
10220 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10221 return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
10222 }
10223 if (!strcmp(name, "vkGetIOSurfaceMVK"))
10224 {
10225 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
10226 return hasExt ? (void*)entry_vkGetIOSurfaceMVK : nullptr;
10227 }
10228#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010229 return nullptr;
10230}
10231
10232} // namespace goldfish_vk