blob: 6a4a1289688496da66c28f607c66ecec36e63b06 [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 Yang0b81df22018-11-05 21:40:30 -08005368void* goldfish_vulkan_get_proc_address(const char* name){
5369#ifdef VK_VERSION_1_0
5370 if (!strcmp(name, "vkCreateInstance"))
5371 {
5372 return (void*)entry_vkCreateInstance;
5373 }
5374 if (!strcmp(name, "vkDestroyInstance"))
5375 {
5376 return (void*)entry_vkDestroyInstance;
5377 }
5378 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5379 {
5380 return (void*)entry_vkEnumeratePhysicalDevices;
5381 }
5382 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5383 {
5384 return (void*)entry_vkGetPhysicalDeviceFeatures;
5385 }
5386 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5387 {
5388 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5389 }
5390 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5391 {
5392 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5393 }
5394 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5395 {
5396 return (void*)entry_vkGetPhysicalDeviceProperties;
5397 }
5398 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5399 {
5400 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5401 }
5402 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5403 {
5404 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5405 }
5406 if (!strcmp(name, "vkGetInstanceProcAddr"))
5407 {
5408 return (void*)entry_vkGetInstanceProcAddr;
5409 }
5410 if (!strcmp(name, "vkGetDeviceProcAddr"))
5411 {
5412 return (void*)entry_vkGetDeviceProcAddr;
5413 }
5414 if (!strcmp(name, "vkCreateDevice"))
5415 {
5416 return (void*)entry_vkCreateDevice;
5417 }
5418 if (!strcmp(name, "vkDestroyDevice"))
5419 {
5420 return (void*)entry_vkDestroyDevice;
5421 }
5422 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5423 {
5424 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5425 }
5426 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5427 {
5428 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5429 }
5430 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5431 {
5432 return (void*)entry_vkEnumerateInstanceLayerProperties;
5433 }
5434 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5435 {
5436 return (void*)entry_vkEnumerateDeviceLayerProperties;
5437 }
5438 if (!strcmp(name, "vkGetDeviceQueue"))
5439 {
5440 return (void*)entry_vkGetDeviceQueue;
5441 }
5442 if (!strcmp(name, "vkQueueSubmit"))
5443 {
5444 return (void*)entry_vkQueueSubmit;
5445 }
5446 if (!strcmp(name, "vkQueueWaitIdle"))
5447 {
5448 return (void*)entry_vkQueueWaitIdle;
5449 }
5450 if (!strcmp(name, "vkDeviceWaitIdle"))
5451 {
5452 return (void*)entry_vkDeviceWaitIdle;
5453 }
5454 if (!strcmp(name, "vkAllocateMemory"))
5455 {
5456 return (void*)entry_vkAllocateMemory;
5457 }
5458 if (!strcmp(name, "vkFreeMemory"))
5459 {
5460 return (void*)entry_vkFreeMemory;
5461 }
5462 if (!strcmp(name, "vkMapMemory"))
5463 {
5464 return (void*)entry_vkMapMemory;
5465 }
5466 if (!strcmp(name, "vkUnmapMemory"))
5467 {
5468 return (void*)entry_vkUnmapMemory;
5469 }
5470 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5471 {
5472 return (void*)entry_vkFlushMappedMemoryRanges;
5473 }
5474 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5475 {
5476 return (void*)entry_vkInvalidateMappedMemoryRanges;
5477 }
5478 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5479 {
5480 return (void*)entry_vkGetDeviceMemoryCommitment;
5481 }
5482 if (!strcmp(name, "vkBindBufferMemory"))
5483 {
5484 return (void*)entry_vkBindBufferMemory;
5485 }
5486 if (!strcmp(name, "vkBindImageMemory"))
5487 {
5488 return (void*)entry_vkBindImageMemory;
5489 }
5490 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5491 {
5492 return (void*)entry_vkGetBufferMemoryRequirements;
5493 }
5494 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5495 {
5496 return (void*)entry_vkGetImageMemoryRequirements;
5497 }
5498 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5499 {
5500 return (void*)entry_vkGetImageSparseMemoryRequirements;
5501 }
5502 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5503 {
5504 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5505 }
5506 if (!strcmp(name, "vkQueueBindSparse"))
5507 {
5508 return (void*)entry_vkQueueBindSparse;
5509 }
5510 if (!strcmp(name, "vkCreateFence"))
5511 {
5512 return (void*)entry_vkCreateFence;
5513 }
5514 if (!strcmp(name, "vkDestroyFence"))
5515 {
5516 return (void*)entry_vkDestroyFence;
5517 }
5518 if (!strcmp(name, "vkResetFences"))
5519 {
5520 return (void*)entry_vkResetFences;
5521 }
5522 if (!strcmp(name, "vkGetFenceStatus"))
5523 {
5524 return (void*)entry_vkGetFenceStatus;
5525 }
5526 if (!strcmp(name, "vkWaitForFences"))
5527 {
5528 return (void*)entry_vkWaitForFences;
5529 }
5530 if (!strcmp(name, "vkCreateSemaphore"))
5531 {
5532 return (void*)entry_vkCreateSemaphore;
5533 }
5534 if (!strcmp(name, "vkDestroySemaphore"))
5535 {
5536 return (void*)entry_vkDestroySemaphore;
5537 }
5538 if (!strcmp(name, "vkCreateEvent"))
5539 {
5540 return (void*)entry_vkCreateEvent;
5541 }
5542 if (!strcmp(name, "vkDestroyEvent"))
5543 {
5544 return (void*)entry_vkDestroyEvent;
5545 }
5546 if (!strcmp(name, "vkGetEventStatus"))
5547 {
5548 return (void*)entry_vkGetEventStatus;
5549 }
5550 if (!strcmp(name, "vkSetEvent"))
5551 {
5552 return (void*)entry_vkSetEvent;
5553 }
5554 if (!strcmp(name, "vkResetEvent"))
5555 {
5556 return (void*)entry_vkResetEvent;
5557 }
5558 if (!strcmp(name, "vkCreateQueryPool"))
5559 {
5560 return (void*)entry_vkCreateQueryPool;
5561 }
5562 if (!strcmp(name, "vkDestroyQueryPool"))
5563 {
5564 return (void*)entry_vkDestroyQueryPool;
5565 }
5566 if (!strcmp(name, "vkGetQueryPoolResults"))
5567 {
5568 return (void*)entry_vkGetQueryPoolResults;
5569 }
5570 if (!strcmp(name, "vkCreateBuffer"))
5571 {
5572 return (void*)entry_vkCreateBuffer;
5573 }
5574 if (!strcmp(name, "vkDestroyBuffer"))
5575 {
5576 return (void*)entry_vkDestroyBuffer;
5577 }
5578 if (!strcmp(name, "vkCreateBufferView"))
5579 {
5580 return (void*)entry_vkCreateBufferView;
5581 }
5582 if (!strcmp(name, "vkDestroyBufferView"))
5583 {
5584 return (void*)entry_vkDestroyBufferView;
5585 }
5586 if (!strcmp(name, "vkCreateImage"))
5587 {
5588 return (void*)entry_vkCreateImage;
5589 }
5590 if (!strcmp(name, "vkDestroyImage"))
5591 {
5592 return (void*)entry_vkDestroyImage;
5593 }
5594 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5595 {
5596 return (void*)entry_vkGetImageSubresourceLayout;
5597 }
5598 if (!strcmp(name, "vkCreateImageView"))
5599 {
5600 return (void*)entry_vkCreateImageView;
5601 }
5602 if (!strcmp(name, "vkDestroyImageView"))
5603 {
5604 return (void*)entry_vkDestroyImageView;
5605 }
5606 if (!strcmp(name, "vkCreateShaderModule"))
5607 {
5608 return (void*)entry_vkCreateShaderModule;
5609 }
5610 if (!strcmp(name, "vkDestroyShaderModule"))
5611 {
5612 return (void*)entry_vkDestroyShaderModule;
5613 }
5614 if (!strcmp(name, "vkCreatePipelineCache"))
5615 {
5616 return (void*)entry_vkCreatePipelineCache;
5617 }
5618 if (!strcmp(name, "vkDestroyPipelineCache"))
5619 {
5620 return (void*)entry_vkDestroyPipelineCache;
5621 }
5622 if (!strcmp(name, "vkGetPipelineCacheData"))
5623 {
5624 return (void*)entry_vkGetPipelineCacheData;
5625 }
5626 if (!strcmp(name, "vkMergePipelineCaches"))
5627 {
5628 return (void*)entry_vkMergePipelineCaches;
5629 }
5630 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5631 {
5632 return (void*)entry_vkCreateGraphicsPipelines;
5633 }
5634 if (!strcmp(name, "vkCreateComputePipelines"))
5635 {
5636 return (void*)entry_vkCreateComputePipelines;
5637 }
5638 if (!strcmp(name, "vkDestroyPipeline"))
5639 {
5640 return (void*)entry_vkDestroyPipeline;
5641 }
5642 if (!strcmp(name, "vkCreatePipelineLayout"))
5643 {
5644 return (void*)entry_vkCreatePipelineLayout;
5645 }
5646 if (!strcmp(name, "vkDestroyPipelineLayout"))
5647 {
5648 return (void*)entry_vkDestroyPipelineLayout;
5649 }
5650 if (!strcmp(name, "vkCreateSampler"))
5651 {
5652 return (void*)entry_vkCreateSampler;
5653 }
5654 if (!strcmp(name, "vkDestroySampler"))
5655 {
5656 return (void*)entry_vkDestroySampler;
5657 }
5658 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5659 {
5660 return (void*)entry_vkCreateDescriptorSetLayout;
5661 }
5662 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5663 {
5664 return (void*)entry_vkDestroyDescriptorSetLayout;
5665 }
5666 if (!strcmp(name, "vkCreateDescriptorPool"))
5667 {
5668 return (void*)entry_vkCreateDescriptorPool;
5669 }
5670 if (!strcmp(name, "vkDestroyDescriptorPool"))
5671 {
5672 return (void*)entry_vkDestroyDescriptorPool;
5673 }
5674 if (!strcmp(name, "vkResetDescriptorPool"))
5675 {
5676 return (void*)entry_vkResetDescriptorPool;
5677 }
5678 if (!strcmp(name, "vkAllocateDescriptorSets"))
5679 {
5680 return (void*)entry_vkAllocateDescriptorSets;
5681 }
5682 if (!strcmp(name, "vkFreeDescriptorSets"))
5683 {
5684 return (void*)entry_vkFreeDescriptorSets;
5685 }
5686 if (!strcmp(name, "vkUpdateDescriptorSets"))
5687 {
5688 return (void*)entry_vkUpdateDescriptorSets;
5689 }
5690 if (!strcmp(name, "vkCreateFramebuffer"))
5691 {
5692 return (void*)entry_vkCreateFramebuffer;
5693 }
5694 if (!strcmp(name, "vkDestroyFramebuffer"))
5695 {
5696 return (void*)entry_vkDestroyFramebuffer;
5697 }
5698 if (!strcmp(name, "vkCreateRenderPass"))
5699 {
5700 return (void*)entry_vkCreateRenderPass;
5701 }
5702 if (!strcmp(name, "vkDestroyRenderPass"))
5703 {
5704 return (void*)entry_vkDestroyRenderPass;
5705 }
5706 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5707 {
5708 return (void*)entry_vkGetRenderAreaGranularity;
5709 }
5710 if (!strcmp(name, "vkCreateCommandPool"))
5711 {
5712 return (void*)entry_vkCreateCommandPool;
5713 }
5714 if (!strcmp(name, "vkDestroyCommandPool"))
5715 {
5716 return (void*)entry_vkDestroyCommandPool;
5717 }
5718 if (!strcmp(name, "vkResetCommandPool"))
5719 {
5720 return (void*)entry_vkResetCommandPool;
5721 }
5722 if (!strcmp(name, "vkAllocateCommandBuffers"))
5723 {
5724 return (void*)entry_vkAllocateCommandBuffers;
5725 }
5726 if (!strcmp(name, "vkFreeCommandBuffers"))
5727 {
5728 return (void*)entry_vkFreeCommandBuffers;
5729 }
5730 if (!strcmp(name, "vkBeginCommandBuffer"))
5731 {
5732 return (void*)entry_vkBeginCommandBuffer;
5733 }
5734 if (!strcmp(name, "vkEndCommandBuffer"))
5735 {
5736 return (void*)entry_vkEndCommandBuffer;
5737 }
5738 if (!strcmp(name, "vkResetCommandBuffer"))
5739 {
5740 return (void*)entry_vkResetCommandBuffer;
5741 }
5742 if (!strcmp(name, "vkCmdBindPipeline"))
5743 {
5744 return (void*)entry_vkCmdBindPipeline;
5745 }
5746 if (!strcmp(name, "vkCmdSetViewport"))
5747 {
5748 return (void*)entry_vkCmdSetViewport;
5749 }
5750 if (!strcmp(name, "vkCmdSetScissor"))
5751 {
5752 return (void*)entry_vkCmdSetScissor;
5753 }
5754 if (!strcmp(name, "vkCmdSetLineWidth"))
5755 {
5756 return (void*)entry_vkCmdSetLineWidth;
5757 }
5758 if (!strcmp(name, "vkCmdSetDepthBias"))
5759 {
5760 return (void*)entry_vkCmdSetDepthBias;
5761 }
5762 if (!strcmp(name, "vkCmdSetBlendConstants"))
5763 {
5764 return (void*)entry_vkCmdSetBlendConstants;
5765 }
5766 if (!strcmp(name, "vkCmdSetDepthBounds"))
5767 {
5768 return (void*)entry_vkCmdSetDepthBounds;
5769 }
5770 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5771 {
5772 return (void*)entry_vkCmdSetStencilCompareMask;
5773 }
5774 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5775 {
5776 return (void*)entry_vkCmdSetStencilWriteMask;
5777 }
5778 if (!strcmp(name, "vkCmdSetStencilReference"))
5779 {
5780 return (void*)entry_vkCmdSetStencilReference;
5781 }
5782 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5783 {
5784 return (void*)entry_vkCmdBindDescriptorSets;
5785 }
5786 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5787 {
5788 return (void*)entry_vkCmdBindIndexBuffer;
5789 }
5790 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5791 {
5792 return (void*)entry_vkCmdBindVertexBuffers;
5793 }
5794 if (!strcmp(name, "vkCmdDraw"))
5795 {
5796 return (void*)entry_vkCmdDraw;
5797 }
5798 if (!strcmp(name, "vkCmdDrawIndexed"))
5799 {
5800 return (void*)entry_vkCmdDrawIndexed;
5801 }
5802 if (!strcmp(name, "vkCmdDrawIndirect"))
5803 {
5804 return (void*)entry_vkCmdDrawIndirect;
5805 }
5806 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5807 {
5808 return (void*)entry_vkCmdDrawIndexedIndirect;
5809 }
5810 if (!strcmp(name, "vkCmdDispatch"))
5811 {
5812 return (void*)entry_vkCmdDispatch;
5813 }
5814 if (!strcmp(name, "vkCmdDispatchIndirect"))
5815 {
5816 return (void*)entry_vkCmdDispatchIndirect;
5817 }
5818 if (!strcmp(name, "vkCmdCopyBuffer"))
5819 {
5820 return (void*)entry_vkCmdCopyBuffer;
5821 }
5822 if (!strcmp(name, "vkCmdCopyImage"))
5823 {
5824 return (void*)entry_vkCmdCopyImage;
5825 }
5826 if (!strcmp(name, "vkCmdBlitImage"))
5827 {
5828 return (void*)entry_vkCmdBlitImage;
5829 }
5830 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5831 {
5832 return (void*)entry_vkCmdCopyBufferToImage;
5833 }
5834 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5835 {
5836 return (void*)entry_vkCmdCopyImageToBuffer;
5837 }
5838 if (!strcmp(name, "vkCmdUpdateBuffer"))
5839 {
5840 return (void*)entry_vkCmdUpdateBuffer;
5841 }
5842 if (!strcmp(name, "vkCmdFillBuffer"))
5843 {
5844 return (void*)entry_vkCmdFillBuffer;
5845 }
5846 if (!strcmp(name, "vkCmdClearColorImage"))
5847 {
5848 return (void*)entry_vkCmdClearColorImage;
5849 }
5850 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5851 {
5852 return (void*)entry_vkCmdClearDepthStencilImage;
5853 }
5854 if (!strcmp(name, "vkCmdClearAttachments"))
5855 {
5856 return (void*)entry_vkCmdClearAttachments;
5857 }
5858 if (!strcmp(name, "vkCmdResolveImage"))
5859 {
5860 return (void*)entry_vkCmdResolveImage;
5861 }
5862 if (!strcmp(name, "vkCmdSetEvent"))
5863 {
5864 return (void*)entry_vkCmdSetEvent;
5865 }
5866 if (!strcmp(name, "vkCmdResetEvent"))
5867 {
5868 return (void*)entry_vkCmdResetEvent;
5869 }
5870 if (!strcmp(name, "vkCmdWaitEvents"))
5871 {
5872 return (void*)entry_vkCmdWaitEvents;
5873 }
5874 if (!strcmp(name, "vkCmdPipelineBarrier"))
5875 {
5876 return (void*)entry_vkCmdPipelineBarrier;
5877 }
5878 if (!strcmp(name, "vkCmdBeginQuery"))
5879 {
5880 return (void*)entry_vkCmdBeginQuery;
5881 }
5882 if (!strcmp(name, "vkCmdEndQuery"))
5883 {
5884 return (void*)entry_vkCmdEndQuery;
5885 }
5886 if (!strcmp(name, "vkCmdResetQueryPool"))
5887 {
5888 return (void*)entry_vkCmdResetQueryPool;
5889 }
5890 if (!strcmp(name, "vkCmdWriteTimestamp"))
5891 {
5892 return (void*)entry_vkCmdWriteTimestamp;
5893 }
5894 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5895 {
5896 return (void*)entry_vkCmdCopyQueryPoolResults;
5897 }
5898 if (!strcmp(name, "vkCmdPushConstants"))
5899 {
5900 return (void*)entry_vkCmdPushConstants;
5901 }
5902 if (!strcmp(name, "vkCmdBeginRenderPass"))
5903 {
5904 return (void*)entry_vkCmdBeginRenderPass;
5905 }
5906 if (!strcmp(name, "vkCmdNextSubpass"))
5907 {
5908 return (void*)entry_vkCmdNextSubpass;
5909 }
5910 if (!strcmp(name, "vkCmdEndRenderPass"))
5911 {
5912 return (void*)entry_vkCmdEndRenderPass;
5913 }
5914 if (!strcmp(name, "vkCmdExecuteCommands"))
5915 {
5916 return (void*)entry_vkCmdExecuteCommands;
5917 }
5918#endif
5919#ifdef VK_VERSION_1_1
5920 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5921 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005922 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005923 }
5924 if (!strcmp(name, "vkBindBufferMemory2"))
5925 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005926 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005927 }
5928 if (!strcmp(name, "vkBindImageMemory2"))
5929 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005930 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005931 }
5932 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5933 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005934 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005935 }
5936 if (!strcmp(name, "vkCmdSetDeviceMask"))
5937 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005938 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005939 }
5940 if (!strcmp(name, "vkCmdDispatchBase"))
5941 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005942 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005943 }
5944 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5945 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005946 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005947 }
5948 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5949 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005950 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005951 }
5952 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5953 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005954 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005955 }
5956 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5957 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005958 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005959 }
5960 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5961 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005962 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005963 }
5964 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5965 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005966 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005967 }
5968 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5969 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005970 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005971 }
5972 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5973 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005974 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005975 }
5976 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5977 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005978 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005979 }
5980 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5981 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005982 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005983 }
5984 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5985 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005986 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005987 }
5988 if (!strcmp(name, "vkTrimCommandPool"))
5989 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005990 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005991 }
5992 if (!strcmp(name, "vkGetDeviceQueue2"))
5993 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005994 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005995 }
5996 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5997 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005998 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005999 }
6000 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
6001 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006002 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006003 }
6004 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
6005 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006006 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006007 }
6008 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
6009 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006010 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006011 }
6012 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
6013 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006014 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006015 }
6016 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
6017 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006018 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006019 }
6020 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
6021 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006022 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006023 }
6024 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
6025 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006026 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006027 }
6028 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
6029 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006030 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006031 }
6032#endif
6033#ifdef VK_KHR_surface
6034 if (!strcmp(name, "vkDestroySurfaceKHR"))
6035 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006036 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006037 }
6038 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
6039 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006040 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006041 }
6042 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6043 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006044 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006045 }
6046 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6047 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006048 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006049 }
6050 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6051 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006052 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006053 }
6054#endif
6055#ifdef VK_KHR_swapchain
6056 if (!strcmp(name, "vkCreateSwapchainKHR"))
6057 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006058 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006059 }
6060 if (!strcmp(name, "vkDestroySwapchainKHR"))
6061 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006062 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006063 }
6064 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6065 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006066 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006067 }
6068 if (!strcmp(name, "vkAcquireNextImageKHR"))
6069 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006070 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006071 }
6072 if (!strcmp(name, "vkQueuePresentKHR"))
6073 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006074 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006075 }
6076 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6077 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006078 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006079 }
6080 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6081 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006082 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006083 }
6084 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6085 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006086 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006087 }
6088 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6089 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006090 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006091 }
6092#endif
6093#ifdef VK_KHR_display
6094 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6095 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006096 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006097 }
6098 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6099 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006100 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006101 }
6102 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6103 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006104 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006105 }
6106 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6107 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006108 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006109 }
6110 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6111 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006112 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006113 }
6114 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6115 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006116 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006117 }
6118 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6119 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006120 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006121 }
6122#endif
6123#ifdef VK_KHR_display_swapchain
6124 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6125 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006126 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006127 }
6128#endif
6129#ifdef VK_KHR_xlib_surface
6130 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6131 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006132 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006133 }
6134 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6135 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006136 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006137 }
6138#endif
6139#ifdef VK_KHR_xcb_surface
6140 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6141 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006142 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006143 }
6144 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6145 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006146 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006147 }
6148#endif
6149#ifdef VK_KHR_wayland_surface
6150 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6151 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006152 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006153 }
6154 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6155 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006156 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006157 }
6158#endif
6159#ifdef VK_KHR_mir_surface
6160 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6161 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006162 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006163 }
6164 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6165 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006166 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006167 }
6168#endif
6169#ifdef VK_KHR_android_surface
6170 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6171 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006172 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006173 }
6174#endif
6175#ifdef VK_KHR_win32_surface
6176 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6177 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006178 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006179 }
6180 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6181 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006182 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006183 }
6184#endif
6185#ifdef VK_KHR_get_physical_device_properties2
6186 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6187 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006188 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006189 }
6190 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6191 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006192 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006193 }
6194 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6195 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006196 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006197 }
6198 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6199 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006200 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006201 }
6202 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6203 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006204 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006205 }
6206 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6207 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006208 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006209 }
6210 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6211 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006212 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006213 }
6214#endif
6215#ifdef VK_KHR_device_group
6216 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6217 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006218 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006219 }
6220 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6221 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006222 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006223 }
6224 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
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_maintenance1
6230 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6231 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006232 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006233 }
6234#endif
6235#ifdef VK_KHR_device_group_creation
6236 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6237 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006238 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006239 }
6240#endif
6241#ifdef VK_KHR_external_memory_capabilities
6242 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6243 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006244 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006245 }
6246#endif
6247#ifdef VK_KHR_external_memory_win32
6248 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6249 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006250 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006251 }
6252 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6253 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006254 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006255 }
6256#endif
6257#ifdef VK_KHR_external_memory_fd
6258 if (!strcmp(name, "vkGetMemoryFdKHR"))
6259 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006260 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006261 }
6262 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6263 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006264 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006265 }
6266#endif
6267#ifdef VK_KHR_external_semaphore_capabilities
6268 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6269 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006270 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006271 }
6272#endif
6273#ifdef VK_KHR_external_semaphore_win32
6274 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6275 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006276 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006277 }
6278 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
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_external_semaphore_fd
6284 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6285 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006286 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006287 }
6288 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6289 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006290 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006291 }
6292#endif
6293#ifdef VK_KHR_push_descriptor
6294 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6295 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006296 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006297 }
6298 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6299 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006300 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006301 }
6302#endif
6303#ifdef VK_KHR_descriptor_update_template
6304 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6305 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006306 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006307 }
6308 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6309 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006310 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006311 }
6312 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6313 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006314 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006315 }
6316#endif
6317#ifdef VK_KHR_create_renderpass2
6318 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6319 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006320 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006321 }
6322 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6323 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006324 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006325 }
6326 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6327 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006328 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006329 }
6330 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6331 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006332 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006333 }
6334#endif
6335#ifdef VK_KHR_shared_presentable_image
6336 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6337 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006338 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006339 }
6340#endif
6341#ifdef VK_KHR_external_fence_capabilities
6342 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
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_external_fence_win32
6348 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6349 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006350 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006351 }
6352 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
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_external_fence_fd
6358 if (!strcmp(name, "vkImportFenceFdKHR"))
6359 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006360 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006361 }
6362 if (!strcmp(name, "vkGetFenceFdKHR"))
6363 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006364 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006365 }
6366#endif
6367#ifdef VK_KHR_get_surface_capabilities2
6368 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6369 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006370 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006371 }
6372 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6373 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006374 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006375 }
6376#endif
6377#ifdef VK_KHR_get_display_properties2
6378 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6379 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006380 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006381 }
6382 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6383 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006384 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006385 }
6386 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6387 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006388 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006389 }
6390 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
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_get_memory_requirements2
6396 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6397 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006398 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006399 }
6400 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6401 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006402 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006403 }
6404 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6405 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006406 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006407 }
6408#endif
6409#ifdef VK_KHR_sampler_ycbcr_conversion
6410 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6411 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006412 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006413 }
6414 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6415 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006416 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006417 }
6418#endif
6419#ifdef VK_KHR_bind_memory2
6420 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6421 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006422 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006423 }
6424 if (!strcmp(name, "vkBindImageMemory2KHR"))
6425 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006426 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006427 }
6428#endif
6429#ifdef VK_KHR_maintenance3
6430 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6431 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006432 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006433 }
6434#endif
6435#ifdef VK_KHR_draw_indirect_count
6436 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6437 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006438 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006439 }
6440 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6441 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006442 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006443 }
6444#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006445#ifdef VK_ANDROID_native_buffer
6446 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6447 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006448 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006449 }
6450 if (!strcmp(name, "vkAcquireImageANDROID"))
6451 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006452 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006453 }
6454 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6455 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006456 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006457 }
6458#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006459#ifdef VK_EXT_debug_report
6460 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6461 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006462 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006463 }
6464 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6465 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006466 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006467 }
6468 if (!strcmp(name, "vkDebugReportMessageEXT"))
6469 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006470 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006471 }
6472#endif
6473#ifdef VK_EXT_debug_marker
6474 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6475 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006476 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006477 }
6478 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6479 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006480 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006481 }
6482 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6483 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006484 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006485 }
6486 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6487 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006488 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006489 }
6490 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6491 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006492 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006493 }
6494#endif
6495#ifdef VK_AMD_draw_indirect_count
6496 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6497 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006498 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006499 }
6500 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6501 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006502 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006503 }
6504#endif
6505#ifdef VK_AMD_shader_info
6506 if (!strcmp(name, "vkGetShaderInfoAMD"))
6507 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006508 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006509 }
6510#endif
6511#ifdef VK_NV_external_memory_capabilities
6512 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6513 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006514 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006515 }
6516#endif
6517#ifdef VK_NV_external_memory_win32
6518 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6519 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006520 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006521 }
6522#endif
6523#ifdef VK_NN_vi_surface
6524 if (!strcmp(name, "vkCreateViSurfaceNN"))
6525 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006526 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006527 }
6528#endif
6529#ifdef VK_EXT_conditional_rendering
6530 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6531 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006532 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006533 }
6534 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6535 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006536 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006537 }
6538#endif
6539#ifdef VK_NVX_device_generated_commands
6540 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6541 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006542 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006543 }
6544 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6545 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006546 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006547 }
6548 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6549 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006550 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006551 }
6552 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6553 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006554 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006555 }
6556 if (!strcmp(name, "vkCreateObjectTableNVX"))
6557 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006558 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006559 }
6560 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6561 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006562 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006563 }
6564 if (!strcmp(name, "vkRegisterObjectsNVX"))
6565 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006566 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006567 }
6568 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6569 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006570 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006571 }
6572 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6573 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006574 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006575 }
6576#endif
6577#ifdef VK_NV_clip_space_w_scaling
6578 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
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_direct_mode_display
6584 if (!strcmp(name, "vkReleaseDisplayEXT"))
6585 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006586 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006587 }
6588#endif
6589#ifdef VK_EXT_acquire_xlib_display
6590 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6591 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006592 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006593 }
6594 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6595 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006596 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006597 }
6598#endif
6599#ifdef VK_EXT_display_surface_counter
6600 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6601 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006602 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006603 }
6604#endif
6605#ifdef VK_EXT_display_control
6606 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6607 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006608 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006609 }
6610 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6611 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006612 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006613 }
6614 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6615 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006616 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006617 }
6618 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6619 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006620 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006621 }
6622#endif
6623#ifdef VK_GOOGLE_display_timing
6624 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6625 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006626 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006627 }
6628 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6629 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006630 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006631 }
6632#endif
6633#ifdef VK_EXT_discard_rectangles
6634 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6635 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006636 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006637 }
6638#endif
6639#ifdef VK_EXT_hdr_metadata
6640 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6641 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006642 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006643 }
6644#endif
6645#ifdef VK_MVK_ios_surface
6646 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6647 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006648 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006649 }
6650#endif
6651#ifdef VK_MVK_macos_surface
6652 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6653 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006654 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006655 }
6656#endif
6657#ifdef VK_EXT_debug_utils
6658 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6659 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006660 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006661 }
6662 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6663 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006664 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006665 }
6666 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6667 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006668 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006669 }
6670 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6671 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006672 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006673 }
6674 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6675 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006676 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006677 }
6678 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6679 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006680 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006681 }
6682 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6683 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006684 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006685 }
6686 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6687 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006688 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006689 }
6690 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6691 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006692 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006693 }
6694 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6695 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006696 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006697 }
6698 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6699 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006700 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006701 }
6702#endif
6703#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6704 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6705 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006706 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006707 }
6708 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6709 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006710 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006711 }
6712#endif
6713#ifdef VK_EXT_sample_locations
6714 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6715 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006716 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006717 }
6718 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6719 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006720 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006721 }
6722#endif
6723#ifdef VK_EXT_validation_cache
6724 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6725 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006726 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006727 }
6728 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6729 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006730 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006731 }
6732 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6733 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006734 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006735 }
6736 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6737 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006738 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006739 }
6740#endif
6741#ifdef VK_EXT_external_memory_host
6742 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6743 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006744 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006745 }
6746#endif
6747#ifdef VK_AMD_buffer_marker
6748 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6749 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006750 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006751 }
6752#endif
6753#ifdef VK_NV_device_diagnostic_checkpoints
6754 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6755 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006756 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006757 }
6758 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6759 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006760 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006761 }
6762#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006763#ifdef VK_GOOGLE_address_space
6764 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6765 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006766 return nullptr;
6767 }
6768#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006769#ifdef VK_GOOGLE_color_buffer
6770 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6771 {
6772 return nullptr;
6773 }
6774 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6775 {
6776 return nullptr;
6777 }
6778#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006779#ifdef VK_GOOGLE_sized_descriptor_update_template
6780 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6781 {
6782 return nullptr;
6783 }
6784#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006785#ifdef VK_GOOGLE_async_command_buffers
6786 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6787 {
6788 return nullptr;
6789 }
6790 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6791 {
6792 return nullptr;
6793 }
6794 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6795 {
6796 return nullptr;
6797 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006798 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6799 {
6800 return nullptr;
6801 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006802#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006803#ifdef VK_GOOGLE_create_resources_with_requirements
6804 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6805 {
6806 return nullptr;
6807 }
6808 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6809 {
6810 return nullptr;
6811 }
6812#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006813#ifdef VK_GOOGLE_address_space_info
6814 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6815 {
6816 return nullptr;
6817 }
6818#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006819#ifdef VK_GOOGLE_free_memory_sync
6820 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6821 {
6822 return nullptr;
6823 }
6824#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07006825#ifdef VK_GOOGLE_async_queue_submit
6826 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
6827 {
6828 return nullptr;
6829 }
6830 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
6831 {
6832 return nullptr;
6833 }
6834 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
6835 {
6836 return nullptr;
6837 }
6838 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
6839 {
6840 return nullptr;
6841 }
6842#endif
Yilong Lia48b0102020-09-15 15:08:28 -07006843#ifdef VK_GOOGLE_linear_image_layout
6844 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
6845 {
6846 return nullptr;
6847 }
6848#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006849 return nullptr;
6850}
6851void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6852 auto resources = ResourceTracker::get();
6853 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6854#ifdef VK_VERSION_1_0
6855 if (!strcmp(name, "vkCreateInstance"))
6856 {
6857 return (void*)entry_vkCreateInstance;
6858 }
6859 if (!strcmp(name, "vkDestroyInstance"))
6860 {
6861 return (void*)entry_vkDestroyInstance;
6862 }
6863 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6864 {
6865 return (void*)entry_vkEnumeratePhysicalDevices;
6866 }
6867 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6868 {
6869 return (void*)entry_vkGetPhysicalDeviceFeatures;
6870 }
6871 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6872 {
6873 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6874 }
6875 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6876 {
6877 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6878 }
6879 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6880 {
6881 return (void*)entry_vkGetPhysicalDeviceProperties;
6882 }
6883 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6884 {
6885 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6886 }
6887 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6888 {
6889 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6890 }
6891 if (!strcmp(name, "vkGetInstanceProcAddr"))
6892 {
6893 return (void*)entry_vkGetInstanceProcAddr;
6894 }
6895 if (!strcmp(name, "vkGetDeviceProcAddr"))
6896 {
6897 return (void*)entry_vkGetDeviceProcAddr;
6898 }
6899 if (!strcmp(name, "vkCreateDevice"))
6900 {
6901 return (void*)entry_vkCreateDevice;
6902 }
6903 if (!strcmp(name, "vkDestroyDevice"))
6904 {
6905 return (void*)entry_vkDestroyDevice;
6906 }
6907 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6908 {
6909 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6910 }
6911 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6912 {
6913 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6914 }
6915 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6916 {
6917 return (void*)entry_vkEnumerateInstanceLayerProperties;
6918 }
6919 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6920 {
6921 return (void*)entry_vkEnumerateDeviceLayerProperties;
6922 }
6923 if (!strcmp(name, "vkGetDeviceQueue"))
6924 {
6925 return (void*)entry_vkGetDeviceQueue;
6926 }
6927 if (!strcmp(name, "vkQueueSubmit"))
6928 {
6929 return (void*)entry_vkQueueSubmit;
6930 }
6931 if (!strcmp(name, "vkQueueWaitIdle"))
6932 {
6933 return (void*)entry_vkQueueWaitIdle;
6934 }
6935 if (!strcmp(name, "vkDeviceWaitIdle"))
6936 {
6937 return (void*)entry_vkDeviceWaitIdle;
6938 }
6939 if (!strcmp(name, "vkAllocateMemory"))
6940 {
6941 return (void*)entry_vkAllocateMemory;
6942 }
6943 if (!strcmp(name, "vkFreeMemory"))
6944 {
6945 return (void*)entry_vkFreeMemory;
6946 }
6947 if (!strcmp(name, "vkMapMemory"))
6948 {
6949 return (void*)entry_vkMapMemory;
6950 }
6951 if (!strcmp(name, "vkUnmapMemory"))
6952 {
6953 return (void*)entry_vkUnmapMemory;
6954 }
6955 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6956 {
6957 return (void*)entry_vkFlushMappedMemoryRanges;
6958 }
6959 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6960 {
6961 return (void*)entry_vkInvalidateMappedMemoryRanges;
6962 }
6963 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6964 {
6965 return (void*)entry_vkGetDeviceMemoryCommitment;
6966 }
6967 if (!strcmp(name, "vkBindBufferMemory"))
6968 {
6969 return (void*)entry_vkBindBufferMemory;
6970 }
6971 if (!strcmp(name, "vkBindImageMemory"))
6972 {
6973 return (void*)entry_vkBindImageMemory;
6974 }
6975 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6976 {
6977 return (void*)entry_vkGetBufferMemoryRequirements;
6978 }
6979 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6980 {
6981 return (void*)entry_vkGetImageMemoryRequirements;
6982 }
6983 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6984 {
6985 return (void*)entry_vkGetImageSparseMemoryRequirements;
6986 }
6987 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6988 {
6989 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6990 }
6991 if (!strcmp(name, "vkQueueBindSparse"))
6992 {
6993 return (void*)entry_vkQueueBindSparse;
6994 }
6995 if (!strcmp(name, "vkCreateFence"))
6996 {
6997 return (void*)entry_vkCreateFence;
6998 }
6999 if (!strcmp(name, "vkDestroyFence"))
7000 {
7001 return (void*)entry_vkDestroyFence;
7002 }
7003 if (!strcmp(name, "vkResetFences"))
7004 {
7005 return (void*)entry_vkResetFences;
7006 }
7007 if (!strcmp(name, "vkGetFenceStatus"))
7008 {
7009 return (void*)entry_vkGetFenceStatus;
7010 }
7011 if (!strcmp(name, "vkWaitForFences"))
7012 {
7013 return (void*)entry_vkWaitForFences;
7014 }
7015 if (!strcmp(name, "vkCreateSemaphore"))
7016 {
7017 return (void*)entry_vkCreateSemaphore;
7018 }
7019 if (!strcmp(name, "vkDestroySemaphore"))
7020 {
7021 return (void*)entry_vkDestroySemaphore;
7022 }
7023 if (!strcmp(name, "vkCreateEvent"))
7024 {
7025 return (void*)entry_vkCreateEvent;
7026 }
7027 if (!strcmp(name, "vkDestroyEvent"))
7028 {
7029 return (void*)entry_vkDestroyEvent;
7030 }
7031 if (!strcmp(name, "vkGetEventStatus"))
7032 {
7033 return (void*)entry_vkGetEventStatus;
7034 }
7035 if (!strcmp(name, "vkSetEvent"))
7036 {
7037 return (void*)entry_vkSetEvent;
7038 }
7039 if (!strcmp(name, "vkResetEvent"))
7040 {
7041 return (void*)entry_vkResetEvent;
7042 }
7043 if (!strcmp(name, "vkCreateQueryPool"))
7044 {
7045 return (void*)entry_vkCreateQueryPool;
7046 }
7047 if (!strcmp(name, "vkDestroyQueryPool"))
7048 {
7049 return (void*)entry_vkDestroyQueryPool;
7050 }
7051 if (!strcmp(name, "vkGetQueryPoolResults"))
7052 {
7053 return (void*)entry_vkGetQueryPoolResults;
7054 }
7055 if (!strcmp(name, "vkCreateBuffer"))
7056 {
7057 return (void*)entry_vkCreateBuffer;
7058 }
7059 if (!strcmp(name, "vkDestroyBuffer"))
7060 {
7061 return (void*)entry_vkDestroyBuffer;
7062 }
7063 if (!strcmp(name, "vkCreateBufferView"))
7064 {
7065 return (void*)entry_vkCreateBufferView;
7066 }
7067 if (!strcmp(name, "vkDestroyBufferView"))
7068 {
7069 return (void*)entry_vkDestroyBufferView;
7070 }
7071 if (!strcmp(name, "vkCreateImage"))
7072 {
7073 return (void*)entry_vkCreateImage;
7074 }
7075 if (!strcmp(name, "vkDestroyImage"))
7076 {
7077 return (void*)entry_vkDestroyImage;
7078 }
7079 if (!strcmp(name, "vkGetImageSubresourceLayout"))
7080 {
7081 return (void*)entry_vkGetImageSubresourceLayout;
7082 }
7083 if (!strcmp(name, "vkCreateImageView"))
7084 {
7085 return (void*)entry_vkCreateImageView;
7086 }
7087 if (!strcmp(name, "vkDestroyImageView"))
7088 {
7089 return (void*)entry_vkDestroyImageView;
7090 }
7091 if (!strcmp(name, "vkCreateShaderModule"))
7092 {
7093 return (void*)entry_vkCreateShaderModule;
7094 }
7095 if (!strcmp(name, "vkDestroyShaderModule"))
7096 {
7097 return (void*)entry_vkDestroyShaderModule;
7098 }
7099 if (!strcmp(name, "vkCreatePipelineCache"))
7100 {
7101 return (void*)entry_vkCreatePipelineCache;
7102 }
7103 if (!strcmp(name, "vkDestroyPipelineCache"))
7104 {
7105 return (void*)entry_vkDestroyPipelineCache;
7106 }
7107 if (!strcmp(name, "vkGetPipelineCacheData"))
7108 {
7109 return (void*)entry_vkGetPipelineCacheData;
7110 }
7111 if (!strcmp(name, "vkMergePipelineCaches"))
7112 {
7113 return (void*)entry_vkMergePipelineCaches;
7114 }
7115 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7116 {
7117 return (void*)entry_vkCreateGraphicsPipelines;
7118 }
7119 if (!strcmp(name, "vkCreateComputePipelines"))
7120 {
7121 return (void*)entry_vkCreateComputePipelines;
7122 }
7123 if (!strcmp(name, "vkDestroyPipeline"))
7124 {
7125 return (void*)entry_vkDestroyPipeline;
7126 }
7127 if (!strcmp(name, "vkCreatePipelineLayout"))
7128 {
7129 return (void*)entry_vkCreatePipelineLayout;
7130 }
7131 if (!strcmp(name, "vkDestroyPipelineLayout"))
7132 {
7133 return (void*)entry_vkDestroyPipelineLayout;
7134 }
7135 if (!strcmp(name, "vkCreateSampler"))
7136 {
7137 return (void*)entry_vkCreateSampler;
7138 }
7139 if (!strcmp(name, "vkDestroySampler"))
7140 {
7141 return (void*)entry_vkDestroySampler;
7142 }
7143 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7144 {
7145 return (void*)entry_vkCreateDescriptorSetLayout;
7146 }
7147 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7148 {
7149 return (void*)entry_vkDestroyDescriptorSetLayout;
7150 }
7151 if (!strcmp(name, "vkCreateDescriptorPool"))
7152 {
7153 return (void*)entry_vkCreateDescriptorPool;
7154 }
7155 if (!strcmp(name, "vkDestroyDescriptorPool"))
7156 {
7157 return (void*)entry_vkDestroyDescriptorPool;
7158 }
7159 if (!strcmp(name, "vkResetDescriptorPool"))
7160 {
7161 return (void*)entry_vkResetDescriptorPool;
7162 }
7163 if (!strcmp(name, "vkAllocateDescriptorSets"))
7164 {
7165 return (void*)entry_vkAllocateDescriptorSets;
7166 }
7167 if (!strcmp(name, "vkFreeDescriptorSets"))
7168 {
7169 return (void*)entry_vkFreeDescriptorSets;
7170 }
7171 if (!strcmp(name, "vkUpdateDescriptorSets"))
7172 {
7173 return (void*)entry_vkUpdateDescriptorSets;
7174 }
7175 if (!strcmp(name, "vkCreateFramebuffer"))
7176 {
7177 return (void*)entry_vkCreateFramebuffer;
7178 }
7179 if (!strcmp(name, "vkDestroyFramebuffer"))
7180 {
7181 return (void*)entry_vkDestroyFramebuffer;
7182 }
7183 if (!strcmp(name, "vkCreateRenderPass"))
7184 {
7185 return (void*)entry_vkCreateRenderPass;
7186 }
7187 if (!strcmp(name, "vkDestroyRenderPass"))
7188 {
7189 return (void*)entry_vkDestroyRenderPass;
7190 }
7191 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7192 {
7193 return (void*)entry_vkGetRenderAreaGranularity;
7194 }
7195 if (!strcmp(name, "vkCreateCommandPool"))
7196 {
7197 return (void*)entry_vkCreateCommandPool;
7198 }
7199 if (!strcmp(name, "vkDestroyCommandPool"))
7200 {
7201 return (void*)entry_vkDestroyCommandPool;
7202 }
7203 if (!strcmp(name, "vkResetCommandPool"))
7204 {
7205 return (void*)entry_vkResetCommandPool;
7206 }
7207 if (!strcmp(name, "vkAllocateCommandBuffers"))
7208 {
7209 return (void*)entry_vkAllocateCommandBuffers;
7210 }
7211 if (!strcmp(name, "vkFreeCommandBuffers"))
7212 {
7213 return (void*)entry_vkFreeCommandBuffers;
7214 }
7215 if (!strcmp(name, "vkBeginCommandBuffer"))
7216 {
7217 return (void*)entry_vkBeginCommandBuffer;
7218 }
7219 if (!strcmp(name, "vkEndCommandBuffer"))
7220 {
7221 return (void*)entry_vkEndCommandBuffer;
7222 }
7223 if (!strcmp(name, "vkResetCommandBuffer"))
7224 {
7225 return (void*)entry_vkResetCommandBuffer;
7226 }
7227 if (!strcmp(name, "vkCmdBindPipeline"))
7228 {
7229 return (void*)entry_vkCmdBindPipeline;
7230 }
7231 if (!strcmp(name, "vkCmdSetViewport"))
7232 {
7233 return (void*)entry_vkCmdSetViewport;
7234 }
7235 if (!strcmp(name, "vkCmdSetScissor"))
7236 {
7237 return (void*)entry_vkCmdSetScissor;
7238 }
7239 if (!strcmp(name, "vkCmdSetLineWidth"))
7240 {
7241 return (void*)entry_vkCmdSetLineWidth;
7242 }
7243 if (!strcmp(name, "vkCmdSetDepthBias"))
7244 {
7245 return (void*)entry_vkCmdSetDepthBias;
7246 }
7247 if (!strcmp(name, "vkCmdSetBlendConstants"))
7248 {
7249 return (void*)entry_vkCmdSetBlendConstants;
7250 }
7251 if (!strcmp(name, "vkCmdSetDepthBounds"))
7252 {
7253 return (void*)entry_vkCmdSetDepthBounds;
7254 }
7255 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7256 {
7257 return (void*)entry_vkCmdSetStencilCompareMask;
7258 }
7259 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7260 {
7261 return (void*)entry_vkCmdSetStencilWriteMask;
7262 }
7263 if (!strcmp(name, "vkCmdSetStencilReference"))
7264 {
7265 return (void*)entry_vkCmdSetStencilReference;
7266 }
7267 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7268 {
7269 return (void*)entry_vkCmdBindDescriptorSets;
7270 }
7271 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7272 {
7273 return (void*)entry_vkCmdBindIndexBuffer;
7274 }
7275 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7276 {
7277 return (void*)entry_vkCmdBindVertexBuffers;
7278 }
7279 if (!strcmp(name, "vkCmdDraw"))
7280 {
7281 return (void*)entry_vkCmdDraw;
7282 }
7283 if (!strcmp(name, "vkCmdDrawIndexed"))
7284 {
7285 return (void*)entry_vkCmdDrawIndexed;
7286 }
7287 if (!strcmp(name, "vkCmdDrawIndirect"))
7288 {
7289 return (void*)entry_vkCmdDrawIndirect;
7290 }
7291 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7292 {
7293 return (void*)entry_vkCmdDrawIndexedIndirect;
7294 }
7295 if (!strcmp(name, "vkCmdDispatch"))
7296 {
7297 return (void*)entry_vkCmdDispatch;
7298 }
7299 if (!strcmp(name, "vkCmdDispatchIndirect"))
7300 {
7301 return (void*)entry_vkCmdDispatchIndirect;
7302 }
7303 if (!strcmp(name, "vkCmdCopyBuffer"))
7304 {
7305 return (void*)entry_vkCmdCopyBuffer;
7306 }
7307 if (!strcmp(name, "vkCmdCopyImage"))
7308 {
7309 return (void*)entry_vkCmdCopyImage;
7310 }
7311 if (!strcmp(name, "vkCmdBlitImage"))
7312 {
7313 return (void*)entry_vkCmdBlitImage;
7314 }
7315 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7316 {
7317 return (void*)entry_vkCmdCopyBufferToImage;
7318 }
7319 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7320 {
7321 return (void*)entry_vkCmdCopyImageToBuffer;
7322 }
7323 if (!strcmp(name, "vkCmdUpdateBuffer"))
7324 {
7325 return (void*)entry_vkCmdUpdateBuffer;
7326 }
7327 if (!strcmp(name, "vkCmdFillBuffer"))
7328 {
7329 return (void*)entry_vkCmdFillBuffer;
7330 }
7331 if (!strcmp(name, "vkCmdClearColorImage"))
7332 {
7333 return (void*)entry_vkCmdClearColorImage;
7334 }
7335 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7336 {
7337 return (void*)entry_vkCmdClearDepthStencilImage;
7338 }
7339 if (!strcmp(name, "vkCmdClearAttachments"))
7340 {
7341 return (void*)entry_vkCmdClearAttachments;
7342 }
7343 if (!strcmp(name, "vkCmdResolveImage"))
7344 {
7345 return (void*)entry_vkCmdResolveImage;
7346 }
7347 if (!strcmp(name, "vkCmdSetEvent"))
7348 {
7349 return (void*)entry_vkCmdSetEvent;
7350 }
7351 if (!strcmp(name, "vkCmdResetEvent"))
7352 {
7353 return (void*)entry_vkCmdResetEvent;
7354 }
7355 if (!strcmp(name, "vkCmdWaitEvents"))
7356 {
7357 return (void*)entry_vkCmdWaitEvents;
7358 }
7359 if (!strcmp(name, "vkCmdPipelineBarrier"))
7360 {
7361 return (void*)entry_vkCmdPipelineBarrier;
7362 }
7363 if (!strcmp(name, "vkCmdBeginQuery"))
7364 {
7365 return (void*)entry_vkCmdBeginQuery;
7366 }
7367 if (!strcmp(name, "vkCmdEndQuery"))
7368 {
7369 return (void*)entry_vkCmdEndQuery;
7370 }
7371 if (!strcmp(name, "vkCmdResetQueryPool"))
7372 {
7373 return (void*)entry_vkCmdResetQueryPool;
7374 }
7375 if (!strcmp(name, "vkCmdWriteTimestamp"))
7376 {
7377 return (void*)entry_vkCmdWriteTimestamp;
7378 }
7379 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7380 {
7381 return (void*)entry_vkCmdCopyQueryPoolResults;
7382 }
7383 if (!strcmp(name, "vkCmdPushConstants"))
7384 {
7385 return (void*)entry_vkCmdPushConstants;
7386 }
7387 if (!strcmp(name, "vkCmdBeginRenderPass"))
7388 {
7389 return (void*)entry_vkCmdBeginRenderPass;
7390 }
7391 if (!strcmp(name, "vkCmdNextSubpass"))
7392 {
7393 return (void*)entry_vkCmdNextSubpass;
7394 }
7395 if (!strcmp(name, "vkCmdEndRenderPass"))
7396 {
7397 return (void*)entry_vkCmdEndRenderPass;
7398 }
7399 if (!strcmp(name, "vkCmdExecuteCommands"))
7400 {
7401 return (void*)entry_vkCmdExecuteCommands;
7402 }
7403#endif
7404#ifdef VK_VERSION_1_1
7405 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7406 {
7407 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7408 }
7409 if (!strcmp(name, "vkBindBufferMemory2"))
7410 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007411 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007412 }
7413 if (!strcmp(name, "vkBindImageMemory2"))
7414 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007415 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007416 }
7417 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7418 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007419 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007420 }
7421 if (!strcmp(name, "vkCmdSetDeviceMask"))
7422 {
7423 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7424 }
7425 if (!strcmp(name, "vkCmdDispatchBase"))
7426 {
7427 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7428 }
7429 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7430 {
7431 return nullptr;
7432 }
7433 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7434 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007435 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007436 }
7437 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7438 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007439 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007440 }
7441 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7442 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007443 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007444 }
7445 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7446 {
7447 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7448 }
7449 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7450 {
7451 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7452 }
7453 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7454 {
7455 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7456 }
7457 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7458 {
7459 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7460 }
7461 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7462 {
7463 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7464 }
7465 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7466 {
7467 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7468 }
7469 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7470 {
7471 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7472 }
7473 if (!strcmp(name, "vkTrimCommandPool"))
7474 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007475 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007476 }
7477 if (!strcmp(name, "vkGetDeviceQueue2"))
7478 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007479 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007480 }
7481 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7482 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007483 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007484 }
7485 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7486 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007487 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007488 }
7489 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7490 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007491 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007492 }
7493 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7494 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007495 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007496 }
7497 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7498 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007499 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007500 }
7501 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7502 {
7503 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7504 }
7505 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7506 {
7507 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7508 }
7509 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7510 {
7511 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7512 }
7513 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7514 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007515 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007516 }
7517#endif
7518#ifdef VK_KHR_surface
7519 if (!strcmp(name, "vkDestroySurfaceKHR"))
7520 {
7521 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7522 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7523 }
7524 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7525 {
7526 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7527 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7528 }
7529 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7530 {
7531 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7532 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7533 }
7534 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7535 {
7536 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7537 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7538 }
7539 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7540 {
7541 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7542 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7543 }
7544#endif
7545#ifdef VK_KHR_swapchain
7546 if (!strcmp(name, "vkCreateSwapchainKHR"))
7547 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007548 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007549 }
7550 if (!strcmp(name, "vkDestroySwapchainKHR"))
7551 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007552 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007553 }
7554 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7555 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007556 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007557 }
7558 if (!strcmp(name, "vkAcquireNextImageKHR"))
7559 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007560 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007561 }
7562 if (!strcmp(name, "vkQueuePresentKHR"))
7563 {
7564 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7565 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7566 }
7567 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7568 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007569 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007570 }
7571 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7572 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007573 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007574 }
7575 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7576 {
7577 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7578 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7579 }
7580 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7581 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007582 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007583 }
7584#endif
7585#ifdef VK_KHR_display
7586 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7587 {
7588 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7589 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7590 }
7591 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7592 {
7593 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7594 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7595 }
7596 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7597 {
7598 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7599 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7600 }
7601 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7602 {
7603 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7604 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7605 }
7606 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7607 {
7608 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7609 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7610 }
7611 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7612 {
7613 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7614 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7615 }
7616 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7617 {
7618 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7619 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7620 }
7621#endif
7622#ifdef VK_KHR_display_swapchain
7623 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7624 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007625 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007626 }
7627#endif
7628#ifdef VK_KHR_xlib_surface
7629 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7630 {
7631 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7632 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7633 }
7634 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7635 {
7636 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7637 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7638 }
7639#endif
7640#ifdef VK_KHR_xcb_surface
7641 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7642 {
7643 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7644 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7645 }
7646 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7647 {
7648 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7649 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7650 }
7651#endif
7652#ifdef VK_KHR_wayland_surface
7653 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7654 {
7655 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7656 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7657 }
7658 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7659 {
7660 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7661 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7662 }
7663#endif
7664#ifdef VK_KHR_mir_surface
7665 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7666 {
7667 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7668 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7669 }
7670 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7671 {
7672 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7673 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7674 }
7675#endif
7676#ifdef VK_KHR_android_surface
7677 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7678 {
7679 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7680 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7681 }
7682#endif
7683#ifdef VK_KHR_win32_surface
7684 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7685 {
7686 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7687 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7688 }
7689 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7690 {
7691 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7692 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7693 }
7694#endif
7695#ifdef VK_KHR_get_physical_device_properties2
7696 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7697 {
7698 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7699 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7700 }
7701 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7702 {
7703 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7704 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7705 }
7706 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7707 {
7708 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7709 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7710 }
7711 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7712 {
7713 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7714 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7715 }
7716 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7717 {
7718 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7719 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7720 }
7721 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7722 {
7723 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7724 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7725 }
7726 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7727 {
7728 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7729 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7730 }
7731#endif
7732#ifdef VK_KHR_device_group
7733 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7734 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007735 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007736 }
7737 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7738 {
7739 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7740 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7741 }
7742 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7743 {
7744 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7745 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7746 }
7747#endif
7748#ifdef VK_KHR_maintenance1
7749 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7750 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007751 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007752 }
7753#endif
7754#ifdef VK_KHR_device_group_creation
7755 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7756 {
7757 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7758 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7759 }
7760#endif
7761#ifdef VK_KHR_external_memory_capabilities
7762 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7763 {
7764 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7765 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7766 }
7767#endif
7768#ifdef VK_KHR_external_memory_win32
7769 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7770 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007771 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007772 }
7773 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7774 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007775 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007776 }
7777#endif
7778#ifdef VK_KHR_external_memory_fd
7779 if (!strcmp(name, "vkGetMemoryFdKHR"))
7780 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007781 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007782 }
7783 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7784 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007785 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007786 }
7787#endif
7788#ifdef VK_KHR_external_semaphore_capabilities
7789 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7790 {
7791 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7792 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7793 }
7794#endif
7795#ifdef VK_KHR_external_semaphore_win32
7796 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7797 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007798 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007799 }
7800 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7801 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007802 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007803 }
7804#endif
7805#ifdef VK_KHR_external_semaphore_fd
7806 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7807 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007808 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007809 }
7810 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7811 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007812 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007813 }
7814#endif
7815#ifdef VK_KHR_push_descriptor
7816 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7817 {
7818 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7819 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7820 }
7821 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7822 {
7823 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7824 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7825 }
7826#endif
7827#ifdef VK_KHR_descriptor_update_template
7828 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7829 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007830 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007831 }
7832 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7833 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007834 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007835 }
7836 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7837 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007838 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007839 }
7840#endif
7841#ifdef VK_KHR_create_renderpass2
7842 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7843 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007844 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007845 }
7846 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7847 {
7848 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7849 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7850 }
7851 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7852 {
7853 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7854 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7855 }
7856 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7857 {
7858 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7859 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7860 }
7861#endif
7862#ifdef VK_KHR_shared_presentable_image
7863 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7864 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007865 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007866 }
7867#endif
7868#ifdef VK_KHR_external_fence_capabilities
7869 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7870 {
7871 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7872 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7873 }
7874#endif
7875#ifdef VK_KHR_external_fence_win32
7876 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7877 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007878 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007879 }
7880 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7881 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007882 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007883 }
7884#endif
7885#ifdef VK_KHR_external_fence_fd
7886 if (!strcmp(name, "vkImportFenceFdKHR"))
7887 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007888 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007889 }
7890 if (!strcmp(name, "vkGetFenceFdKHR"))
7891 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007892 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007893 }
7894#endif
7895#ifdef VK_KHR_get_surface_capabilities2
7896 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7897 {
7898 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7899 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7900 }
7901 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7902 {
7903 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7904 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7905 }
7906#endif
7907#ifdef VK_KHR_get_display_properties2
7908 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7909 {
7910 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7911 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7912 }
7913 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7914 {
7915 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7916 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7917 }
7918 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7919 {
7920 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7921 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7922 }
7923 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7924 {
7925 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7926 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7927 }
7928#endif
7929#ifdef VK_KHR_get_memory_requirements2
7930 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7931 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007932 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007933 }
7934 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7935 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007936 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007937 }
7938 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7939 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007940 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007941 }
7942#endif
7943#ifdef VK_KHR_sampler_ycbcr_conversion
7944 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7945 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007946 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007947 }
7948 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7949 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007950 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007951 }
7952#endif
7953#ifdef VK_KHR_bind_memory2
7954 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7955 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007956 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007957 }
7958 if (!strcmp(name, "vkBindImageMemory2KHR"))
7959 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007960 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007961 }
7962#endif
7963#ifdef VK_KHR_maintenance3
7964 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7965 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007966 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007967 }
7968#endif
7969#ifdef VK_KHR_draw_indirect_count
7970 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7971 {
7972 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7973 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7974 }
7975 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7976 {
7977 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7978 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7979 }
7980#endif
7981#ifdef VK_ANDROID_native_buffer
7982 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7983 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007984 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007985 }
7986 if (!strcmp(name, "vkAcquireImageANDROID"))
7987 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007988 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007989 }
7990 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7991 {
7992 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7993 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7994 }
7995#endif
7996#ifdef VK_EXT_debug_report
7997 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7998 {
7999 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8000 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
8001 }
8002 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
8003 {
8004 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8005 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
8006 }
8007 if (!strcmp(name, "vkDebugReportMessageEXT"))
8008 {
8009 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
8010 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
8011 }
8012#endif
8013#ifdef VK_EXT_debug_marker
8014 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
8015 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008016 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008017 }
8018 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
8019 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008020 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008021 }
8022 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
8023 {
8024 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8025 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
8026 }
8027 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
8028 {
8029 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8030 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
8031 }
8032 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8033 {
8034 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8035 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8036 }
8037#endif
8038#ifdef VK_AMD_draw_indirect_count
8039 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8040 {
8041 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8042 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8043 }
8044 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8045 {
8046 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8047 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8048 }
8049#endif
8050#ifdef VK_AMD_shader_info
8051 if (!strcmp(name, "vkGetShaderInfoAMD"))
8052 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008053 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008054 }
8055#endif
8056#ifdef VK_NV_external_memory_capabilities
8057 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8058 {
8059 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
8060 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8061 }
8062#endif
8063#ifdef VK_NV_external_memory_win32
8064 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8065 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008066 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008067 }
8068#endif
8069#ifdef VK_NN_vi_surface
8070 if (!strcmp(name, "vkCreateViSurfaceNN"))
8071 {
8072 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
8073 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8074 }
8075#endif
8076#ifdef VK_EXT_conditional_rendering
8077 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8078 {
8079 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8080 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8081 }
8082 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8083 {
8084 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8085 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8086 }
8087#endif
8088#ifdef VK_NVX_device_generated_commands
8089 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8090 {
8091 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8092 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8093 }
8094 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8095 {
8096 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8097 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8098 }
8099 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8100 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008101 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008102 }
8103 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8104 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008105 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008106 }
8107 if (!strcmp(name, "vkCreateObjectTableNVX"))
8108 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008109 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008110 }
8111 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8112 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008113 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008114 }
8115 if (!strcmp(name, "vkRegisterObjectsNVX"))
8116 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008117 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008118 }
8119 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8120 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008121 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008122 }
8123 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8124 {
8125 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8126 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8127 }
8128#endif
8129#ifdef VK_NV_clip_space_w_scaling
8130 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8131 {
8132 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8133 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8134 }
8135#endif
8136#ifdef VK_EXT_direct_mode_display
8137 if (!strcmp(name, "vkReleaseDisplayEXT"))
8138 {
8139 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8140 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8141 }
8142#endif
8143#ifdef VK_EXT_acquire_xlib_display
8144 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8145 {
8146 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8147 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8148 }
8149 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8150 {
8151 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8152 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8153 }
8154#endif
8155#ifdef VK_EXT_display_surface_counter
8156 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8157 {
8158 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8159 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8160 }
8161#endif
8162#ifdef VK_EXT_display_control
8163 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8164 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008165 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008166 }
8167 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8168 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008169 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008170 }
8171 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8172 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008173 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008174 }
8175 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8176 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008177 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008178 }
8179#endif
8180#ifdef VK_GOOGLE_display_timing
8181 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8182 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008183 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008184 }
8185 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8186 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008187 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008188 }
8189#endif
8190#ifdef VK_EXT_discard_rectangles
8191 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8192 {
8193 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8194 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8195 }
8196#endif
8197#ifdef VK_EXT_hdr_metadata
8198 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8199 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008200 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008201 }
8202#endif
8203#ifdef VK_MVK_ios_surface
8204 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8205 {
8206 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8207 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8208 }
8209#endif
8210#ifdef VK_MVK_macos_surface
8211 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8212 {
8213 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8214 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8215 }
8216#endif
8217#ifdef VK_EXT_debug_utils
8218 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8219 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008220 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008221 }
8222 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8223 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008224 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008225 }
8226 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8227 {
8228 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8229 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8230 }
8231 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8232 {
8233 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8234 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8235 }
8236 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8237 {
8238 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8239 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8240 }
8241 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8242 {
8243 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8244 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8245 }
8246 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8247 {
8248 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8249 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8250 }
8251 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8252 {
8253 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8254 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8255 }
8256 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8257 {
8258 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8259 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8260 }
8261 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8262 {
8263 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8264 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8265 }
8266 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8267 {
8268 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8269 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8270 }
8271#endif
8272#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8273 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8274 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008275 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008276 }
8277 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8278 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008279 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008280 }
8281#endif
8282#ifdef VK_EXT_sample_locations
8283 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8284 {
8285 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8286 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8287 }
8288 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8289 {
8290 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8291 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8292 }
8293#endif
8294#ifdef VK_EXT_validation_cache
8295 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8296 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008297 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008298 }
8299 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8300 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008301 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008302 }
8303 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8304 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008305 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008306 }
8307 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8308 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008309 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008310 }
8311#endif
8312#ifdef VK_EXT_external_memory_host
8313 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8314 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008315 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008316 }
8317#endif
8318#ifdef VK_AMD_buffer_marker
8319 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8320 {
8321 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8322 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8323 }
8324#endif
8325#ifdef VK_NV_device_diagnostic_checkpoints
8326 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8327 {
8328 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8329 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8330 }
8331 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8332 {
8333 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8334 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8335 }
8336#endif
8337#ifdef VK_GOOGLE_address_space
8338 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8339 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008340 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008341 }
8342#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008343#ifdef VK_GOOGLE_color_buffer
8344 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8345 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008346 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008347 }
8348 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8349 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008350 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008351 }
8352#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008353#ifdef VK_GOOGLE_sized_descriptor_update_template
8354 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8355 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008356 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008357 }
8358#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008359#ifdef VK_GOOGLE_async_command_buffers
8360 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8361 {
8362 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8363 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8364 }
8365 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8366 {
8367 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8368 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8369 }
8370 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8371 {
8372 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8373 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8374 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008375 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8376 {
8377 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8378 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8379 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008380#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008381#ifdef VK_GOOGLE_create_resources_with_requirements
8382 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8383 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008384 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008385 }
8386 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8387 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008388 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008389 }
8390#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008391#ifdef VK_GOOGLE_address_space_info
8392 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8393 {
8394 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8395 }
8396#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008397#ifdef VK_GOOGLE_free_memory_sync
8398 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8399 {
8400 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8401 }
8402#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008403#ifdef VK_GOOGLE_async_queue_submit
8404 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
8405 {
8406 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8407 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
8408 }
8409 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
8410 {
8411 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8412 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
8413 }
8414 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
8415 {
8416 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8417 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
8418 }
8419 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
8420 {
8421 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8422 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
8423 }
8424#endif
Yilong Lia48b0102020-09-15 15:08:28 -07008425#ifdef VK_GOOGLE_linear_image_layout
8426 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
8427 {
8428 return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
8429 }
8430#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008431 return nullptr;
8432}
8433void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8434 auto resources = ResourceTracker::get();
8435 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8436#ifdef VK_VERSION_1_0
8437 if (!strcmp(name, "vkCreateInstance"))
8438 {
8439 return (void*)entry_vkCreateInstance;
8440 }
8441 if (!strcmp(name, "vkDestroyInstance"))
8442 {
8443 return (void*)entry_vkDestroyInstance;
8444 }
8445 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8446 {
8447 return (void*)entry_vkEnumeratePhysicalDevices;
8448 }
8449 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8450 {
8451 return (void*)entry_vkGetPhysicalDeviceFeatures;
8452 }
8453 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8454 {
8455 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8456 }
8457 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8458 {
8459 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8460 }
8461 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8462 {
8463 return (void*)entry_vkGetPhysicalDeviceProperties;
8464 }
8465 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8466 {
8467 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8468 }
8469 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8470 {
8471 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8472 }
8473 if (!strcmp(name, "vkGetInstanceProcAddr"))
8474 {
8475 return (void*)entry_vkGetInstanceProcAddr;
8476 }
8477 if (!strcmp(name, "vkGetDeviceProcAddr"))
8478 {
8479 return (void*)entry_vkGetDeviceProcAddr;
8480 }
8481 if (!strcmp(name, "vkCreateDevice"))
8482 {
8483 return (void*)entry_vkCreateDevice;
8484 }
8485 if (!strcmp(name, "vkDestroyDevice"))
8486 {
8487 return (void*)entry_vkDestroyDevice;
8488 }
8489 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8490 {
8491 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8492 }
8493 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8494 {
8495 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8496 }
8497 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8498 {
8499 return (void*)entry_vkEnumerateInstanceLayerProperties;
8500 }
8501 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8502 {
8503 return (void*)entry_vkEnumerateDeviceLayerProperties;
8504 }
8505 if (!strcmp(name, "vkGetDeviceQueue"))
8506 {
8507 return (void*)entry_vkGetDeviceQueue;
8508 }
8509 if (!strcmp(name, "vkQueueSubmit"))
8510 {
8511 return (void*)entry_vkQueueSubmit;
8512 }
8513 if (!strcmp(name, "vkQueueWaitIdle"))
8514 {
8515 return (void*)entry_vkQueueWaitIdle;
8516 }
8517 if (!strcmp(name, "vkDeviceWaitIdle"))
8518 {
8519 return (void*)entry_vkDeviceWaitIdle;
8520 }
8521 if (!strcmp(name, "vkAllocateMemory"))
8522 {
8523 return (void*)entry_vkAllocateMemory;
8524 }
8525 if (!strcmp(name, "vkFreeMemory"))
8526 {
8527 return (void*)entry_vkFreeMemory;
8528 }
8529 if (!strcmp(name, "vkMapMemory"))
8530 {
8531 return (void*)entry_vkMapMemory;
8532 }
8533 if (!strcmp(name, "vkUnmapMemory"))
8534 {
8535 return (void*)entry_vkUnmapMemory;
8536 }
8537 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8538 {
8539 return (void*)entry_vkFlushMappedMemoryRanges;
8540 }
8541 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8542 {
8543 return (void*)entry_vkInvalidateMappedMemoryRanges;
8544 }
8545 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8546 {
8547 return (void*)entry_vkGetDeviceMemoryCommitment;
8548 }
8549 if (!strcmp(name, "vkBindBufferMemory"))
8550 {
8551 return (void*)entry_vkBindBufferMemory;
8552 }
8553 if (!strcmp(name, "vkBindImageMemory"))
8554 {
8555 return (void*)entry_vkBindImageMemory;
8556 }
8557 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8558 {
8559 return (void*)entry_vkGetBufferMemoryRequirements;
8560 }
8561 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8562 {
8563 return (void*)entry_vkGetImageMemoryRequirements;
8564 }
8565 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8566 {
8567 return (void*)entry_vkGetImageSparseMemoryRequirements;
8568 }
8569 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8570 {
8571 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8572 }
8573 if (!strcmp(name, "vkQueueBindSparse"))
8574 {
8575 return (void*)entry_vkQueueBindSparse;
8576 }
8577 if (!strcmp(name, "vkCreateFence"))
8578 {
8579 return (void*)entry_vkCreateFence;
8580 }
8581 if (!strcmp(name, "vkDestroyFence"))
8582 {
8583 return (void*)entry_vkDestroyFence;
8584 }
8585 if (!strcmp(name, "vkResetFences"))
8586 {
8587 return (void*)entry_vkResetFences;
8588 }
8589 if (!strcmp(name, "vkGetFenceStatus"))
8590 {
8591 return (void*)entry_vkGetFenceStatus;
8592 }
8593 if (!strcmp(name, "vkWaitForFences"))
8594 {
8595 return (void*)entry_vkWaitForFences;
8596 }
8597 if (!strcmp(name, "vkCreateSemaphore"))
8598 {
8599 return (void*)entry_vkCreateSemaphore;
8600 }
8601 if (!strcmp(name, "vkDestroySemaphore"))
8602 {
8603 return (void*)entry_vkDestroySemaphore;
8604 }
8605 if (!strcmp(name, "vkCreateEvent"))
8606 {
8607 return (void*)entry_vkCreateEvent;
8608 }
8609 if (!strcmp(name, "vkDestroyEvent"))
8610 {
8611 return (void*)entry_vkDestroyEvent;
8612 }
8613 if (!strcmp(name, "vkGetEventStatus"))
8614 {
8615 return (void*)entry_vkGetEventStatus;
8616 }
8617 if (!strcmp(name, "vkSetEvent"))
8618 {
8619 return (void*)entry_vkSetEvent;
8620 }
8621 if (!strcmp(name, "vkResetEvent"))
8622 {
8623 return (void*)entry_vkResetEvent;
8624 }
8625 if (!strcmp(name, "vkCreateQueryPool"))
8626 {
8627 return (void*)entry_vkCreateQueryPool;
8628 }
8629 if (!strcmp(name, "vkDestroyQueryPool"))
8630 {
8631 return (void*)entry_vkDestroyQueryPool;
8632 }
8633 if (!strcmp(name, "vkGetQueryPoolResults"))
8634 {
8635 return (void*)entry_vkGetQueryPoolResults;
8636 }
8637 if (!strcmp(name, "vkCreateBuffer"))
8638 {
8639 return (void*)entry_vkCreateBuffer;
8640 }
8641 if (!strcmp(name, "vkDestroyBuffer"))
8642 {
8643 return (void*)entry_vkDestroyBuffer;
8644 }
8645 if (!strcmp(name, "vkCreateBufferView"))
8646 {
8647 return (void*)entry_vkCreateBufferView;
8648 }
8649 if (!strcmp(name, "vkDestroyBufferView"))
8650 {
8651 return (void*)entry_vkDestroyBufferView;
8652 }
8653 if (!strcmp(name, "vkCreateImage"))
8654 {
8655 return (void*)entry_vkCreateImage;
8656 }
8657 if (!strcmp(name, "vkDestroyImage"))
8658 {
8659 return (void*)entry_vkDestroyImage;
8660 }
8661 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8662 {
8663 return (void*)entry_vkGetImageSubresourceLayout;
8664 }
8665 if (!strcmp(name, "vkCreateImageView"))
8666 {
8667 return (void*)entry_vkCreateImageView;
8668 }
8669 if (!strcmp(name, "vkDestroyImageView"))
8670 {
8671 return (void*)entry_vkDestroyImageView;
8672 }
8673 if (!strcmp(name, "vkCreateShaderModule"))
8674 {
8675 return (void*)entry_vkCreateShaderModule;
8676 }
8677 if (!strcmp(name, "vkDestroyShaderModule"))
8678 {
8679 return (void*)entry_vkDestroyShaderModule;
8680 }
8681 if (!strcmp(name, "vkCreatePipelineCache"))
8682 {
8683 return (void*)entry_vkCreatePipelineCache;
8684 }
8685 if (!strcmp(name, "vkDestroyPipelineCache"))
8686 {
8687 return (void*)entry_vkDestroyPipelineCache;
8688 }
8689 if (!strcmp(name, "vkGetPipelineCacheData"))
8690 {
8691 return (void*)entry_vkGetPipelineCacheData;
8692 }
8693 if (!strcmp(name, "vkMergePipelineCaches"))
8694 {
8695 return (void*)entry_vkMergePipelineCaches;
8696 }
8697 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8698 {
8699 return (void*)entry_vkCreateGraphicsPipelines;
8700 }
8701 if (!strcmp(name, "vkCreateComputePipelines"))
8702 {
8703 return (void*)entry_vkCreateComputePipelines;
8704 }
8705 if (!strcmp(name, "vkDestroyPipeline"))
8706 {
8707 return (void*)entry_vkDestroyPipeline;
8708 }
8709 if (!strcmp(name, "vkCreatePipelineLayout"))
8710 {
8711 return (void*)entry_vkCreatePipelineLayout;
8712 }
8713 if (!strcmp(name, "vkDestroyPipelineLayout"))
8714 {
8715 return (void*)entry_vkDestroyPipelineLayout;
8716 }
8717 if (!strcmp(name, "vkCreateSampler"))
8718 {
8719 return (void*)entry_vkCreateSampler;
8720 }
8721 if (!strcmp(name, "vkDestroySampler"))
8722 {
8723 return (void*)entry_vkDestroySampler;
8724 }
8725 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8726 {
8727 return (void*)entry_vkCreateDescriptorSetLayout;
8728 }
8729 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8730 {
8731 return (void*)entry_vkDestroyDescriptorSetLayout;
8732 }
8733 if (!strcmp(name, "vkCreateDescriptorPool"))
8734 {
8735 return (void*)entry_vkCreateDescriptorPool;
8736 }
8737 if (!strcmp(name, "vkDestroyDescriptorPool"))
8738 {
8739 return (void*)entry_vkDestroyDescriptorPool;
8740 }
8741 if (!strcmp(name, "vkResetDescriptorPool"))
8742 {
8743 return (void*)entry_vkResetDescriptorPool;
8744 }
8745 if (!strcmp(name, "vkAllocateDescriptorSets"))
8746 {
8747 return (void*)entry_vkAllocateDescriptorSets;
8748 }
8749 if (!strcmp(name, "vkFreeDescriptorSets"))
8750 {
8751 return (void*)entry_vkFreeDescriptorSets;
8752 }
8753 if (!strcmp(name, "vkUpdateDescriptorSets"))
8754 {
8755 return (void*)entry_vkUpdateDescriptorSets;
8756 }
8757 if (!strcmp(name, "vkCreateFramebuffer"))
8758 {
8759 return (void*)entry_vkCreateFramebuffer;
8760 }
8761 if (!strcmp(name, "vkDestroyFramebuffer"))
8762 {
8763 return (void*)entry_vkDestroyFramebuffer;
8764 }
8765 if (!strcmp(name, "vkCreateRenderPass"))
8766 {
8767 return (void*)entry_vkCreateRenderPass;
8768 }
8769 if (!strcmp(name, "vkDestroyRenderPass"))
8770 {
8771 return (void*)entry_vkDestroyRenderPass;
8772 }
8773 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8774 {
8775 return (void*)entry_vkGetRenderAreaGranularity;
8776 }
8777 if (!strcmp(name, "vkCreateCommandPool"))
8778 {
8779 return (void*)entry_vkCreateCommandPool;
8780 }
8781 if (!strcmp(name, "vkDestroyCommandPool"))
8782 {
8783 return (void*)entry_vkDestroyCommandPool;
8784 }
8785 if (!strcmp(name, "vkResetCommandPool"))
8786 {
8787 return (void*)entry_vkResetCommandPool;
8788 }
8789 if (!strcmp(name, "vkAllocateCommandBuffers"))
8790 {
8791 return (void*)entry_vkAllocateCommandBuffers;
8792 }
8793 if (!strcmp(name, "vkFreeCommandBuffers"))
8794 {
8795 return (void*)entry_vkFreeCommandBuffers;
8796 }
8797 if (!strcmp(name, "vkBeginCommandBuffer"))
8798 {
8799 return (void*)entry_vkBeginCommandBuffer;
8800 }
8801 if (!strcmp(name, "vkEndCommandBuffer"))
8802 {
8803 return (void*)entry_vkEndCommandBuffer;
8804 }
8805 if (!strcmp(name, "vkResetCommandBuffer"))
8806 {
8807 return (void*)entry_vkResetCommandBuffer;
8808 }
8809 if (!strcmp(name, "vkCmdBindPipeline"))
8810 {
8811 return (void*)entry_vkCmdBindPipeline;
8812 }
8813 if (!strcmp(name, "vkCmdSetViewport"))
8814 {
8815 return (void*)entry_vkCmdSetViewport;
8816 }
8817 if (!strcmp(name, "vkCmdSetScissor"))
8818 {
8819 return (void*)entry_vkCmdSetScissor;
8820 }
8821 if (!strcmp(name, "vkCmdSetLineWidth"))
8822 {
8823 return (void*)entry_vkCmdSetLineWidth;
8824 }
8825 if (!strcmp(name, "vkCmdSetDepthBias"))
8826 {
8827 return (void*)entry_vkCmdSetDepthBias;
8828 }
8829 if (!strcmp(name, "vkCmdSetBlendConstants"))
8830 {
8831 return (void*)entry_vkCmdSetBlendConstants;
8832 }
8833 if (!strcmp(name, "vkCmdSetDepthBounds"))
8834 {
8835 return (void*)entry_vkCmdSetDepthBounds;
8836 }
8837 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8838 {
8839 return (void*)entry_vkCmdSetStencilCompareMask;
8840 }
8841 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8842 {
8843 return (void*)entry_vkCmdSetStencilWriteMask;
8844 }
8845 if (!strcmp(name, "vkCmdSetStencilReference"))
8846 {
8847 return (void*)entry_vkCmdSetStencilReference;
8848 }
8849 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8850 {
8851 return (void*)entry_vkCmdBindDescriptorSets;
8852 }
8853 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8854 {
8855 return (void*)entry_vkCmdBindIndexBuffer;
8856 }
8857 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8858 {
8859 return (void*)entry_vkCmdBindVertexBuffers;
8860 }
8861 if (!strcmp(name, "vkCmdDraw"))
8862 {
8863 return (void*)entry_vkCmdDraw;
8864 }
8865 if (!strcmp(name, "vkCmdDrawIndexed"))
8866 {
8867 return (void*)entry_vkCmdDrawIndexed;
8868 }
8869 if (!strcmp(name, "vkCmdDrawIndirect"))
8870 {
8871 return (void*)entry_vkCmdDrawIndirect;
8872 }
8873 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8874 {
8875 return (void*)entry_vkCmdDrawIndexedIndirect;
8876 }
8877 if (!strcmp(name, "vkCmdDispatch"))
8878 {
8879 return (void*)entry_vkCmdDispatch;
8880 }
8881 if (!strcmp(name, "vkCmdDispatchIndirect"))
8882 {
8883 return (void*)entry_vkCmdDispatchIndirect;
8884 }
8885 if (!strcmp(name, "vkCmdCopyBuffer"))
8886 {
8887 return (void*)entry_vkCmdCopyBuffer;
8888 }
8889 if (!strcmp(name, "vkCmdCopyImage"))
8890 {
8891 return (void*)entry_vkCmdCopyImage;
8892 }
8893 if (!strcmp(name, "vkCmdBlitImage"))
8894 {
8895 return (void*)entry_vkCmdBlitImage;
8896 }
8897 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8898 {
8899 return (void*)entry_vkCmdCopyBufferToImage;
8900 }
8901 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8902 {
8903 return (void*)entry_vkCmdCopyImageToBuffer;
8904 }
8905 if (!strcmp(name, "vkCmdUpdateBuffer"))
8906 {
8907 return (void*)entry_vkCmdUpdateBuffer;
8908 }
8909 if (!strcmp(name, "vkCmdFillBuffer"))
8910 {
8911 return (void*)entry_vkCmdFillBuffer;
8912 }
8913 if (!strcmp(name, "vkCmdClearColorImage"))
8914 {
8915 return (void*)entry_vkCmdClearColorImage;
8916 }
8917 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8918 {
8919 return (void*)entry_vkCmdClearDepthStencilImage;
8920 }
8921 if (!strcmp(name, "vkCmdClearAttachments"))
8922 {
8923 return (void*)entry_vkCmdClearAttachments;
8924 }
8925 if (!strcmp(name, "vkCmdResolveImage"))
8926 {
8927 return (void*)entry_vkCmdResolveImage;
8928 }
8929 if (!strcmp(name, "vkCmdSetEvent"))
8930 {
8931 return (void*)entry_vkCmdSetEvent;
8932 }
8933 if (!strcmp(name, "vkCmdResetEvent"))
8934 {
8935 return (void*)entry_vkCmdResetEvent;
8936 }
8937 if (!strcmp(name, "vkCmdWaitEvents"))
8938 {
8939 return (void*)entry_vkCmdWaitEvents;
8940 }
8941 if (!strcmp(name, "vkCmdPipelineBarrier"))
8942 {
8943 return (void*)entry_vkCmdPipelineBarrier;
8944 }
8945 if (!strcmp(name, "vkCmdBeginQuery"))
8946 {
8947 return (void*)entry_vkCmdBeginQuery;
8948 }
8949 if (!strcmp(name, "vkCmdEndQuery"))
8950 {
8951 return (void*)entry_vkCmdEndQuery;
8952 }
8953 if (!strcmp(name, "vkCmdResetQueryPool"))
8954 {
8955 return (void*)entry_vkCmdResetQueryPool;
8956 }
8957 if (!strcmp(name, "vkCmdWriteTimestamp"))
8958 {
8959 return (void*)entry_vkCmdWriteTimestamp;
8960 }
8961 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8962 {
8963 return (void*)entry_vkCmdCopyQueryPoolResults;
8964 }
8965 if (!strcmp(name, "vkCmdPushConstants"))
8966 {
8967 return (void*)entry_vkCmdPushConstants;
8968 }
8969 if (!strcmp(name, "vkCmdBeginRenderPass"))
8970 {
8971 return (void*)entry_vkCmdBeginRenderPass;
8972 }
8973 if (!strcmp(name, "vkCmdNextSubpass"))
8974 {
8975 return (void*)entry_vkCmdNextSubpass;
8976 }
8977 if (!strcmp(name, "vkCmdEndRenderPass"))
8978 {
8979 return (void*)entry_vkCmdEndRenderPass;
8980 }
8981 if (!strcmp(name, "vkCmdExecuteCommands"))
8982 {
8983 return (void*)entry_vkCmdExecuteCommands;
8984 }
8985#endif
8986#ifdef VK_VERSION_1_1
8987 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8988 {
8989 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8990 }
8991 if (!strcmp(name, "vkBindBufferMemory2"))
8992 {
8993 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8994 }
8995 if (!strcmp(name, "vkBindImageMemory2"))
8996 {
8997 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8998 }
8999 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
9000 {
9001 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
9002 }
9003 if (!strcmp(name, "vkCmdSetDeviceMask"))
9004 {
9005 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
9006 }
9007 if (!strcmp(name, "vkCmdDispatchBase"))
9008 {
9009 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
9010 }
9011 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
9012 {
9013 return nullptr;
9014 }
9015 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
9016 {
9017 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
9018 }
9019 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
9020 {
9021 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
9022 }
9023 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
9024 {
9025 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
9026 }
9027 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
9028 {
9029 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
9030 }
9031 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
9032 {
9033 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
9034 }
9035 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
9036 {
9037 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
9038 }
9039 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9040 {
9041 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
9042 }
9043 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9044 {
9045 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
9046 }
9047 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9048 {
9049 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
9050 }
9051 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9052 {
9053 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
9054 }
9055 if (!strcmp(name, "vkTrimCommandPool"))
9056 {
9057 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
9058 }
9059 if (!strcmp(name, "vkGetDeviceQueue2"))
9060 {
9061 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
9062 }
9063 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9064 {
9065 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
9066 }
9067 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9068 {
9069 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
9070 }
9071 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9072 {
9073 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
9074 }
9075 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9076 {
9077 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
9078 }
9079 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9080 {
9081 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
9082 }
9083 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9084 {
9085 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
9086 }
9087 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9088 {
9089 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
9090 }
9091 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9092 {
9093 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
9094 }
9095 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9096 {
9097 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
9098 }
9099#endif
9100#ifdef VK_KHR_surface
9101 if (!strcmp(name, "vkDestroySurfaceKHR"))
9102 {
9103 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9104 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
9105 }
9106 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9107 {
9108 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9109 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
9110 }
9111 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9112 {
9113 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9114 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
9115 }
9116 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9117 {
9118 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9119 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
9120 }
9121 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9122 {
9123 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9124 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
9125 }
9126#endif
9127#ifdef VK_KHR_swapchain
9128 if (!strcmp(name, "vkCreateSwapchainKHR"))
9129 {
9130 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9131 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9132 }
9133 if (!strcmp(name, "vkDestroySwapchainKHR"))
9134 {
9135 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9136 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9137 }
9138 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9139 {
9140 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9141 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9142 }
9143 if (!strcmp(name, "vkAcquireNextImageKHR"))
9144 {
9145 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9146 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9147 }
9148 if (!strcmp(name, "vkQueuePresentKHR"))
9149 {
9150 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9151 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9152 }
9153 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9154 {
9155 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9156 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9157 }
9158 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9159 {
9160 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9161 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9162 }
9163 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9164 {
9165 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9166 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9167 }
9168 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9169 {
9170 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9171 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9172 }
9173#endif
9174#ifdef VK_KHR_display
9175 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9176 {
9177 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9178 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9179 }
9180 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9181 {
9182 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9183 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9184 }
9185 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9186 {
9187 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9188 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9189 }
9190 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9191 {
9192 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9193 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9194 }
9195 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9196 {
9197 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9198 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9199 }
9200 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9201 {
9202 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9203 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9204 }
9205 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9206 {
9207 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9208 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9209 }
9210#endif
9211#ifdef VK_KHR_display_swapchain
9212 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9213 {
9214 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9215 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9216 }
9217#endif
9218#ifdef VK_KHR_xlib_surface
9219 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9220 {
9221 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9222 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9223 }
9224 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9225 {
9226 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9227 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9228 }
9229#endif
9230#ifdef VK_KHR_xcb_surface
9231 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9232 {
9233 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9234 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9235 }
9236 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9237 {
9238 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9239 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9240 }
9241#endif
9242#ifdef VK_KHR_wayland_surface
9243 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9244 {
9245 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9246 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9247 }
9248 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9249 {
9250 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9251 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9252 }
9253#endif
9254#ifdef VK_KHR_mir_surface
9255 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9256 {
9257 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9258 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9259 }
9260 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9261 {
9262 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9263 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9264 }
9265#endif
9266#ifdef VK_KHR_android_surface
9267 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9268 {
9269 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9270 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9271 }
9272#endif
9273#ifdef VK_KHR_win32_surface
9274 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9275 {
9276 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9277 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9278 }
9279 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9280 {
9281 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9282 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9283 }
9284#endif
9285#ifdef VK_KHR_get_physical_device_properties2
9286 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9287 {
9288 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9289 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9290 }
9291 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9292 {
9293 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9294 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9295 }
9296 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9297 {
9298 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9299 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9300 }
9301 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9302 {
9303 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9304 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9305 }
9306 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9307 {
9308 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9309 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9310 }
9311 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9312 {
9313 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9314 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9315 }
9316 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9317 {
9318 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9319 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9320 }
9321#endif
9322#ifdef VK_KHR_device_group
9323 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9324 {
9325 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9326 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9327 }
9328 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9329 {
9330 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9331 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9332 }
9333 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9334 {
9335 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9336 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9337 }
9338#endif
9339#ifdef VK_KHR_maintenance1
9340 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9341 {
9342 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9343 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9344 }
9345#endif
9346#ifdef VK_KHR_device_group_creation
9347 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9348 {
9349 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9350 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9351 }
9352#endif
9353#ifdef VK_KHR_external_memory_capabilities
9354 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9355 {
9356 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9357 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9358 }
9359#endif
9360#ifdef VK_KHR_external_memory_win32
9361 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9362 {
9363 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9364 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9365 }
9366 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9367 {
9368 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9369 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9370 }
9371#endif
9372#ifdef VK_KHR_external_memory_fd
9373 if (!strcmp(name, "vkGetMemoryFdKHR"))
9374 {
9375 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9376 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9377 }
9378 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9379 {
9380 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9381 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9382 }
9383#endif
9384#ifdef VK_KHR_external_semaphore_capabilities
9385 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9386 {
9387 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9388 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9389 }
9390#endif
9391#ifdef VK_KHR_external_semaphore_win32
9392 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9393 {
9394 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9395 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9396 }
9397 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9398 {
9399 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9400 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9401 }
9402#endif
9403#ifdef VK_KHR_external_semaphore_fd
9404 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9405 {
9406 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9407 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9408 }
9409 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9410 {
9411 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9412 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9413 }
9414#endif
9415#ifdef VK_KHR_push_descriptor
9416 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9417 {
9418 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9419 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9420 }
9421 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9422 {
9423 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9424 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9425 }
9426#endif
9427#ifdef VK_KHR_descriptor_update_template
9428 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9429 {
9430 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9431 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9432 }
9433 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9434 {
9435 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9436 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9437 }
9438 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9439 {
9440 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9441 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9442 }
9443#endif
9444#ifdef VK_KHR_create_renderpass2
9445 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9446 {
9447 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9448 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9449 }
9450 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9451 {
9452 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9453 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9454 }
9455 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9456 {
9457 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9458 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9459 }
9460 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9461 {
9462 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9463 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9464 }
9465#endif
9466#ifdef VK_KHR_shared_presentable_image
9467 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9468 {
9469 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9470 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9471 }
9472#endif
9473#ifdef VK_KHR_external_fence_capabilities
9474 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9475 {
9476 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9477 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9478 }
9479#endif
9480#ifdef VK_KHR_external_fence_win32
9481 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9482 {
9483 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9484 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9485 }
9486 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9487 {
9488 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9489 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9490 }
9491#endif
9492#ifdef VK_KHR_external_fence_fd
9493 if (!strcmp(name, "vkImportFenceFdKHR"))
9494 {
9495 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9496 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9497 }
9498 if (!strcmp(name, "vkGetFenceFdKHR"))
9499 {
9500 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9501 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9502 }
9503#endif
9504#ifdef VK_KHR_get_surface_capabilities2
9505 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9506 {
9507 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9508 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9509 }
9510 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9511 {
9512 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9513 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9514 }
9515#endif
9516#ifdef VK_KHR_get_display_properties2
9517 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9518 {
9519 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9520 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9521 }
9522 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9523 {
9524 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9525 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9526 }
9527 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9528 {
9529 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9530 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9531 }
9532 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9533 {
9534 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9535 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9536 }
9537#endif
9538#ifdef VK_KHR_get_memory_requirements2
9539 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9540 {
9541 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9542 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9543 }
9544 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9545 {
9546 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9547 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9548 }
9549 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9550 {
9551 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9552 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9553 }
9554#endif
9555#ifdef VK_KHR_sampler_ycbcr_conversion
9556 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9557 {
9558 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9559 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9560 }
9561 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9562 {
9563 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9564 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9565 }
9566#endif
9567#ifdef VK_KHR_bind_memory2
9568 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9569 {
9570 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9571 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9572 }
9573 if (!strcmp(name, "vkBindImageMemory2KHR"))
9574 {
9575 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9576 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9577 }
9578#endif
9579#ifdef VK_KHR_maintenance3
9580 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9581 {
9582 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9583 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9584 }
9585#endif
9586#ifdef VK_KHR_draw_indirect_count
9587 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9588 {
9589 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9590 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9591 }
9592 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9593 {
9594 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9595 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9596 }
9597#endif
9598#ifdef VK_ANDROID_native_buffer
9599 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9600 {
9601 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9602 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9603 }
9604 if (!strcmp(name, "vkAcquireImageANDROID"))
9605 {
9606 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9607 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9608 }
9609 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9610 {
9611 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9612 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9613 }
9614#endif
9615#ifdef VK_EXT_debug_report
9616 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9617 {
9618 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9619 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9620 }
9621 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9622 {
9623 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9624 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9625 }
9626 if (!strcmp(name, "vkDebugReportMessageEXT"))
9627 {
9628 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9629 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9630 }
9631#endif
9632#ifdef VK_EXT_debug_marker
9633 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9634 {
9635 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9636 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9637 }
9638 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9639 {
9640 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9641 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9642 }
9643 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9644 {
9645 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9646 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9647 }
9648 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9649 {
9650 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9651 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9652 }
9653 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9654 {
9655 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9656 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9657 }
9658#endif
9659#ifdef VK_AMD_draw_indirect_count
9660 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9661 {
9662 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9663 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9664 }
9665 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9666 {
9667 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9668 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9669 }
9670#endif
9671#ifdef VK_AMD_shader_info
9672 if (!strcmp(name, "vkGetShaderInfoAMD"))
9673 {
9674 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9675 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9676 }
9677#endif
9678#ifdef VK_NV_external_memory_capabilities
9679 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9680 {
9681 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9682 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9683 }
9684#endif
9685#ifdef VK_NV_external_memory_win32
9686 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9687 {
9688 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9689 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9690 }
9691#endif
9692#ifdef VK_NN_vi_surface
9693 if (!strcmp(name, "vkCreateViSurfaceNN"))
9694 {
9695 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9696 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9697 }
9698#endif
9699#ifdef VK_EXT_conditional_rendering
9700 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9701 {
9702 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9703 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9704 }
9705 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9706 {
9707 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9708 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9709 }
9710#endif
9711#ifdef VK_NVX_device_generated_commands
9712 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9713 {
9714 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9715 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9716 }
9717 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9718 {
9719 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9720 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9721 }
9722 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9723 {
9724 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9725 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9726 }
9727 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9728 {
9729 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9730 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9731 }
9732 if (!strcmp(name, "vkCreateObjectTableNVX"))
9733 {
9734 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9735 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9736 }
9737 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9738 {
9739 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9740 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9741 }
9742 if (!strcmp(name, "vkRegisterObjectsNVX"))
9743 {
9744 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9745 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9746 }
9747 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9748 {
9749 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9750 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9751 }
9752 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9753 {
9754 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9755 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9756 }
9757#endif
9758#ifdef VK_NV_clip_space_w_scaling
9759 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9760 {
9761 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9762 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9763 }
9764#endif
9765#ifdef VK_EXT_direct_mode_display
9766 if (!strcmp(name, "vkReleaseDisplayEXT"))
9767 {
9768 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9769 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9770 }
9771#endif
9772#ifdef VK_EXT_acquire_xlib_display
9773 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9774 {
9775 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9776 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9777 }
9778 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9779 {
9780 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9781 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9782 }
9783#endif
9784#ifdef VK_EXT_display_surface_counter
9785 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9786 {
9787 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9788 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9789 }
9790#endif
9791#ifdef VK_EXT_display_control
9792 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9793 {
9794 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9795 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9796 }
9797 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9798 {
9799 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9800 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9801 }
9802 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9803 {
9804 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9805 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9806 }
9807 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9808 {
9809 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9810 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9811 }
9812#endif
9813#ifdef VK_GOOGLE_display_timing
9814 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9815 {
9816 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9817 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9818 }
9819 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9820 {
9821 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9822 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9823 }
9824#endif
9825#ifdef VK_EXT_discard_rectangles
9826 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9827 {
9828 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9829 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9830 }
9831#endif
9832#ifdef VK_EXT_hdr_metadata
9833 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9834 {
9835 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9836 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9837 }
9838#endif
9839#ifdef VK_MVK_ios_surface
9840 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9841 {
9842 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9843 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9844 }
9845#endif
9846#ifdef VK_MVK_macos_surface
9847 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9848 {
9849 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9850 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9851 }
9852#endif
9853#ifdef VK_EXT_debug_utils
9854 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9855 {
9856 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9857 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9858 }
9859 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9860 {
9861 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9862 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9863 }
9864 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9865 {
9866 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9867 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9868 }
9869 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9870 {
9871 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9872 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9873 }
9874 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9875 {
9876 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9877 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9878 }
9879 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9880 {
9881 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9882 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9883 }
9884 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9885 {
9886 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9887 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9888 }
9889 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9890 {
9891 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9892 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9893 }
9894 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9895 {
9896 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9897 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9898 }
9899 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9900 {
9901 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9902 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9903 }
9904 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9905 {
9906 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9907 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9908 }
9909#endif
9910#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9911 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9912 {
9913 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9914 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9915 }
9916 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9917 {
9918 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9919 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9920 }
9921#endif
9922#ifdef VK_EXT_sample_locations
9923 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9924 {
9925 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9926 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9927 }
9928 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9929 {
9930 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9931 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9932 }
9933#endif
9934#ifdef VK_EXT_validation_cache
9935 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9936 {
9937 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9938 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9939 }
9940 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9941 {
9942 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9943 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9944 }
9945 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9946 {
9947 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9948 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9949 }
9950 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9951 {
9952 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9953 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9954 }
9955#endif
9956#ifdef VK_EXT_external_memory_host
9957 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9958 {
9959 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9960 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9961 }
9962#endif
9963#ifdef VK_AMD_buffer_marker
9964 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9965 {
9966 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9967 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9968 }
9969#endif
9970#ifdef VK_NV_device_diagnostic_checkpoints
9971 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9972 {
9973 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9974 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9975 }
9976 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9977 {
9978 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9979 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9980 }
9981#endif
9982#ifdef VK_GOOGLE_address_space
9983 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9984 {
9985 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9986 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009987 }
9988#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009989#ifdef VK_GOOGLE_color_buffer
9990 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9991 {
9992 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9993 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9994 }
9995 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9996 {
9997 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9998 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9999 }
10000#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -070010001#ifdef VK_GOOGLE_sized_descriptor_update_template
10002 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
10003 {
10004 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
10005 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
10006 }
10007#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010008#ifdef VK_GOOGLE_async_command_buffers
10009 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
10010 {
10011 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10012 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
10013 }
10014 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
10015 {
10016 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10017 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
10018 }
10019 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
10020 {
10021 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10022 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
10023 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -070010024 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
10025 {
10026 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
10027 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
10028 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -070010029#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +000010030#ifdef VK_GOOGLE_create_resources_with_requirements
10031 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
10032 {
10033 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10034 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
10035 }
10036 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
10037 {
10038 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10039 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
10040 }
10041#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080010042#ifdef VK_GOOGLE_address_space_info
10043 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
10044 {
10045 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
10046 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
10047 }
10048#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070010049#ifdef VK_GOOGLE_free_memory_sync
10050 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
10051 {
10052 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
10053 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
10054 }
10055#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010056#ifdef VK_GOOGLE_async_queue_submit
10057 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
10058 {
10059 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10060 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
10061 }
10062 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
10063 {
10064 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10065 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
10066 }
10067 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
10068 {
10069 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10070 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
10071 }
10072 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
10073 {
10074 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10075 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
10076 }
10077#endif
Yilong Lia48b0102020-09-15 15:08:28 -070010078#ifdef VK_GOOGLE_linear_image_layout
10079 if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
10080 {
10081 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_linear_image_layout");
10082 return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
10083 }
10084#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010085 return nullptr;
10086}
10087
10088} // namespace goldfish_vk