blob: 51913e8e29b2e6492c7fcee5a1f302d391ee1ca0 [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
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005341void* goldfish_vulkan_get_proc_address(const char* name){
5342#ifdef VK_VERSION_1_0
5343 if (!strcmp(name, "vkCreateInstance"))
5344 {
5345 return (void*)entry_vkCreateInstance;
5346 }
5347 if (!strcmp(name, "vkDestroyInstance"))
5348 {
5349 return (void*)entry_vkDestroyInstance;
5350 }
5351 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
5352 {
5353 return (void*)entry_vkEnumeratePhysicalDevices;
5354 }
5355 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
5356 {
5357 return (void*)entry_vkGetPhysicalDeviceFeatures;
5358 }
5359 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
5360 {
5361 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
5362 }
5363 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
5364 {
5365 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
5366 }
5367 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
5368 {
5369 return (void*)entry_vkGetPhysicalDeviceProperties;
5370 }
5371 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
5372 {
5373 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
5374 }
5375 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
5376 {
5377 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
5378 }
5379 if (!strcmp(name, "vkGetInstanceProcAddr"))
5380 {
5381 return (void*)entry_vkGetInstanceProcAddr;
5382 }
5383 if (!strcmp(name, "vkGetDeviceProcAddr"))
5384 {
5385 return (void*)entry_vkGetDeviceProcAddr;
5386 }
5387 if (!strcmp(name, "vkCreateDevice"))
5388 {
5389 return (void*)entry_vkCreateDevice;
5390 }
5391 if (!strcmp(name, "vkDestroyDevice"))
5392 {
5393 return (void*)entry_vkDestroyDevice;
5394 }
5395 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
5396 {
5397 return (void*)entry_vkEnumerateInstanceExtensionProperties;
5398 }
5399 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
5400 {
5401 return (void*)entry_vkEnumerateDeviceExtensionProperties;
5402 }
5403 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
5404 {
5405 return (void*)entry_vkEnumerateInstanceLayerProperties;
5406 }
5407 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
5408 {
5409 return (void*)entry_vkEnumerateDeviceLayerProperties;
5410 }
5411 if (!strcmp(name, "vkGetDeviceQueue"))
5412 {
5413 return (void*)entry_vkGetDeviceQueue;
5414 }
5415 if (!strcmp(name, "vkQueueSubmit"))
5416 {
5417 return (void*)entry_vkQueueSubmit;
5418 }
5419 if (!strcmp(name, "vkQueueWaitIdle"))
5420 {
5421 return (void*)entry_vkQueueWaitIdle;
5422 }
5423 if (!strcmp(name, "vkDeviceWaitIdle"))
5424 {
5425 return (void*)entry_vkDeviceWaitIdle;
5426 }
5427 if (!strcmp(name, "vkAllocateMemory"))
5428 {
5429 return (void*)entry_vkAllocateMemory;
5430 }
5431 if (!strcmp(name, "vkFreeMemory"))
5432 {
5433 return (void*)entry_vkFreeMemory;
5434 }
5435 if (!strcmp(name, "vkMapMemory"))
5436 {
5437 return (void*)entry_vkMapMemory;
5438 }
5439 if (!strcmp(name, "vkUnmapMemory"))
5440 {
5441 return (void*)entry_vkUnmapMemory;
5442 }
5443 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
5444 {
5445 return (void*)entry_vkFlushMappedMemoryRanges;
5446 }
5447 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
5448 {
5449 return (void*)entry_vkInvalidateMappedMemoryRanges;
5450 }
5451 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
5452 {
5453 return (void*)entry_vkGetDeviceMemoryCommitment;
5454 }
5455 if (!strcmp(name, "vkBindBufferMemory"))
5456 {
5457 return (void*)entry_vkBindBufferMemory;
5458 }
5459 if (!strcmp(name, "vkBindImageMemory"))
5460 {
5461 return (void*)entry_vkBindImageMemory;
5462 }
5463 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
5464 {
5465 return (void*)entry_vkGetBufferMemoryRequirements;
5466 }
5467 if (!strcmp(name, "vkGetImageMemoryRequirements"))
5468 {
5469 return (void*)entry_vkGetImageMemoryRequirements;
5470 }
5471 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
5472 {
5473 return (void*)entry_vkGetImageSparseMemoryRequirements;
5474 }
5475 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
5476 {
5477 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
5478 }
5479 if (!strcmp(name, "vkQueueBindSparse"))
5480 {
5481 return (void*)entry_vkQueueBindSparse;
5482 }
5483 if (!strcmp(name, "vkCreateFence"))
5484 {
5485 return (void*)entry_vkCreateFence;
5486 }
5487 if (!strcmp(name, "vkDestroyFence"))
5488 {
5489 return (void*)entry_vkDestroyFence;
5490 }
5491 if (!strcmp(name, "vkResetFences"))
5492 {
5493 return (void*)entry_vkResetFences;
5494 }
5495 if (!strcmp(name, "vkGetFenceStatus"))
5496 {
5497 return (void*)entry_vkGetFenceStatus;
5498 }
5499 if (!strcmp(name, "vkWaitForFences"))
5500 {
5501 return (void*)entry_vkWaitForFences;
5502 }
5503 if (!strcmp(name, "vkCreateSemaphore"))
5504 {
5505 return (void*)entry_vkCreateSemaphore;
5506 }
5507 if (!strcmp(name, "vkDestroySemaphore"))
5508 {
5509 return (void*)entry_vkDestroySemaphore;
5510 }
5511 if (!strcmp(name, "vkCreateEvent"))
5512 {
5513 return (void*)entry_vkCreateEvent;
5514 }
5515 if (!strcmp(name, "vkDestroyEvent"))
5516 {
5517 return (void*)entry_vkDestroyEvent;
5518 }
5519 if (!strcmp(name, "vkGetEventStatus"))
5520 {
5521 return (void*)entry_vkGetEventStatus;
5522 }
5523 if (!strcmp(name, "vkSetEvent"))
5524 {
5525 return (void*)entry_vkSetEvent;
5526 }
5527 if (!strcmp(name, "vkResetEvent"))
5528 {
5529 return (void*)entry_vkResetEvent;
5530 }
5531 if (!strcmp(name, "vkCreateQueryPool"))
5532 {
5533 return (void*)entry_vkCreateQueryPool;
5534 }
5535 if (!strcmp(name, "vkDestroyQueryPool"))
5536 {
5537 return (void*)entry_vkDestroyQueryPool;
5538 }
5539 if (!strcmp(name, "vkGetQueryPoolResults"))
5540 {
5541 return (void*)entry_vkGetQueryPoolResults;
5542 }
5543 if (!strcmp(name, "vkCreateBuffer"))
5544 {
5545 return (void*)entry_vkCreateBuffer;
5546 }
5547 if (!strcmp(name, "vkDestroyBuffer"))
5548 {
5549 return (void*)entry_vkDestroyBuffer;
5550 }
5551 if (!strcmp(name, "vkCreateBufferView"))
5552 {
5553 return (void*)entry_vkCreateBufferView;
5554 }
5555 if (!strcmp(name, "vkDestroyBufferView"))
5556 {
5557 return (void*)entry_vkDestroyBufferView;
5558 }
5559 if (!strcmp(name, "vkCreateImage"))
5560 {
5561 return (void*)entry_vkCreateImage;
5562 }
5563 if (!strcmp(name, "vkDestroyImage"))
5564 {
5565 return (void*)entry_vkDestroyImage;
5566 }
5567 if (!strcmp(name, "vkGetImageSubresourceLayout"))
5568 {
5569 return (void*)entry_vkGetImageSubresourceLayout;
5570 }
5571 if (!strcmp(name, "vkCreateImageView"))
5572 {
5573 return (void*)entry_vkCreateImageView;
5574 }
5575 if (!strcmp(name, "vkDestroyImageView"))
5576 {
5577 return (void*)entry_vkDestroyImageView;
5578 }
5579 if (!strcmp(name, "vkCreateShaderModule"))
5580 {
5581 return (void*)entry_vkCreateShaderModule;
5582 }
5583 if (!strcmp(name, "vkDestroyShaderModule"))
5584 {
5585 return (void*)entry_vkDestroyShaderModule;
5586 }
5587 if (!strcmp(name, "vkCreatePipelineCache"))
5588 {
5589 return (void*)entry_vkCreatePipelineCache;
5590 }
5591 if (!strcmp(name, "vkDestroyPipelineCache"))
5592 {
5593 return (void*)entry_vkDestroyPipelineCache;
5594 }
5595 if (!strcmp(name, "vkGetPipelineCacheData"))
5596 {
5597 return (void*)entry_vkGetPipelineCacheData;
5598 }
5599 if (!strcmp(name, "vkMergePipelineCaches"))
5600 {
5601 return (void*)entry_vkMergePipelineCaches;
5602 }
5603 if (!strcmp(name, "vkCreateGraphicsPipelines"))
5604 {
5605 return (void*)entry_vkCreateGraphicsPipelines;
5606 }
5607 if (!strcmp(name, "vkCreateComputePipelines"))
5608 {
5609 return (void*)entry_vkCreateComputePipelines;
5610 }
5611 if (!strcmp(name, "vkDestroyPipeline"))
5612 {
5613 return (void*)entry_vkDestroyPipeline;
5614 }
5615 if (!strcmp(name, "vkCreatePipelineLayout"))
5616 {
5617 return (void*)entry_vkCreatePipelineLayout;
5618 }
5619 if (!strcmp(name, "vkDestroyPipelineLayout"))
5620 {
5621 return (void*)entry_vkDestroyPipelineLayout;
5622 }
5623 if (!strcmp(name, "vkCreateSampler"))
5624 {
5625 return (void*)entry_vkCreateSampler;
5626 }
5627 if (!strcmp(name, "vkDestroySampler"))
5628 {
5629 return (void*)entry_vkDestroySampler;
5630 }
5631 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
5632 {
5633 return (void*)entry_vkCreateDescriptorSetLayout;
5634 }
5635 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
5636 {
5637 return (void*)entry_vkDestroyDescriptorSetLayout;
5638 }
5639 if (!strcmp(name, "vkCreateDescriptorPool"))
5640 {
5641 return (void*)entry_vkCreateDescriptorPool;
5642 }
5643 if (!strcmp(name, "vkDestroyDescriptorPool"))
5644 {
5645 return (void*)entry_vkDestroyDescriptorPool;
5646 }
5647 if (!strcmp(name, "vkResetDescriptorPool"))
5648 {
5649 return (void*)entry_vkResetDescriptorPool;
5650 }
5651 if (!strcmp(name, "vkAllocateDescriptorSets"))
5652 {
5653 return (void*)entry_vkAllocateDescriptorSets;
5654 }
5655 if (!strcmp(name, "vkFreeDescriptorSets"))
5656 {
5657 return (void*)entry_vkFreeDescriptorSets;
5658 }
5659 if (!strcmp(name, "vkUpdateDescriptorSets"))
5660 {
5661 return (void*)entry_vkUpdateDescriptorSets;
5662 }
5663 if (!strcmp(name, "vkCreateFramebuffer"))
5664 {
5665 return (void*)entry_vkCreateFramebuffer;
5666 }
5667 if (!strcmp(name, "vkDestroyFramebuffer"))
5668 {
5669 return (void*)entry_vkDestroyFramebuffer;
5670 }
5671 if (!strcmp(name, "vkCreateRenderPass"))
5672 {
5673 return (void*)entry_vkCreateRenderPass;
5674 }
5675 if (!strcmp(name, "vkDestroyRenderPass"))
5676 {
5677 return (void*)entry_vkDestroyRenderPass;
5678 }
5679 if (!strcmp(name, "vkGetRenderAreaGranularity"))
5680 {
5681 return (void*)entry_vkGetRenderAreaGranularity;
5682 }
5683 if (!strcmp(name, "vkCreateCommandPool"))
5684 {
5685 return (void*)entry_vkCreateCommandPool;
5686 }
5687 if (!strcmp(name, "vkDestroyCommandPool"))
5688 {
5689 return (void*)entry_vkDestroyCommandPool;
5690 }
5691 if (!strcmp(name, "vkResetCommandPool"))
5692 {
5693 return (void*)entry_vkResetCommandPool;
5694 }
5695 if (!strcmp(name, "vkAllocateCommandBuffers"))
5696 {
5697 return (void*)entry_vkAllocateCommandBuffers;
5698 }
5699 if (!strcmp(name, "vkFreeCommandBuffers"))
5700 {
5701 return (void*)entry_vkFreeCommandBuffers;
5702 }
5703 if (!strcmp(name, "vkBeginCommandBuffer"))
5704 {
5705 return (void*)entry_vkBeginCommandBuffer;
5706 }
5707 if (!strcmp(name, "vkEndCommandBuffer"))
5708 {
5709 return (void*)entry_vkEndCommandBuffer;
5710 }
5711 if (!strcmp(name, "vkResetCommandBuffer"))
5712 {
5713 return (void*)entry_vkResetCommandBuffer;
5714 }
5715 if (!strcmp(name, "vkCmdBindPipeline"))
5716 {
5717 return (void*)entry_vkCmdBindPipeline;
5718 }
5719 if (!strcmp(name, "vkCmdSetViewport"))
5720 {
5721 return (void*)entry_vkCmdSetViewport;
5722 }
5723 if (!strcmp(name, "vkCmdSetScissor"))
5724 {
5725 return (void*)entry_vkCmdSetScissor;
5726 }
5727 if (!strcmp(name, "vkCmdSetLineWidth"))
5728 {
5729 return (void*)entry_vkCmdSetLineWidth;
5730 }
5731 if (!strcmp(name, "vkCmdSetDepthBias"))
5732 {
5733 return (void*)entry_vkCmdSetDepthBias;
5734 }
5735 if (!strcmp(name, "vkCmdSetBlendConstants"))
5736 {
5737 return (void*)entry_vkCmdSetBlendConstants;
5738 }
5739 if (!strcmp(name, "vkCmdSetDepthBounds"))
5740 {
5741 return (void*)entry_vkCmdSetDepthBounds;
5742 }
5743 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
5744 {
5745 return (void*)entry_vkCmdSetStencilCompareMask;
5746 }
5747 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
5748 {
5749 return (void*)entry_vkCmdSetStencilWriteMask;
5750 }
5751 if (!strcmp(name, "vkCmdSetStencilReference"))
5752 {
5753 return (void*)entry_vkCmdSetStencilReference;
5754 }
5755 if (!strcmp(name, "vkCmdBindDescriptorSets"))
5756 {
5757 return (void*)entry_vkCmdBindDescriptorSets;
5758 }
5759 if (!strcmp(name, "vkCmdBindIndexBuffer"))
5760 {
5761 return (void*)entry_vkCmdBindIndexBuffer;
5762 }
5763 if (!strcmp(name, "vkCmdBindVertexBuffers"))
5764 {
5765 return (void*)entry_vkCmdBindVertexBuffers;
5766 }
5767 if (!strcmp(name, "vkCmdDraw"))
5768 {
5769 return (void*)entry_vkCmdDraw;
5770 }
5771 if (!strcmp(name, "vkCmdDrawIndexed"))
5772 {
5773 return (void*)entry_vkCmdDrawIndexed;
5774 }
5775 if (!strcmp(name, "vkCmdDrawIndirect"))
5776 {
5777 return (void*)entry_vkCmdDrawIndirect;
5778 }
5779 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
5780 {
5781 return (void*)entry_vkCmdDrawIndexedIndirect;
5782 }
5783 if (!strcmp(name, "vkCmdDispatch"))
5784 {
5785 return (void*)entry_vkCmdDispatch;
5786 }
5787 if (!strcmp(name, "vkCmdDispatchIndirect"))
5788 {
5789 return (void*)entry_vkCmdDispatchIndirect;
5790 }
5791 if (!strcmp(name, "vkCmdCopyBuffer"))
5792 {
5793 return (void*)entry_vkCmdCopyBuffer;
5794 }
5795 if (!strcmp(name, "vkCmdCopyImage"))
5796 {
5797 return (void*)entry_vkCmdCopyImage;
5798 }
5799 if (!strcmp(name, "vkCmdBlitImage"))
5800 {
5801 return (void*)entry_vkCmdBlitImage;
5802 }
5803 if (!strcmp(name, "vkCmdCopyBufferToImage"))
5804 {
5805 return (void*)entry_vkCmdCopyBufferToImage;
5806 }
5807 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
5808 {
5809 return (void*)entry_vkCmdCopyImageToBuffer;
5810 }
5811 if (!strcmp(name, "vkCmdUpdateBuffer"))
5812 {
5813 return (void*)entry_vkCmdUpdateBuffer;
5814 }
5815 if (!strcmp(name, "vkCmdFillBuffer"))
5816 {
5817 return (void*)entry_vkCmdFillBuffer;
5818 }
5819 if (!strcmp(name, "vkCmdClearColorImage"))
5820 {
5821 return (void*)entry_vkCmdClearColorImage;
5822 }
5823 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
5824 {
5825 return (void*)entry_vkCmdClearDepthStencilImage;
5826 }
5827 if (!strcmp(name, "vkCmdClearAttachments"))
5828 {
5829 return (void*)entry_vkCmdClearAttachments;
5830 }
5831 if (!strcmp(name, "vkCmdResolveImage"))
5832 {
5833 return (void*)entry_vkCmdResolveImage;
5834 }
5835 if (!strcmp(name, "vkCmdSetEvent"))
5836 {
5837 return (void*)entry_vkCmdSetEvent;
5838 }
5839 if (!strcmp(name, "vkCmdResetEvent"))
5840 {
5841 return (void*)entry_vkCmdResetEvent;
5842 }
5843 if (!strcmp(name, "vkCmdWaitEvents"))
5844 {
5845 return (void*)entry_vkCmdWaitEvents;
5846 }
5847 if (!strcmp(name, "vkCmdPipelineBarrier"))
5848 {
5849 return (void*)entry_vkCmdPipelineBarrier;
5850 }
5851 if (!strcmp(name, "vkCmdBeginQuery"))
5852 {
5853 return (void*)entry_vkCmdBeginQuery;
5854 }
5855 if (!strcmp(name, "vkCmdEndQuery"))
5856 {
5857 return (void*)entry_vkCmdEndQuery;
5858 }
5859 if (!strcmp(name, "vkCmdResetQueryPool"))
5860 {
5861 return (void*)entry_vkCmdResetQueryPool;
5862 }
5863 if (!strcmp(name, "vkCmdWriteTimestamp"))
5864 {
5865 return (void*)entry_vkCmdWriteTimestamp;
5866 }
5867 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
5868 {
5869 return (void*)entry_vkCmdCopyQueryPoolResults;
5870 }
5871 if (!strcmp(name, "vkCmdPushConstants"))
5872 {
5873 return (void*)entry_vkCmdPushConstants;
5874 }
5875 if (!strcmp(name, "vkCmdBeginRenderPass"))
5876 {
5877 return (void*)entry_vkCmdBeginRenderPass;
5878 }
5879 if (!strcmp(name, "vkCmdNextSubpass"))
5880 {
5881 return (void*)entry_vkCmdNextSubpass;
5882 }
5883 if (!strcmp(name, "vkCmdEndRenderPass"))
5884 {
5885 return (void*)entry_vkCmdEndRenderPass;
5886 }
5887 if (!strcmp(name, "vkCmdExecuteCommands"))
5888 {
5889 return (void*)entry_vkCmdExecuteCommands;
5890 }
5891#endif
5892#ifdef VK_VERSION_1_1
5893 if (!strcmp(name, "vkEnumerateInstanceVersion"))
5894 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005895 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005896 }
5897 if (!strcmp(name, "vkBindBufferMemory2"))
5898 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005899 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005900 }
5901 if (!strcmp(name, "vkBindImageMemory2"))
5902 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005903 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005904 }
5905 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
5906 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005907 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005908 }
5909 if (!strcmp(name, "vkCmdSetDeviceMask"))
5910 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005911 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005912 }
5913 if (!strcmp(name, "vkCmdDispatchBase"))
5914 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005915 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005916 }
5917 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
5918 {
Lingfeng Yang113689e2018-11-11 16:48:50 -08005919 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005920 }
5921 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
5922 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005923 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005924 }
5925 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
5926 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005927 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005928 }
5929 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
5930 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005931 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005932 }
5933 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
5934 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005935 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005936 }
5937 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
5938 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005939 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005940 }
5941 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
5942 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005943 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005944 }
5945 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
5946 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005947 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005948 }
5949 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
5950 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005951 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005952 }
5953 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
5954 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005955 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005956 }
5957 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
5958 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005959 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005960 }
5961 if (!strcmp(name, "vkTrimCommandPool"))
5962 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005963 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005964 }
5965 if (!strcmp(name, "vkGetDeviceQueue2"))
5966 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005967 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005968 }
5969 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
5970 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005971 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005972 }
5973 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
5974 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005975 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005976 }
5977 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
5978 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005979 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005980 }
5981 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
5982 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005983 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005984 }
5985 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
5986 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005987 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005988 }
5989 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
5990 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005991 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005992 }
5993 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
5994 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005995 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08005996 }
5997 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
5998 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08005999 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006000 }
6001 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
6002 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006003 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006004 }
6005#endif
6006#ifdef VK_KHR_surface
6007 if (!strcmp(name, "vkDestroySurfaceKHR"))
6008 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006009 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006010 }
6011 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
6012 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006013 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006014 }
6015 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
6016 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006017 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006018 }
6019 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
6020 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006021 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006022 }
6023 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
6024 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006025 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006026 }
6027#endif
6028#ifdef VK_KHR_swapchain
6029 if (!strcmp(name, "vkCreateSwapchainKHR"))
6030 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006031 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006032 }
6033 if (!strcmp(name, "vkDestroySwapchainKHR"))
6034 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006035 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006036 }
6037 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
6038 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006039 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006040 }
6041 if (!strcmp(name, "vkAcquireNextImageKHR"))
6042 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006043 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006044 }
6045 if (!strcmp(name, "vkQueuePresentKHR"))
6046 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006047 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006048 }
6049 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
6050 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006051 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006052 }
6053 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
6054 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006055 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006056 }
6057 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
6058 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006059 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006060 }
6061 if (!strcmp(name, "vkAcquireNextImage2KHR"))
6062 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006063 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006064 }
6065#endif
6066#ifdef VK_KHR_display
6067 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
6068 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006069 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006070 }
6071 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
6072 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006073 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006074 }
6075 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
6076 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006077 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006078 }
6079 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
6080 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006081 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006082 }
6083 if (!strcmp(name, "vkCreateDisplayModeKHR"))
6084 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006085 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006086 }
6087 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
6088 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006089 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006090 }
6091 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
6092 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006093 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006094 }
6095#endif
6096#ifdef VK_KHR_display_swapchain
6097 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
6098 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006099 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006100 }
6101#endif
6102#ifdef VK_KHR_xlib_surface
6103 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
6104 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006105 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006106 }
6107 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
6108 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006109 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006110 }
6111#endif
6112#ifdef VK_KHR_xcb_surface
6113 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
6114 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006115 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006116 }
6117 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
6118 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006119 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006120 }
6121#endif
6122#ifdef VK_KHR_wayland_surface
6123 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
6124 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006125 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006126 }
6127 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
6128 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006129 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006130 }
6131#endif
6132#ifdef VK_KHR_mir_surface
6133 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
6134 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006135 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006136 }
6137 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
6138 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006139 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006140 }
6141#endif
6142#ifdef VK_KHR_android_surface
6143 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
6144 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006145 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006146 }
6147#endif
6148#ifdef VK_KHR_win32_surface
6149 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
6150 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006151 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006152 }
6153 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
6154 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006155 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006156 }
6157#endif
6158#ifdef VK_KHR_get_physical_device_properties2
6159 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
6160 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006161 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006162 }
6163 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
6164 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006165 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006166 }
6167 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
6168 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006169 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006170 }
6171 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
6172 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006173 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006174 }
6175 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
6176 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006177 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006178 }
6179 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
6180 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006181 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006182 }
6183 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
6184 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006185 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006186 }
6187#endif
6188#ifdef VK_KHR_device_group
6189 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
6190 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006191 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006192 }
6193 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
6194 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006195 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006196 }
6197 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
6198 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006199 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006200 }
6201#endif
6202#ifdef VK_KHR_maintenance1
6203 if (!strcmp(name, "vkTrimCommandPoolKHR"))
6204 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006205 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006206 }
6207#endif
6208#ifdef VK_KHR_device_group_creation
6209 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
6210 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006211 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006212 }
6213#endif
6214#ifdef VK_KHR_external_memory_capabilities
6215 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
6216 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006217 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006218 }
6219#endif
6220#ifdef VK_KHR_external_memory_win32
6221 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
6222 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006223 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006224 }
6225 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
6226 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006227 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006228 }
6229#endif
6230#ifdef VK_KHR_external_memory_fd
6231 if (!strcmp(name, "vkGetMemoryFdKHR"))
6232 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006233 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006234 }
6235 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
6236 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006237 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006238 }
6239#endif
6240#ifdef VK_KHR_external_semaphore_capabilities
6241 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
6242 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006243 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006244 }
6245#endif
6246#ifdef VK_KHR_external_semaphore_win32
6247 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
6248 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006249 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006250 }
6251 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
6252 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006253 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006254 }
6255#endif
6256#ifdef VK_KHR_external_semaphore_fd
6257 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
6258 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006259 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006260 }
6261 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
6262 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006263 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006264 }
6265#endif
6266#ifdef VK_KHR_push_descriptor
6267 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
6268 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006269 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006270 }
6271 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
6272 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006273 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006274 }
6275#endif
6276#ifdef VK_KHR_descriptor_update_template
6277 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
6278 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006279 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006280 }
6281 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
6282 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006283 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006284 }
6285 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
6286 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006287 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006288 }
6289#endif
6290#ifdef VK_KHR_create_renderpass2
6291 if (!strcmp(name, "vkCreateRenderPass2KHR"))
6292 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006293 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006294 }
6295 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
6296 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006297 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006298 }
6299 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
6300 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006301 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006302 }
6303 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
6304 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006305 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006306 }
6307#endif
6308#ifdef VK_KHR_shared_presentable_image
6309 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
6310 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006311 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006312 }
6313#endif
6314#ifdef VK_KHR_external_fence_capabilities
6315 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
6316 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006317 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006318 }
6319#endif
6320#ifdef VK_KHR_external_fence_win32
6321 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
6322 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006323 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006324 }
6325 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
6326 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006327 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006328 }
6329#endif
6330#ifdef VK_KHR_external_fence_fd
6331 if (!strcmp(name, "vkImportFenceFdKHR"))
6332 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006333 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006334 }
6335 if (!strcmp(name, "vkGetFenceFdKHR"))
6336 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006337 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006338 }
6339#endif
6340#ifdef VK_KHR_get_surface_capabilities2
6341 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
6342 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006343 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006344 }
6345 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
6346 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006347 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006348 }
6349#endif
6350#ifdef VK_KHR_get_display_properties2
6351 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
6352 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006353 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006354 }
6355 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
6356 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006357 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006358 }
6359 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
6360 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006361 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006362 }
6363 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
6364 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006365 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006366 }
6367#endif
6368#ifdef VK_KHR_get_memory_requirements2
6369 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
6370 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006371 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006372 }
6373 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
6374 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006375 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006376 }
6377 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
6378 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006379 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006380 }
6381#endif
6382#ifdef VK_KHR_sampler_ycbcr_conversion
6383 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
6384 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006385 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006386 }
6387 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
6388 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006389 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006390 }
6391#endif
6392#ifdef VK_KHR_bind_memory2
6393 if (!strcmp(name, "vkBindBufferMemory2KHR"))
6394 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006395 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006396 }
6397 if (!strcmp(name, "vkBindImageMemory2KHR"))
6398 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006399 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006400 }
6401#endif
6402#ifdef VK_KHR_maintenance3
6403 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
6404 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006405 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006406 }
6407#endif
6408#ifdef VK_KHR_draw_indirect_count
6409 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
6410 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006411 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006412 }
6413 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
6414 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006415 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006416 }
6417#endif
Lingfeng Yang808a6312018-11-13 21:06:15 -08006418#ifdef VK_ANDROID_native_buffer
6419 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
6420 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006421 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006422 }
6423 if (!strcmp(name, "vkAcquireImageANDROID"))
6424 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006425 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006426 }
6427 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
6428 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006429 return nullptr;
Lingfeng Yang808a6312018-11-13 21:06:15 -08006430 }
6431#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006432#ifdef VK_EXT_debug_report
6433 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
6434 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006435 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006436 }
6437 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
6438 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006439 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006440 }
6441 if (!strcmp(name, "vkDebugReportMessageEXT"))
6442 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006443 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006444 }
6445#endif
6446#ifdef VK_EXT_debug_marker
6447 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
6448 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006449 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006450 }
6451 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
6452 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006453 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006454 }
6455 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
6456 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006457 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006458 }
6459 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
6460 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006461 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006462 }
6463 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
6464 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006465 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006466 }
6467#endif
6468#ifdef VK_AMD_draw_indirect_count
6469 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
6470 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006471 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006472 }
6473 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
6474 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006475 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006476 }
6477#endif
6478#ifdef VK_AMD_shader_info
6479 if (!strcmp(name, "vkGetShaderInfoAMD"))
6480 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006481 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006482 }
6483#endif
6484#ifdef VK_NV_external_memory_capabilities
6485 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
6486 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006487 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006488 }
6489#endif
6490#ifdef VK_NV_external_memory_win32
6491 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
6492 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006493 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006494 }
6495#endif
6496#ifdef VK_NN_vi_surface
6497 if (!strcmp(name, "vkCreateViSurfaceNN"))
6498 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006499 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006500 }
6501#endif
6502#ifdef VK_EXT_conditional_rendering
6503 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
6504 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006505 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006506 }
6507 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
6508 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006509 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006510 }
6511#endif
6512#ifdef VK_NVX_device_generated_commands
6513 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
6514 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006515 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006516 }
6517 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
6518 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006519 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006520 }
6521 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
6522 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006523 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006524 }
6525 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
6526 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006527 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006528 }
6529 if (!strcmp(name, "vkCreateObjectTableNVX"))
6530 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006531 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006532 }
6533 if (!strcmp(name, "vkDestroyObjectTableNVX"))
6534 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006535 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006536 }
6537 if (!strcmp(name, "vkRegisterObjectsNVX"))
6538 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006539 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006540 }
6541 if (!strcmp(name, "vkUnregisterObjectsNVX"))
6542 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006543 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006544 }
6545 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
6546 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006547 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006548 }
6549#endif
6550#ifdef VK_NV_clip_space_w_scaling
6551 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
6552 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006553 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006554 }
6555#endif
6556#ifdef VK_EXT_direct_mode_display
6557 if (!strcmp(name, "vkReleaseDisplayEXT"))
6558 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006559 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006560 }
6561#endif
6562#ifdef VK_EXT_acquire_xlib_display
6563 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
6564 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006565 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006566 }
6567 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
6568 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006569 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006570 }
6571#endif
6572#ifdef VK_EXT_display_surface_counter
6573 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
6574 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006575 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006576 }
6577#endif
6578#ifdef VK_EXT_display_control
6579 if (!strcmp(name, "vkDisplayPowerControlEXT"))
6580 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006581 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006582 }
6583 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
6584 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006585 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006586 }
6587 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
6588 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006589 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006590 }
6591 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
6592 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006593 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006594 }
6595#endif
6596#ifdef VK_GOOGLE_display_timing
6597 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
6598 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006599 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006600 }
6601 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
6602 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006603 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006604 }
6605#endif
6606#ifdef VK_EXT_discard_rectangles
6607 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
6608 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006609 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006610 }
6611#endif
6612#ifdef VK_EXT_hdr_metadata
6613 if (!strcmp(name, "vkSetHdrMetadataEXT"))
6614 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006615 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006616 }
6617#endif
6618#ifdef VK_MVK_ios_surface
6619 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
6620 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006621 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006622 }
6623#endif
6624#ifdef VK_MVK_macos_surface
6625 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
6626 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006627 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006628 }
6629#endif
6630#ifdef VK_EXT_debug_utils
6631 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
6632 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006633 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006634 }
6635 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
6636 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006637 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006638 }
6639 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
6640 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006641 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006642 }
6643 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
6644 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006645 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006646 }
6647 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
6648 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006649 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006650 }
6651 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
6652 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006653 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006654 }
6655 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
6656 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006657 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006658 }
6659 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
6660 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006661 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006662 }
6663 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
6664 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006665 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006666 }
6667 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
6668 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006669 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006670 }
6671 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
6672 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006673 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006674 }
6675#endif
6676#ifdef VK_ANDROID_external_memory_android_hardware_buffer
6677 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
6678 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006679 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006680 }
6681 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
6682 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006683 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006684 }
6685#endif
6686#ifdef VK_EXT_sample_locations
6687 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
6688 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006689 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006690 }
6691 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
6692 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006693 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006694 }
6695#endif
6696#ifdef VK_EXT_validation_cache
6697 if (!strcmp(name, "vkCreateValidationCacheEXT"))
6698 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006699 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006700 }
6701 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
6702 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006703 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006704 }
6705 if (!strcmp(name, "vkMergeValidationCachesEXT"))
6706 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006707 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006708 }
6709 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
6710 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006711 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006712 }
6713#endif
6714#ifdef VK_EXT_external_memory_host
6715 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
6716 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006717 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006718 }
6719#endif
6720#ifdef VK_AMD_buffer_marker
6721 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
6722 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006723 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006724 }
6725#endif
6726#ifdef VK_NV_device_diagnostic_checkpoints
6727 if (!strcmp(name, "vkCmdSetCheckpointNV"))
6728 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006729 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006730 }
6731 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
6732 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006733 return nullptr;
Lingfeng Yang0b81df22018-11-05 21:40:30 -08006734 }
6735#endif
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08006736#ifdef VK_GOOGLE_address_space
6737 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
6738 {
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006739 return nullptr;
6740 }
6741#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08006742#ifdef VK_GOOGLE_color_buffer
6743 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
6744 {
6745 return nullptr;
6746 }
6747 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
6748 {
6749 return nullptr;
6750 }
6751#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07006752#ifdef VK_GOOGLE_sized_descriptor_update_template
6753 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
6754 {
6755 return nullptr;
6756 }
6757#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006758#ifdef VK_GOOGLE_async_command_buffers
6759 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
6760 {
6761 return nullptr;
6762 }
6763 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
6764 {
6765 return nullptr;
6766 }
6767 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
6768 {
6769 return nullptr;
6770 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07006771 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
6772 {
6773 return nullptr;
6774 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07006775#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00006776#ifdef VK_GOOGLE_create_resources_with_requirements
6777 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
6778 {
6779 return nullptr;
6780 }
6781 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
6782 {
6783 return nullptr;
6784 }
6785#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08006786#ifdef VK_GOOGLE_address_space_info
6787 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
6788 {
6789 return nullptr;
6790 }
6791#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07006792#ifdef VK_GOOGLE_free_memory_sync
6793 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
6794 {
6795 return nullptr;
6796 }
6797#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07006798#ifdef VK_GOOGLE_async_queue_submit
6799 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
6800 {
6801 return nullptr;
6802 }
6803 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
6804 {
6805 return nullptr;
6806 }
6807 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
6808 {
6809 return nullptr;
6810 }
6811 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
6812 {
6813 return nullptr;
6814 }
6815#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08006816 return nullptr;
6817}
6818void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){
6819 auto resources = ResourceTracker::get();
6820 bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1;
6821#ifdef VK_VERSION_1_0
6822 if (!strcmp(name, "vkCreateInstance"))
6823 {
6824 return (void*)entry_vkCreateInstance;
6825 }
6826 if (!strcmp(name, "vkDestroyInstance"))
6827 {
6828 return (void*)entry_vkDestroyInstance;
6829 }
6830 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
6831 {
6832 return (void*)entry_vkEnumeratePhysicalDevices;
6833 }
6834 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
6835 {
6836 return (void*)entry_vkGetPhysicalDeviceFeatures;
6837 }
6838 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
6839 {
6840 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
6841 }
6842 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
6843 {
6844 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
6845 }
6846 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
6847 {
6848 return (void*)entry_vkGetPhysicalDeviceProperties;
6849 }
6850 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
6851 {
6852 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
6853 }
6854 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
6855 {
6856 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
6857 }
6858 if (!strcmp(name, "vkGetInstanceProcAddr"))
6859 {
6860 return (void*)entry_vkGetInstanceProcAddr;
6861 }
6862 if (!strcmp(name, "vkGetDeviceProcAddr"))
6863 {
6864 return (void*)entry_vkGetDeviceProcAddr;
6865 }
6866 if (!strcmp(name, "vkCreateDevice"))
6867 {
6868 return (void*)entry_vkCreateDevice;
6869 }
6870 if (!strcmp(name, "vkDestroyDevice"))
6871 {
6872 return (void*)entry_vkDestroyDevice;
6873 }
6874 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
6875 {
6876 return (void*)entry_vkEnumerateInstanceExtensionProperties;
6877 }
6878 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
6879 {
6880 return (void*)entry_vkEnumerateDeviceExtensionProperties;
6881 }
6882 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
6883 {
6884 return (void*)entry_vkEnumerateInstanceLayerProperties;
6885 }
6886 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
6887 {
6888 return (void*)entry_vkEnumerateDeviceLayerProperties;
6889 }
6890 if (!strcmp(name, "vkGetDeviceQueue"))
6891 {
6892 return (void*)entry_vkGetDeviceQueue;
6893 }
6894 if (!strcmp(name, "vkQueueSubmit"))
6895 {
6896 return (void*)entry_vkQueueSubmit;
6897 }
6898 if (!strcmp(name, "vkQueueWaitIdle"))
6899 {
6900 return (void*)entry_vkQueueWaitIdle;
6901 }
6902 if (!strcmp(name, "vkDeviceWaitIdle"))
6903 {
6904 return (void*)entry_vkDeviceWaitIdle;
6905 }
6906 if (!strcmp(name, "vkAllocateMemory"))
6907 {
6908 return (void*)entry_vkAllocateMemory;
6909 }
6910 if (!strcmp(name, "vkFreeMemory"))
6911 {
6912 return (void*)entry_vkFreeMemory;
6913 }
6914 if (!strcmp(name, "vkMapMemory"))
6915 {
6916 return (void*)entry_vkMapMemory;
6917 }
6918 if (!strcmp(name, "vkUnmapMemory"))
6919 {
6920 return (void*)entry_vkUnmapMemory;
6921 }
6922 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
6923 {
6924 return (void*)entry_vkFlushMappedMemoryRanges;
6925 }
6926 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
6927 {
6928 return (void*)entry_vkInvalidateMappedMemoryRanges;
6929 }
6930 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
6931 {
6932 return (void*)entry_vkGetDeviceMemoryCommitment;
6933 }
6934 if (!strcmp(name, "vkBindBufferMemory"))
6935 {
6936 return (void*)entry_vkBindBufferMemory;
6937 }
6938 if (!strcmp(name, "vkBindImageMemory"))
6939 {
6940 return (void*)entry_vkBindImageMemory;
6941 }
6942 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
6943 {
6944 return (void*)entry_vkGetBufferMemoryRequirements;
6945 }
6946 if (!strcmp(name, "vkGetImageMemoryRequirements"))
6947 {
6948 return (void*)entry_vkGetImageMemoryRequirements;
6949 }
6950 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
6951 {
6952 return (void*)entry_vkGetImageSparseMemoryRequirements;
6953 }
6954 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
6955 {
6956 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
6957 }
6958 if (!strcmp(name, "vkQueueBindSparse"))
6959 {
6960 return (void*)entry_vkQueueBindSparse;
6961 }
6962 if (!strcmp(name, "vkCreateFence"))
6963 {
6964 return (void*)entry_vkCreateFence;
6965 }
6966 if (!strcmp(name, "vkDestroyFence"))
6967 {
6968 return (void*)entry_vkDestroyFence;
6969 }
6970 if (!strcmp(name, "vkResetFences"))
6971 {
6972 return (void*)entry_vkResetFences;
6973 }
6974 if (!strcmp(name, "vkGetFenceStatus"))
6975 {
6976 return (void*)entry_vkGetFenceStatus;
6977 }
6978 if (!strcmp(name, "vkWaitForFences"))
6979 {
6980 return (void*)entry_vkWaitForFences;
6981 }
6982 if (!strcmp(name, "vkCreateSemaphore"))
6983 {
6984 return (void*)entry_vkCreateSemaphore;
6985 }
6986 if (!strcmp(name, "vkDestroySemaphore"))
6987 {
6988 return (void*)entry_vkDestroySemaphore;
6989 }
6990 if (!strcmp(name, "vkCreateEvent"))
6991 {
6992 return (void*)entry_vkCreateEvent;
6993 }
6994 if (!strcmp(name, "vkDestroyEvent"))
6995 {
6996 return (void*)entry_vkDestroyEvent;
6997 }
6998 if (!strcmp(name, "vkGetEventStatus"))
6999 {
7000 return (void*)entry_vkGetEventStatus;
7001 }
7002 if (!strcmp(name, "vkSetEvent"))
7003 {
7004 return (void*)entry_vkSetEvent;
7005 }
7006 if (!strcmp(name, "vkResetEvent"))
7007 {
7008 return (void*)entry_vkResetEvent;
7009 }
7010 if (!strcmp(name, "vkCreateQueryPool"))
7011 {
7012 return (void*)entry_vkCreateQueryPool;
7013 }
7014 if (!strcmp(name, "vkDestroyQueryPool"))
7015 {
7016 return (void*)entry_vkDestroyQueryPool;
7017 }
7018 if (!strcmp(name, "vkGetQueryPoolResults"))
7019 {
7020 return (void*)entry_vkGetQueryPoolResults;
7021 }
7022 if (!strcmp(name, "vkCreateBuffer"))
7023 {
7024 return (void*)entry_vkCreateBuffer;
7025 }
7026 if (!strcmp(name, "vkDestroyBuffer"))
7027 {
7028 return (void*)entry_vkDestroyBuffer;
7029 }
7030 if (!strcmp(name, "vkCreateBufferView"))
7031 {
7032 return (void*)entry_vkCreateBufferView;
7033 }
7034 if (!strcmp(name, "vkDestroyBufferView"))
7035 {
7036 return (void*)entry_vkDestroyBufferView;
7037 }
7038 if (!strcmp(name, "vkCreateImage"))
7039 {
7040 return (void*)entry_vkCreateImage;
7041 }
7042 if (!strcmp(name, "vkDestroyImage"))
7043 {
7044 return (void*)entry_vkDestroyImage;
7045 }
7046 if (!strcmp(name, "vkGetImageSubresourceLayout"))
7047 {
7048 return (void*)entry_vkGetImageSubresourceLayout;
7049 }
7050 if (!strcmp(name, "vkCreateImageView"))
7051 {
7052 return (void*)entry_vkCreateImageView;
7053 }
7054 if (!strcmp(name, "vkDestroyImageView"))
7055 {
7056 return (void*)entry_vkDestroyImageView;
7057 }
7058 if (!strcmp(name, "vkCreateShaderModule"))
7059 {
7060 return (void*)entry_vkCreateShaderModule;
7061 }
7062 if (!strcmp(name, "vkDestroyShaderModule"))
7063 {
7064 return (void*)entry_vkDestroyShaderModule;
7065 }
7066 if (!strcmp(name, "vkCreatePipelineCache"))
7067 {
7068 return (void*)entry_vkCreatePipelineCache;
7069 }
7070 if (!strcmp(name, "vkDestroyPipelineCache"))
7071 {
7072 return (void*)entry_vkDestroyPipelineCache;
7073 }
7074 if (!strcmp(name, "vkGetPipelineCacheData"))
7075 {
7076 return (void*)entry_vkGetPipelineCacheData;
7077 }
7078 if (!strcmp(name, "vkMergePipelineCaches"))
7079 {
7080 return (void*)entry_vkMergePipelineCaches;
7081 }
7082 if (!strcmp(name, "vkCreateGraphicsPipelines"))
7083 {
7084 return (void*)entry_vkCreateGraphicsPipelines;
7085 }
7086 if (!strcmp(name, "vkCreateComputePipelines"))
7087 {
7088 return (void*)entry_vkCreateComputePipelines;
7089 }
7090 if (!strcmp(name, "vkDestroyPipeline"))
7091 {
7092 return (void*)entry_vkDestroyPipeline;
7093 }
7094 if (!strcmp(name, "vkCreatePipelineLayout"))
7095 {
7096 return (void*)entry_vkCreatePipelineLayout;
7097 }
7098 if (!strcmp(name, "vkDestroyPipelineLayout"))
7099 {
7100 return (void*)entry_vkDestroyPipelineLayout;
7101 }
7102 if (!strcmp(name, "vkCreateSampler"))
7103 {
7104 return (void*)entry_vkCreateSampler;
7105 }
7106 if (!strcmp(name, "vkDestroySampler"))
7107 {
7108 return (void*)entry_vkDestroySampler;
7109 }
7110 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
7111 {
7112 return (void*)entry_vkCreateDescriptorSetLayout;
7113 }
7114 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
7115 {
7116 return (void*)entry_vkDestroyDescriptorSetLayout;
7117 }
7118 if (!strcmp(name, "vkCreateDescriptorPool"))
7119 {
7120 return (void*)entry_vkCreateDescriptorPool;
7121 }
7122 if (!strcmp(name, "vkDestroyDescriptorPool"))
7123 {
7124 return (void*)entry_vkDestroyDescriptorPool;
7125 }
7126 if (!strcmp(name, "vkResetDescriptorPool"))
7127 {
7128 return (void*)entry_vkResetDescriptorPool;
7129 }
7130 if (!strcmp(name, "vkAllocateDescriptorSets"))
7131 {
7132 return (void*)entry_vkAllocateDescriptorSets;
7133 }
7134 if (!strcmp(name, "vkFreeDescriptorSets"))
7135 {
7136 return (void*)entry_vkFreeDescriptorSets;
7137 }
7138 if (!strcmp(name, "vkUpdateDescriptorSets"))
7139 {
7140 return (void*)entry_vkUpdateDescriptorSets;
7141 }
7142 if (!strcmp(name, "vkCreateFramebuffer"))
7143 {
7144 return (void*)entry_vkCreateFramebuffer;
7145 }
7146 if (!strcmp(name, "vkDestroyFramebuffer"))
7147 {
7148 return (void*)entry_vkDestroyFramebuffer;
7149 }
7150 if (!strcmp(name, "vkCreateRenderPass"))
7151 {
7152 return (void*)entry_vkCreateRenderPass;
7153 }
7154 if (!strcmp(name, "vkDestroyRenderPass"))
7155 {
7156 return (void*)entry_vkDestroyRenderPass;
7157 }
7158 if (!strcmp(name, "vkGetRenderAreaGranularity"))
7159 {
7160 return (void*)entry_vkGetRenderAreaGranularity;
7161 }
7162 if (!strcmp(name, "vkCreateCommandPool"))
7163 {
7164 return (void*)entry_vkCreateCommandPool;
7165 }
7166 if (!strcmp(name, "vkDestroyCommandPool"))
7167 {
7168 return (void*)entry_vkDestroyCommandPool;
7169 }
7170 if (!strcmp(name, "vkResetCommandPool"))
7171 {
7172 return (void*)entry_vkResetCommandPool;
7173 }
7174 if (!strcmp(name, "vkAllocateCommandBuffers"))
7175 {
7176 return (void*)entry_vkAllocateCommandBuffers;
7177 }
7178 if (!strcmp(name, "vkFreeCommandBuffers"))
7179 {
7180 return (void*)entry_vkFreeCommandBuffers;
7181 }
7182 if (!strcmp(name, "vkBeginCommandBuffer"))
7183 {
7184 return (void*)entry_vkBeginCommandBuffer;
7185 }
7186 if (!strcmp(name, "vkEndCommandBuffer"))
7187 {
7188 return (void*)entry_vkEndCommandBuffer;
7189 }
7190 if (!strcmp(name, "vkResetCommandBuffer"))
7191 {
7192 return (void*)entry_vkResetCommandBuffer;
7193 }
7194 if (!strcmp(name, "vkCmdBindPipeline"))
7195 {
7196 return (void*)entry_vkCmdBindPipeline;
7197 }
7198 if (!strcmp(name, "vkCmdSetViewport"))
7199 {
7200 return (void*)entry_vkCmdSetViewport;
7201 }
7202 if (!strcmp(name, "vkCmdSetScissor"))
7203 {
7204 return (void*)entry_vkCmdSetScissor;
7205 }
7206 if (!strcmp(name, "vkCmdSetLineWidth"))
7207 {
7208 return (void*)entry_vkCmdSetLineWidth;
7209 }
7210 if (!strcmp(name, "vkCmdSetDepthBias"))
7211 {
7212 return (void*)entry_vkCmdSetDepthBias;
7213 }
7214 if (!strcmp(name, "vkCmdSetBlendConstants"))
7215 {
7216 return (void*)entry_vkCmdSetBlendConstants;
7217 }
7218 if (!strcmp(name, "vkCmdSetDepthBounds"))
7219 {
7220 return (void*)entry_vkCmdSetDepthBounds;
7221 }
7222 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
7223 {
7224 return (void*)entry_vkCmdSetStencilCompareMask;
7225 }
7226 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
7227 {
7228 return (void*)entry_vkCmdSetStencilWriteMask;
7229 }
7230 if (!strcmp(name, "vkCmdSetStencilReference"))
7231 {
7232 return (void*)entry_vkCmdSetStencilReference;
7233 }
7234 if (!strcmp(name, "vkCmdBindDescriptorSets"))
7235 {
7236 return (void*)entry_vkCmdBindDescriptorSets;
7237 }
7238 if (!strcmp(name, "vkCmdBindIndexBuffer"))
7239 {
7240 return (void*)entry_vkCmdBindIndexBuffer;
7241 }
7242 if (!strcmp(name, "vkCmdBindVertexBuffers"))
7243 {
7244 return (void*)entry_vkCmdBindVertexBuffers;
7245 }
7246 if (!strcmp(name, "vkCmdDraw"))
7247 {
7248 return (void*)entry_vkCmdDraw;
7249 }
7250 if (!strcmp(name, "vkCmdDrawIndexed"))
7251 {
7252 return (void*)entry_vkCmdDrawIndexed;
7253 }
7254 if (!strcmp(name, "vkCmdDrawIndirect"))
7255 {
7256 return (void*)entry_vkCmdDrawIndirect;
7257 }
7258 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
7259 {
7260 return (void*)entry_vkCmdDrawIndexedIndirect;
7261 }
7262 if (!strcmp(name, "vkCmdDispatch"))
7263 {
7264 return (void*)entry_vkCmdDispatch;
7265 }
7266 if (!strcmp(name, "vkCmdDispatchIndirect"))
7267 {
7268 return (void*)entry_vkCmdDispatchIndirect;
7269 }
7270 if (!strcmp(name, "vkCmdCopyBuffer"))
7271 {
7272 return (void*)entry_vkCmdCopyBuffer;
7273 }
7274 if (!strcmp(name, "vkCmdCopyImage"))
7275 {
7276 return (void*)entry_vkCmdCopyImage;
7277 }
7278 if (!strcmp(name, "vkCmdBlitImage"))
7279 {
7280 return (void*)entry_vkCmdBlitImage;
7281 }
7282 if (!strcmp(name, "vkCmdCopyBufferToImage"))
7283 {
7284 return (void*)entry_vkCmdCopyBufferToImage;
7285 }
7286 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
7287 {
7288 return (void*)entry_vkCmdCopyImageToBuffer;
7289 }
7290 if (!strcmp(name, "vkCmdUpdateBuffer"))
7291 {
7292 return (void*)entry_vkCmdUpdateBuffer;
7293 }
7294 if (!strcmp(name, "vkCmdFillBuffer"))
7295 {
7296 return (void*)entry_vkCmdFillBuffer;
7297 }
7298 if (!strcmp(name, "vkCmdClearColorImage"))
7299 {
7300 return (void*)entry_vkCmdClearColorImage;
7301 }
7302 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
7303 {
7304 return (void*)entry_vkCmdClearDepthStencilImage;
7305 }
7306 if (!strcmp(name, "vkCmdClearAttachments"))
7307 {
7308 return (void*)entry_vkCmdClearAttachments;
7309 }
7310 if (!strcmp(name, "vkCmdResolveImage"))
7311 {
7312 return (void*)entry_vkCmdResolveImage;
7313 }
7314 if (!strcmp(name, "vkCmdSetEvent"))
7315 {
7316 return (void*)entry_vkCmdSetEvent;
7317 }
7318 if (!strcmp(name, "vkCmdResetEvent"))
7319 {
7320 return (void*)entry_vkCmdResetEvent;
7321 }
7322 if (!strcmp(name, "vkCmdWaitEvents"))
7323 {
7324 return (void*)entry_vkCmdWaitEvents;
7325 }
7326 if (!strcmp(name, "vkCmdPipelineBarrier"))
7327 {
7328 return (void*)entry_vkCmdPipelineBarrier;
7329 }
7330 if (!strcmp(name, "vkCmdBeginQuery"))
7331 {
7332 return (void*)entry_vkCmdBeginQuery;
7333 }
7334 if (!strcmp(name, "vkCmdEndQuery"))
7335 {
7336 return (void*)entry_vkCmdEndQuery;
7337 }
7338 if (!strcmp(name, "vkCmdResetQueryPool"))
7339 {
7340 return (void*)entry_vkCmdResetQueryPool;
7341 }
7342 if (!strcmp(name, "vkCmdWriteTimestamp"))
7343 {
7344 return (void*)entry_vkCmdWriteTimestamp;
7345 }
7346 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
7347 {
7348 return (void*)entry_vkCmdCopyQueryPoolResults;
7349 }
7350 if (!strcmp(name, "vkCmdPushConstants"))
7351 {
7352 return (void*)entry_vkCmdPushConstants;
7353 }
7354 if (!strcmp(name, "vkCmdBeginRenderPass"))
7355 {
7356 return (void*)entry_vkCmdBeginRenderPass;
7357 }
7358 if (!strcmp(name, "vkCmdNextSubpass"))
7359 {
7360 return (void*)entry_vkCmdNextSubpass;
7361 }
7362 if (!strcmp(name, "vkCmdEndRenderPass"))
7363 {
7364 return (void*)entry_vkCmdEndRenderPass;
7365 }
7366 if (!strcmp(name, "vkCmdExecuteCommands"))
7367 {
7368 return (void*)entry_vkCmdExecuteCommands;
7369 }
7370#endif
7371#ifdef VK_VERSION_1_1
7372 if (!strcmp(name, "vkEnumerateInstanceVersion"))
7373 {
7374 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
7375 }
7376 if (!strcmp(name, "vkBindBufferMemory2"))
7377 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007378 return (void*)dynCheck_entry_vkBindBufferMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007379 }
7380 if (!strcmp(name, "vkBindImageMemory2"))
7381 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007382 return (void*)dynCheck_entry_vkBindImageMemory2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007383 }
7384 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
7385 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007386 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007387 }
7388 if (!strcmp(name, "vkCmdSetDeviceMask"))
7389 {
7390 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
7391 }
7392 if (!strcmp(name, "vkCmdDispatchBase"))
7393 {
7394 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
7395 }
7396 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
7397 {
7398 return nullptr;
7399 }
7400 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
7401 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007402 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007403 }
7404 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
7405 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007406 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007407 }
7408 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
7409 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007410 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007411 }
7412 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
7413 {
7414 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
7415 }
7416 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
7417 {
7418 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
7419 }
7420 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
7421 {
7422 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
7423 }
7424 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
7425 {
7426 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
7427 }
7428 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
7429 {
7430 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
7431 }
7432 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
7433 {
7434 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
7435 }
7436 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
7437 {
7438 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
7439 }
7440 if (!strcmp(name, "vkTrimCommandPool"))
7441 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007442 return (void*)dynCheck_entry_vkTrimCommandPool;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007443 }
7444 if (!strcmp(name, "vkGetDeviceQueue2"))
7445 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007446 return (void*)dynCheck_entry_vkGetDeviceQueue2;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007447 }
7448 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
7449 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007450 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007451 }
7452 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
7453 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007454 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007455 }
7456 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
7457 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007458 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007459 }
7460 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
7461 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007462 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007463 }
7464 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
7465 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007466 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007467 }
7468 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
7469 {
7470 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
7471 }
7472 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
7473 {
7474 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
7475 }
7476 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
7477 {
7478 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
7479 }
7480 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
7481 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007482 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007483 }
7484#endif
7485#ifdef VK_KHR_surface
7486 if (!strcmp(name, "vkDestroySurfaceKHR"))
7487 {
7488 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7489 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
7490 }
7491 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
7492 {
7493 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7494 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
7495 }
7496 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
7497 {
7498 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7499 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
7500 }
7501 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
7502 {
7503 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7504 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
7505 }
7506 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
7507 {
7508 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface");
7509 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
7510 }
7511#endif
7512#ifdef VK_KHR_swapchain
7513 if (!strcmp(name, "vkCreateSwapchainKHR"))
7514 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007515 return (void*)dynCheck_entry_vkCreateSwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007516 }
7517 if (!strcmp(name, "vkDestroySwapchainKHR"))
7518 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007519 return (void*)dynCheck_entry_vkDestroySwapchainKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007520 }
7521 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
7522 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007523 return (void*)dynCheck_entry_vkGetSwapchainImagesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007524 }
7525 if (!strcmp(name, "vkAcquireNextImageKHR"))
7526 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007527 return (void*)dynCheck_entry_vkAcquireNextImageKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007528 }
7529 if (!strcmp(name, "vkQueuePresentKHR"))
7530 {
7531 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7532 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
7533 }
7534 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
7535 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007536 return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007537 }
7538 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
7539 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007540 return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007541 }
7542 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
7543 {
7544 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain");
7545 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
7546 }
7547 if (!strcmp(name, "vkAcquireNextImage2KHR"))
7548 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007549 return (void*)dynCheck_entry_vkAcquireNextImage2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007550 }
7551#endif
7552#ifdef VK_KHR_display
7553 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
7554 {
7555 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7556 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
7557 }
7558 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
7559 {
7560 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7561 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
7562 }
7563 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
7564 {
7565 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7566 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
7567 }
7568 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
7569 {
7570 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7571 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
7572 }
7573 if (!strcmp(name, "vkCreateDisplayModeKHR"))
7574 {
7575 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7576 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
7577 }
7578 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
7579 {
7580 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7581 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
7582 }
7583 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
7584 {
7585 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display");
7586 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
7587 }
7588#endif
7589#ifdef VK_KHR_display_swapchain
7590 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
7591 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007592 return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007593 }
7594#endif
7595#ifdef VK_KHR_xlib_surface
7596 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
7597 {
7598 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7599 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
7600 }
7601 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
7602 {
7603 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface");
7604 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
7605 }
7606#endif
7607#ifdef VK_KHR_xcb_surface
7608 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
7609 {
7610 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7611 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
7612 }
7613 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
7614 {
7615 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface");
7616 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
7617 }
7618#endif
7619#ifdef VK_KHR_wayland_surface
7620 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
7621 {
7622 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7623 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
7624 }
7625 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
7626 {
7627 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface");
7628 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
7629 }
7630#endif
7631#ifdef VK_KHR_mir_surface
7632 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
7633 {
7634 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7635 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
7636 }
7637 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
7638 {
7639 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface");
7640 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
7641 }
7642#endif
7643#ifdef VK_KHR_android_surface
7644 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
7645 {
7646 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface");
7647 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
7648 }
7649#endif
7650#ifdef VK_KHR_win32_surface
7651 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
7652 {
7653 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7654 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
7655 }
7656 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
7657 {
7658 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface");
7659 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
7660 }
7661#endif
7662#ifdef VK_KHR_get_physical_device_properties2
7663 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
7664 {
7665 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7666 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
7667 }
7668 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
7669 {
7670 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7671 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
7672 }
7673 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
7674 {
7675 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7676 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
7677 }
7678 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
7679 {
7680 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7681 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
7682 }
7683 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
7684 {
7685 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7686 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
7687 }
7688 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
7689 {
7690 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7691 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
7692 }
7693 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
7694 {
7695 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2");
7696 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
7697 }
7698#endif
7699#ifdef VK_KHR_device_group
7700 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
7701 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007702 return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007703 }
7704 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
7705 {
7706 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7707 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
7708 }
7709 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
7710 {
7711 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group");
7712 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
7713 }
7714#endif
7715#ifdef VK_KHR_maintenance1
7716 if (!strcmp(name, "vkTrimCommandPoolKHR"))
7717 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007718 return (void*)dynCheck_entry_vkTrimCommandPoolKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007719 }
7720#endif
7721#ifdef VK_KHR_device_group_creation
7722 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
7723 {
7724 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation");
7725 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
7726 }
7727#endif
7728#ifdef VK_KHR_external_memory_capabilities
7729 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
7730 {
7731 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities");
7732 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
7733 }
7734#endif
7735#ifdef VK_KHR_external_memory_win32
7736 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
7737 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007738 return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007739 }
7740 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
7741 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007742 return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007743 }
7744#endif
7745#ifdef VK_KHR_external_memory_fd
7746 if (!strcmp(name, "vkGetMemoryFdKHR"))
7747 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007748 return (void*)dynCheck_entry_vkGetMemoryFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007749 }
7750 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
7751 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007752 return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007753 }
7754#endif
7755#ifdef VK_KHR_external_semaphore_capabilities
7756 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
7757 {
7758 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities");
7759 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
7760 }
7761#endif
7762#ifdef VK_KHR_external_semaphore_win32
7763 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
7764 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007765 return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007766 }
7767 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
7768 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007769 return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007770 }
7771#endif
7772#ifdef VK_KHR_external_semaphore_fd
7773 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
7774 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007775 return (void*)dynCheck_entry_vkImportSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007776 }
7777 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
7778 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007779 return (void*)dynCheck_entry_vkGetSemaphoreFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007780 }
7781#endif
7782#ifdef VK_KHR_push_descriptor
7783 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
7784 {
7785 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7786 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
7787 }
7788 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
7789 {
7790 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor");
7791 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
7792 }
7793#endif
7794#ifdef VK_KHR_descriptor_update_template
7795 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
7796 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007797 return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007798 }
7799 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
7800 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007801 return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007802 }
7803 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
7804 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007805 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007806 }
7807#endif
7808#ifdef VK_KHR_create_renderpass2
7809 if (!strcmp(name, "vkCreateRenderPass2KHR"))
7810 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007811 return (void*)dynCheck_entry_vkCreateRenderPass2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007812 }
7813 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
7814 {
7815 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7816 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
7817 }
7818 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
7819 {
7820 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7821 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
7822 }
7823 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
7824 {
7825 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2");
7826 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
7827 }
7828#endif
7829#ifdef VK_KHR_shared_presentable_image
7830 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
7831 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007832 return (void*)dynCheck_entry_vkGetSwapchainStatusKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007833 }
7834#endif
7835#ifdef VK_KHR_external_fence_capabilities
7836 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
7837 {
7838 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities");
7839 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
7840 }
7841#endif
7842#ifdef VK_KHR_external_fence_win32
7843 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
7844 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007845 return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007846 }
7847 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
7848 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007849 return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007850 }
7851#endif
7852#ifdef VK_KHR_external_fence_fd
7853 if (!strcmp(name, "vkImportFenceFdKHR"))
7854 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007855 return (void*)dynCheck_entry_vkImportFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007856 }
7857 if (!strcmp(name, "vkGetFenceFdKHR"))
7858 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007859 return (void*)dynCheck_entry_vkGetFenceFdKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007860 }
7861#endif
7862#ifdef VK_KHR_get_surface_capabilities2
7863 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
7864 {
7865 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7866 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
7867 }
7868 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
7869 {
7870 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2");
7871 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
7872 }
7873#endif
7874#ifdef VK_KHR_get_display_properties2
7875 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
7876 {
7877 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7878 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
7879 }
7880 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
7881 {
7882 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7883 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
7884 }
7885 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
7886 {
7887 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7888 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
7889 }
7890 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
7891 {
7892 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2");
7893 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
7894 }
7895#endif
7896#ifdef VK_KHR_get_memory_requirements2
7897 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
7898 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007899 return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007900 }
7901 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
7902 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007903 return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007904 }
7905 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
7906 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007907 return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007908 }
7909#endif
7910#ifdef VK_KHR_sampler_ycbcr_conversion
7911 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
7912 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007913 return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007914 }
7915 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
7916 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007917 return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007918 }
7919#endif
7920#ifdef VK_KHR_bind_memory2
7921 if (!strcmp(name, "vkBindBufferMemory2KHR"))
7922 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007923 return (void*)dynCheck_entry_vkBindBufferMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007924 }
7925 if (!strcmp(name, "vkBindImageMemory2KHR"))
7926 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007927 return (void*)dynCheck_entry_vkBindImageMemory2KHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007928 }
7929#endif
7930#ifdef VK_KHR_maintenance3
7931 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
7932 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007933 return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007934 }
7935#endif
7936#ifdef VK_KHR_draw_indirect_count
7937 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
7938 {
7939 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7940 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
7941 }
7942 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
7943 {
7944 bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count");
7945 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
7946 }
7947#endif
7948#ifdef VK_ANDROID_native_buffer
7949 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
7950 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007951 return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007952 }
7953 if (!strcmp(name, "vkAcquireImageANDROID"))
7954 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007955 return (void*)dynCheck_entry_vkAcquireImageANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007956 }
7957 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
7958 {
7959 bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer");
7960 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
7961 }
7962#endif
7963#ifdef VK_EXT_debug_report
7964 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
7965 {
7966 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7967 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
7968 }
7969 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
7970 {
7971 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7972 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
7973 }
7974 if (!strcmp(name, "vkDebugReportMessageEXT"))
7975 {
7976 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report");
7977 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
7978 }
7979#endif
7980#ifdef VK_EXT_debug_marker
7981 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
7982 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007983 return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007984 }
7985 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
7986 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07007987 return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08007988 }
7989 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
7990 {
7991 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7992 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
7993 }
7994 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
7995 {
7996 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
7997 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
7998 }
7999 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
8000 {
8001 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker");
8002 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
8003 }
8004#endif
8005#ifdef VK_AMD_draw_indirect_count
8006 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
8007 {
8008 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8009 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
8010 }
8011 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
8012 {
8013 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count");
8014 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
8015 }
8016#endif
8017#ifdef VK_AMD_shader_info
8018 if (!strcmp(name, "vkGetShaderInfoAMD"))
8019 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008020 return (void*)dynCheck_entry_vkGetShaderInfoAMD;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008021 }
8022#endif
8023#ifdef VK_NV_external_memory_capabilities
8024 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
8025 {
8026 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities");
8027 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
8028 }
8029#endif
8030#ifdef VK_NV_external_memory_win32
8031 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
8032 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008033 return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008034 }
8035#endif
8036#ifdef VK_NN_vi_surface
8037 if (!strcmp(name, "vkCreateViSurfaceNN"))
8038 {
8039 bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface");
8040 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
8041 }
8042#endif
8043#ifdef VK_EXT_conditional_rendering
8044 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
8045 {
8046 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8047 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
8048 }
8049 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
8050 {
8051 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering");
8052 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
8053 }
8054#endif
8055#ifdef VK_NVX_device_generated_commands
8056 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
8057 {
8058 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8059 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
8060 }
8061 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
8062 {
8063 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8064 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
8065 }
8066 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
8067 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008068 return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008069 }
8070 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
8071 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008072 return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008073 }
8074 if (!strcmp(name, "vkCreateObjectTableNVX"))
8075 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008076 return (void*)dynCheck_entry_vkCreateObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008077 }
8078 if (!strcmp(name, "vkDestroyObjectTableNVX"))
8079 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008080 return (void*)dynCheck_entry_vkDestroyObjectTableNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008081 }
8082 if (!strcmp(name, "vkRegisterObjectsNVX"))
8083 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008084 return (void*)dynCheck_entry_vkRegisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008085 }
8086 if (!strcmp(name, "vkUnregisterObjectsNVX"))
8087 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008088 return (void*)dynCheck_entry_vkUnregisterObjectsNVX;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008089 }
8090 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
8091 {
8092 bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands");
8093 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
8094 }
8095#endif
8096#ifdef VK_NV_clip_space_w_scaling
8097 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
8098 {
8099 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling");
8100 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
8101 }
8102#endif
8103#ifdef VK_EXT_direct_mode_display
8104 if (!strcmp(name, "vkReleaseDisplayEXT"))
8105 {
8106 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display");
8107 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
8108 }
8109#endif
8110#ifdef VK_EXT_acquire_xlib_display
8111 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
8112 {
8113 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8114 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
8115 }
8116 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
8117 {
8118 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display");
8119 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
8120 }
8121#endif
8122#ifdef VK_EXT_display_surface_counter
8123 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
8124 {
8125 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter");
8126 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
8127 }
8128#endif
8129#ifdef VK_EXT_display_control
8130 if (!strcmp(name, "vkDisplayPowerControlEXT"))
8131 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008132 return (void*)dynCheck_entry_vkDisplayPowerControlEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008133 }
8134 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
8135 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008136 return (void*)dynCheck_entry_vkRegisterDeviceEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008137 }
8138 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
8139 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008140 return (void*)dynCheck_entry_vkRegisterDisplayEventEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008141 }
8142 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
8143 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008144 return (void*)dynCheck_entry_vkGetSwapchainCounterEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008145 }
8146#endif
8147#ifdef VK_GOOGLE_display_timing
8148 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
8149 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008150 return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008151 }
8152 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
8153 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008154 return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008155 }
8156#endif
8157#ifdef VK_EXT_discard_rectangles
8158 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
8159 {
8160 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles");
8161 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
8162 }
8163#endif
8164#ifdef VK_EXT_hdr_metadata
8165 if (!strcmp(name, "vkSetHdrMetadataEXT"))
8166 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008167 return (void*)dynCheck_entry_vkSetHdrMetadataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008168 }
8169#endif
8170#ifdef VK_MVK_ios_surface
8171 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
8172 {
8173 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface");
8174 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
8175 }
8176#endif
8177#ifdef VK_MVK_macos_surface
8178 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
8179 {
8180 bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface");
8181 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
8182 }
8183#endif
8184#ifdef VK_EXT_debug_utils
8185 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
8186 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008187 return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008188 }
8189 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
8190 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008191 return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008192 }
8193 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
8194 {
8195 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8196 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
8197 }
8198 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
8199 {
8200 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8201 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
8202 }
8203 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
8204 {
8205 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8206 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
8207 }
8208 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
8209 {
8210 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8211 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
8212 }
8213 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
8214 {
8215 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8216 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
8217 }
8218 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
8219 {
8220 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8221 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
8222 }
8223 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
8224 {
8225 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8226 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
8227 }
8228 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
8229 {
8230 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8231 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
8232 }
8233 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
8234 {
8235 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils");
8236 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
8237 }
8238#endif
8239#ifdef VK_ANDROID_external_memory_android_hardware_buffer
8240 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
8241 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008242 return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008243 }
8244 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
8245 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008246 return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008247 }
8248#endif
8249#ifdef VK_EXT_sample_locations
8250 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
8251 {
8252 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8253 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
8254 }
8255 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
8256 {
8257 bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
8258 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
8259 }
8260#endif
8261#ifdef VK_EXT_validation_cache
8262 if (!strcmp(name, "vkCreateValidationCacheEXT"))
8263 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008264 return (void*)dynCheck_entry_vkCreateValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008265 }
8266 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
8267 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008268 return (void*)dynCheck_entry_vkDestroyValidationCacheEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008269 }
8270 if (!strcmp(name, "vkMergeValidationCachesEXT"))
8271 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008272 return (void*)dynCheck_entry_vkMergeValidationCachesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008273 }
8274 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
8275 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008276 return (void*)dynCheck_entry_vkGetValidationCacheDataEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008277 }
8278#endif
8279#ifdef VK_EXT_external_memory_host
8280 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
8281 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008282 return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008283 }
8284#endif
8285#ifdef VK_AMD_buffer_marker
8286 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
8287 {
8288 bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker");
8289 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
8290 }
8291#endif
8292#ifdef VK_NV_device_diagnostic_checkpoints
8293 if (!strcmp(name, "vkCmdSetCheckpointNV"))
8294 {
8295 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8296 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
8297 }
8298 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
8299 {
8300 bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
8301 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
8302 }
8303#endif
8304#ifdef VK_GOOGLE_address_space
8305 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
8306 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008307 return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008308 }
8309#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008310#ifdef VK_GOOGLE_color_buffer
8311 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
8312 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008313 return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008314 }
8315 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
8316 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008317 return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08008318 }
8319#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008320#ifdef VK_GOOGLE_sized_descriptor_update_template
8321 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
8322 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008323 return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07008324 }
8325#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008326#ifdef VK_GOOGLE_async_command_buffers
8327 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
8328 {
8329 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8330 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
8331 }
8332 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
8333 {
8334 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8335 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
8336 }
8337 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
8338 {
8339 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8340 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
8341 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07008342 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
8343 {
8344 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers");
8345 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
8346 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07008347#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00008348#ifdef VK_GOOGLE_create_resources_with_requirements
8349 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
8350 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008351 return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008352 }
8353 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
8354 {
Lingfeng Yang2f51a332019-10-30 09:25:25 -07008355 return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
Lingfeng Yang87f11962019-06-27 16:28:53 +00008356 }
8357#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -08008358#ifdef VK_GOOGLE_address_space_info
8359 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
8360 {
8361 return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
8362 }
8363#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -07008364#ifdef VK_GOOGLE_free_memory_sync
8365 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
8366 {
8367 return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
8368 }
8369#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -07008370#ifdef VK_GOOGLE_async_queue_submit
8371 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
8372 {
8373 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8374 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
8375 }
8376 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
8377 {
8378 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8379 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
8380 }
8381 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
8382 {
8383 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8384 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
8385 }
8386 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
8387 {
8388 bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit");
8389 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
8390 }
8391#endif
Lingfeng Yangf0654ff2019-02-02 12:21:24 -08008392 return nullptr;
8393}
8394void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){
8395 auto resources = ResourceTracker::get();
8396 bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1;
8397#ifdef VK_VERSION_1_0
8398 if (!strcmp(name, "vkCreateInstance"))
8399 {
8400 return (void*)entry_vkCreateInstance;
8401 }
8402 if (!strcmp(name, "vkDestroyInstance"))
8403 {
8404 return (void*)entry_vkDestroyInstance;
8405 }
8406 if (!strcmp(name, "vkEnumeratePhysicalDevices"))
8407 {
8408 return (void*)entry_vkEnumeratePhysicalDevices;
8409 }
8410 if (!strcmp(name, "vkGetPhysicalDeviceFeatures"))
8411 {
8412 return (void*)entry_vkGetPhysicalDeviceFeatures;
8413 }
8414 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties"))
8415 {
8416 return (void*)entry_vkGetPhysicalDeviceFormatProperties;
8417 }
8418 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties"))
8419 {
8420 return (void*)entry_vkGetPhysicalDeviceImageFormatProperties;
8421 }
8422 if (!strcmp(name, "vkGetPhysicalDeviceProperties"))
8423 {
8424 return (void*)entry_vkGetPhysicalDeviceProperties;
8425 }
8426 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties"))
8427 {
8428 return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties;
8429 }
8430 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties"))
8431 {
8432 return (void*)entry_vkGetPhysicalDeviceMemoryProperties;
8433 }
8434 if (!strcmp(name, "vkGetInstanceProcAddr"))
8435 {
8436 return (void*)entry_vkGetInstanceProcAddr;
8437 }
8438 if (!strcmp(name, "vkGetDeviceProcAddr"))
8439 {
8440 return (void*)entry_vkGetDeviceProcAddr;
8441 }
8442 if (!strcmp(name, "vkCreateDevice"))
8443 {
8444 return (void*)entry_vkCreateDevice;
8445 }
8446 if (!strcmp(name, "vkDestroyDevice"))
8447 {
8448 return (void*)entry_vkDestroyDevice;
8449 }
8450 if (!strcmp(name, "vkEnumerateInstanceExtensionProperties"))
8451 {
8452 return (void*)entry_vkEnumerateInstanceExtensionProperties;
8453 }
8454 if (!strcmp(name, "vkEnumerateDeviceExtensionProperties"))
8455 {
8456 return (void*)entry_vkEnumerateDeviceExtensionProperties;
8457 }
8458 if (!strcmp(name, "vkEnumerateInstanceLayerProperties"))
8459 {
8460 return (void*)entry_vkEnumerateInstanceLayerProperties;
8461 }
8462 if (!strcmp(name, "vkEnumerateDeviceLayerProperties"))
8463 {
8464 return (void*)entry_vkEnumerateDeviceLayerProperties;
8465 }
8466 if (!strcmp(name, "vkGetDeviceQueue"))
8467 {
8468 return (void*)entry_vkGetDeviceQueue;
8469 }
8470 if (!strcmp(name, "vkQueueSubmit"))
8471 {
8472 return (void*)entry_vkQueueSubmit;
8473 }
8474 if (!strcmp(name, "vkQueueWaitIdle"))
8475 {
8476 return (void*)entry_vkQueueWaitIdle;
8477 }
8478 if (!strcmp(name, "vkDeviceWaitIdle"))
8479 {
8480 return (void*)entry_vkDeviceWaitIdle;
8481 }
8482 if (!strcmp(name, "vkAllocateMemory"))
8483 {
8484 return (void*)entry_vkAllocateMemory;
8485 }
8486 if (!strcmp(name, "vkFreeMemory"))
8487 {
8488 return (void*)entry_vkFreeMemory;
8489 }
8490 if (!strcmp(name, "vkMapMemory"))
8491 {
8492 return (void*)entry_vkMapMemory;
8493 }
8494 if (!strcmp(name, "vkUnmapMemory"))
8495 {
8496 return (void*)entry_vkUnmapMemory;
8497 }
8498 if (!strcmp(name, "vkFlushMappedMemoryRanges"))
8499 {
8500 return (void*)entry_vkFlushMappedMemoryRanges;
8501 }
8502 if (!strcmp(name, "vkInvalidateMappedMemoryRanges"))
8503 {
8504 return (void*)entry_vkInvalidateMappedMemoryRanges;
8505 }
8506 if (!strcmp(name, "vkGetDeviceMemoryCommitment"))
8507 {
8508 return (void*)entry_vkGetDeviceMemoryCommitment;
8509 }
8510 if (!strcmp(name, "vkBindBufferMemory"))
8511 {
8512 return (void*)entry_vkBindBufferMemory;
8513 }
8514 if (!strcmp(name, "vkBindImageMemory"))
8515 {
8516 return (void*)entry_vkBindImageMemory;
8517 }
8518 if (!strcmp(name, "vkGetBufferMemoryRequirements"))
8519 {
8520 return (void*)entry_vkGetBufferMemoryRequirements;
8521 }
8522 if (!strcmp(name, "vkGetImageMemoryRequirements"))
8523 {
8524 return (void*)entry_vkGetImageMemoryRequirements;
8525 }
8526 if (!strcmp(name, "vkGetImageSparseMemoryRequirements"))
8527 {
8528 return (void*)entry_vkGetImageSparseMemoryRequirements;
8529 }
8530 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties"))
8531 {
8532 return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties;
8533 }
8534 if (!strcmp(name, "vkQueueBindSparse"))
8535 {
8536 return (void*)entry_vkQueueBindSparse;
8537 }
8538 if (!strcmp(name, "vkCreateFence"))
8539 {
8540 return (void*)entry_vkCreateFence;
8541 }
8542 if (!strcmp(name, "vkDestroyFence"))
8543 {
8544 return (void*)entry_vkDestroyFence;
8545 }
8546 if (!strcmp(name, "vkResetFences"))
8547 {
8548 return (void*)entry_vkResetFences;
8549 }
8550 if (!strcmp(name, "vkGetFenceStatus"))
8551 {
8552 return (void*)entry_vkGetFenceStatus;
8553 }
8554 if (!strcmp(name, "vkWaitForFences"))
8555 {
8556 return (void*)entry_vkWaitForFences;
8557 }
8558 if (!strcmp(name, "vkCreateSemaphore"))
8559 {
8560 return (void*)entry_vkCreateSemaphore;
8561 }
8562 if (!strcmp(name, "vkDestroySemaphore"))
8563 {
8564 return (void*)entry_vkDestroySemaphore;
8565 }
8566 if (!strcmp(name, "vkCreateEvent"))
8567 {
8568 return (void*)entry_vkCreateEvent;
8569 }
8570 if (!strcmp(name, "vkDestroyEvent"))
8571 {
8572 return (void*)entry_vkDestroyEvent;
8573 }
8574 if (!strcmp(name, "vkGetEventStatus"))
8575 {
8576 return (void*)entry_vkGetEventStatus;
8577 }
8578 if (!strcmp(name, "vkSetEvent"))
8579 {
8580 return (void*)entry_vkSetEvent;
8581 }
8582 if (!strcmp(name, "vkResetEvent"))
8583 {
8584 return (void*)entry_vkResetEvent;
8585 }
8586 if (!strcmp(name, "vkCreateQueryPool"))
8587 {
8588 return (void*)entry_vkCreateQueryPool;
8589 }
8590 if (!strcmp(name, "vkDestroyQueryPool"))
8591 {
8592 return (void*)entry_vkDestroyQueryPool;
8593 }
8594 if (!strcmp(name, "vkGetQueryPoolResults"))
8595 {
8596 return (void*)entry_vkGetQueryPoolResults;
8597 }
8598 if (!strcmp(name, "vkCreateBuffer"))
8599 {
8600 return (void*)entry_vkCreateBuffer;
8601 }
8602 if (!strcmp(name, "vkDestroyBuffer"))
8603 {
8604 return (void*)entry_vkDestroyBuffer;
8605 }
8606 if (!strcmp(name, "vkCreateBufferView"))
8607 {
8608 return (void*)entry_vkCreateBufferView;
8609 }
8610 if (!strcmp(name, "vkDestroyBufferView"))
8611 {
8612 return (void*)entry_vkDestroyBufferView;
8613 }
8614 if (!strcmp(name, "vkCreateImage"))
8615 {
8616 return (void*)entry_vkCreateImage;
8617 }
8618 if (!strcmp(name, "vkDestroyImage"))
8619 {
8620 return (void*)entry_vkDestroyImage;
8621 }
8622 if (!strcmp(name, "vkGetImageSubresourceLayout"))
8623 {
8624 return (void*)entry_vkGetImageSubresourceLayout;
8625 }
8626 if (!strcmp(name, "vkCreateImageView"))
8627 {
8628 return (void*)entry_vkCreateImageView;
8629 }
8630 if (!strcmp(name, "vkDestroyImageView"))
8631 {
8632 return (void*)entry_vkDestroyImageView;
8633 }
8634 if (!strcmp(name, "vkCreateShaderModule"))
8635 {
8636 return (void*)entry_vkCreateShaderModule;
8637 }
8638 if (!strcmp(name, "vkDestroyShaderModule"))
8639 {
8640 return (void*)entry_vkDestroyShaderModule;
8641 }
8642 if (!strcmp(name, "vkCreatePipelineCache"))
8643 {
8644 return (void*)entry_vkCreatePipelineCache;
8645 }
8646 if (!strcmp(name, "vkDestroyPipelineCache"))
8647 {
8648 return (void*)entry_vkDestroyPipelineCache;
8649 }
8650 if (!strcmp(name, "vkGetPipelineCacheData"))
8651 {
8652 return (void*)entry_vkGetPipelineCacheData;
8653 }
8654 if (!strcmp(name, "vkMergePipelineCaches"))
8655 {
8656 return (void*)entry_vkMergePipelineCaches;
8657 }
8658 if (!strcmp(name, "vkCreateGraphicsPipelines"))
8659 {
8660 return (void*)entry_vkCreateGraphicsPipelines;
8661 }
8662 if (!strcmp(name, "vkCreateComputePipelines"))
8663 {
8664 return (void*)entry_vkCreateComputePipelines;
8665 }
8666 if (!strcmp(name, "vkDestroyPipeline"))
8667 {
8668 return (void*)entry_vkDestroyPipeline;
8669 }
8670 if (!strcmp(name, "vkCreatePipelineLayout"))
8671 {
8672 return (void*)entry_vkCreatePipelineLayout;
8673 }
8674 if (!strcmp(name, "vkDestroyPipelineLayout"))
8675 {
8676 return (void*)entry_vkDestroyPipelineLayout;
8677 }
8678 if (!strcmp(name, "vkCreateSampler"))
8679 {
8680 return (void*)entry_vkCreateSampler;
8681 }
8682 if (!strcmp(name, "vkDestroySampler"))
8683 {
8684 return (void*)entry_vkDestroySampler;
8685 }
8686 if (!strcmp(name, "vkCreateDescriptorSetLayout"))
8687 {
8688 return (void*)entry_vkCreateDescriptorSetLayout;
8689 }
8690 if (!strcmp(name, "vkDestroyDescriptorSetLayout"))
8691 {
8692 return (void*)entry_vkDestroyDescriptorSetLayout;
8693 }
8694 if (!strcmp(name, "vkCreateDescriptorPool"))
8695 {
8696 return (void*)entry_vkCreateDescriptorPool;
8697 }
8698 if (!strcmp(name, "vkDestroyDescriptorPool"))
8699 {
8700 return (void*)entry_vkDestroyDescriptorPool;
8701 }
8702 if (!strcmp(name, "vkResetDescriptorPool"))
8703 {
8704 return (void*)entry_vkResetDescriptorPool;
8705 }
8706 if (!strcmp(name, "vkAllocateDescriptorSets"))
8707 {
8708 return (void*)entry_vkAllocateDescriptorSets;
8709 }
8710 if (!strcmp(name, "vkFreeDescriptorSets"))
8711 {
8712 return (void*)entry_vkFreeDescriptorSets;
8713 }
8714 if (!strcmp(name, "vkUpdateDescriptorSets"))
8715 {
8716 return (void*)entry_vkUpdateDescriptorSets;
8717 }
8718 if (!strcmp(name, "vkCreateFramebuffer"))
8719 {
8720 return (void*)entry_vkCreateFramebuffer;
8721 }
8722 if (!strcmp(name, "vkDestroyFramebuffer"))
8723 {
8724 return (void*)entry_vkDestroyFramebuffer;
8725 }
8726 if (!strcmp(name, "vkCreateRenderPass"))
8727 {
8728 return (void*)entry_vkCreateRenderPass;
8729 }
8730 if (!strcmp(name, "vkDestroyRenderPass"))
8731 {
8732 return (void*)entry_vkDestroyRenderPass;
8733 }
8734 if (!strcmp(name, "vkGetRenderAreaGranularity"))
8735 {
8736 return (void*)entry_vkGetRenderAreaGranularity;
8737 }
8738 if (!strcmp(name, "vkCreateCommandPool"))
8739 {
8740 return (void*)entry_vkCreateCommandPool;
8741 }
8742 if (!strcmp(name, "vkDestroyCommandPool"))
8743 {
8744 return (void*)entry_vkDestroyCommandPool;
8745 }
8746 if (!strcmp(name, "vkResetCommandPool"))
8747 {
8748 return (void*)entry_vkResetCommandPool;
8749 }
8750 if (!strcmp(name, "vkAllocateCommandBuffers"))
8751 {
8752 return (void*)entry_vkAllocateCommandBuffers;
8753 }
8754 if (!strcmp(name, "vkFreeCommandBuffers"))
8755 {
8756 return (void*)entry_vkFreeCommandBuffers;
8757 }
8758 if (!strcmp(name, "vkBeginCommandBuffer"))
8759 {
8760 return (void*)entry_vkBeginCommandBuffer;
8761 }
8762 if (!strcmp(name, "vkEndCommandBuffer"))
8763 {
8764 return (void*)entry_vkEndCommandBuffer;
8765 }
8766 if (!strcmp(name, "vkResetCommandBuffer"))
8767 {
8768 return (void*)entry_vkResetCommandBuffer;
8769 }
8770 if (!strcmp(name, "vkCmdBindPipeline"))
8771 {
8772 return (void*)entry_vkCmdBindPipeline;
8773 }
8774 if (!strcmp(name, "vkCmdSetViewport"))
8775 {
8776 return (void*)entry_vkCmdSetViewport;
8777 }
8778 if (!strcmp(name, "vkCmdSetScissor"))
8779 {
8780 return (void*)entry_vkCmdSetScissor;
8781 }
8782 if (!strcmp(name, "vkCmdSetLineWidth"))
8783 {
8784 return (void*)entry_vkCmdSetLineWidth;
8785 }
8786 if (!strcmp(name, "vkCmdSetDepthBias"))
8787 {
8788 return (void*)entry_vkCmdSetDepthBias;
8789 }
8790 if (!strcmp(name, "vkCmdSetBlendConstants"))
8791 {
8792 return (void*)entry_vkCmdSetBlendConstants;
8793 }
8794 if (!strcmp(name, "vkCmdSetDepthBounds"))
8795 {
8796 return (void*)entry_vkCmdSetDepthBounds;
8797 }
8798 if (!strcmp(name, "vkCmdSetStencilCompareMask"))
8799 {
8800 return (void*)entry_vkCmdSetStencilCompareMask;
8801 }
8802 if (!strcmp(name, "vkCmdSetStencilWriteMask"))
8803 {
8804 return (void*)entry_vkCmdSetStencilWriteMask;
8805 }
8806 if (!strcmp(name, "vkCmdSetStencilReference"))
8807 {
8808 return (void*)entry_vkCmdSetStencilReference;
8809 }
8810 if (!strcmp(name, "vkCmdBindDescriptorSets"))
8811 {
8812 return (void*)entry_vkCmdBindDescriptorSets;
8813 }
8814 if (!strcmp(name, "vkCmdBindIndexBuffer"))
8815 {
8816 return (void*)entry_vkCmdBindIndexBuffer;
8817 }
8818 if (!strcmp(name, "vkCmdBindVertexBuffers"))
8819 {
8820 return (void*)entry_vkCmdBindVertexBuffers;
8821 }
8822 if (!strcmp(name, "vkCmdDraw"))
8823 {
8824 return (void*)entry_vkCmdDraw;
8825 }
8826 if (!strcmp(name, "vkCmdDrawIndexed"))
8827 {
8828 return (void*)entry_vkCmdDrawIndexed;
8829 }
8830 if (!strcmp(name, "vkCmdDrawIndirect"))
8831 {
8832 return (void*)entry_vkCmdDrawIndirect;
8833 }
8834 if (!strcmp(name, "vkCmdDrawIndexedIndirect"))
8835 {
8836 return (void*)entry_vkCmdDrawIndexedIndirect;
8837 }
8838 if (!strcmp(name, "vkCmdDispatch"))
8839 {
8840 return (void*)entry_vkCmdDispatch;
8841 }
8842 if (!strcmp(name, "vkCmdDispatchIndirect"))
8843 {
8844 return (void*)entry_vkCmdDispatchIndirect;
8845 }
8846 if (!strcmp(name, "vkCmdCopyBuffer"))
8847 {
8848 return (void*)entry_vkCmdCopyBuffer;
8849 }
8850 if (!strcmp(name, "vkCmdCopyImage"))
8851 {
8852 return (void*)entry_vkCmdCopyImage;
8853 }
8854 if (!strcmp(name, "vkCmdBlitImage"))
8855 {
8856 return (void*)entry_vkCmdBlitImage;
8857 }
8858 if (!strcmp(name, "vkCmdCopyBufferToImage"))
8859 {
8860 return (void*)entry_vkCmdCopyBufferToImage;
8861 }
8862 if (!strcmp(name, "vkCmdCopyImageToBuffer"))
8863 {
8864 return (void*)entry_vkCmdCopyImageToBuffer;
8865 }
8866 if (!strcmp(name, "vkCmdUpdateBuffer"))
8867 {
8868 return (void*)entry_vkCmdUpdateBuffer;
8869 }
8870 if (!strcmp(name, "vkCmdFillBuffer"))
8871 {
8872 return (void*)entry_vkCmdFillBuffer;
8873 }
8874 if (!strcmp(name, "vkCmdClearColorImage"))
8875 {
8876 return (void*)entry_vkCmdClearColorImage;
8877 }
8878 if (!strcmp(name, "vkCmdClearDepthStencilImage"))
8879 {
8880 return (void*)entry_vkCmdClearDepthStencilImage;
8881 }
8882 if (!strcmp(name, "vkCmdClearAttachments"))
8883 {
8884 return (void*)entry_vkCmdClearAttachments;
8885 }
8886 if (!strcmp(name, "vkCmdResolveImage"))
8887 {
8888 return (void*)entry_vkCmdResolveImage;
8889 }
8890 if (!strcmp(name, "vkCmdSetEvent"))
8891 {
8892 return (void*)entry_vkCmdSetEvent;
8893 }
8894 if (!strcmp(name, "vkCmdResetEvent"))
8895 {
8896 return (void*)entry_vkCmdResetEvent;
8897 }
8898 if (!strcmp(name, "vkCmdWaitEvents"))
8899 {
8900 return (void*)entry_vkCmdWaitEvents;
8901 }
8902 if (!strcmp(name, "vkCmdPipelineBarrier"))
8903 {
8904 return (void*)entry_vkCmdPipelineBarrier;
8905 }
8906 if (!strcmp(name, "vkCmdBeginQuery"))
8907 {
8908 return (void*)entry_vkCmdBeginQuery;
8909 }
8910 if (!strcmp(name, "vkCmdEndQuery"))
8911 {
8912 return (void*)entry_vkCmdEndQuery;
8913 }
8914 if (!strcmp(name, "vkCmdResetQueryPool"))
8915 {
8916 return (void*)entry_vkCmdResetQueryPool;
8917 }
8918 if (!strcmp(name, "vkCmdWriteTimestamp"))
8919 {
8920 return (void*)entry_vkCmdWriteTimestamp;
8921 }
8922 if (!strcmp(name, "vkCmdCopyQueryPoolResults"))
8923 {
8924 return (void*)entry_vkCmdCopyQueryPoolResults;
8925 }
8926 if (!strcmp(name, "vkCmdPushConstants"))
8927 {
8928 return (void*)entry_vkCmdPushConstants;
8929 }
8930 if (!strcmp(name, "vkCmdBeginRenderPass"))
8931 {
8932 return (void*)entry_vkCmdBeginRenderPass;
8933 }
8934 if (!strcmp(name, "vkCmdNextSubpass"))
8935 {
8936 return (void*)entry_vkCmdNextSubpass;
8937 }
8938 if (!strcmp(name, "vkCmdEndRenderPass"))
8939 {
8940 return (void*)entry_vkCmdEndRenderPass;
8941 }
8942 if (!strcmp(name, "vkCmdExecuteCommands"))
8943 {
8944 return (void*)entry_vkCmdExecuteCommands;
8945 }
8946#endif
8947#ifdef VK_VERSION_1_1
8948 if (!strcmp(name, "vkEnumerateInstanceVersion"))
8949 {
8950 return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr;
8951 }
8952 if (!strcmp(name, "vkBindBufferMemory2"))
8953 {
8954 return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr;
8955 }
8956 if (!strcmp(name, "vkBindImageMemory2"))
8957 {
8958 return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr;
8959 }
8960 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures"))
8961 {
8962 return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr;
8963 }
8964 if (!strcmp(name, "vkCmdSetDeviceMask"))
8965 {
8966 return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr;
8967 }
8968 if (!strcmp(name, "vkCmdDispatchBase"))
8969 {
8970 return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr;
8971 }
8972 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups"))
8973 {
8974 return nullptr;
8975 }
8976 if (!strcmp(name, "vkGetImageMemoryRequirements2"))
8977 {
8978 return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr;
8979 }
8980 if (!strcmp(name, "vkGetBufferMemoryRequirements2"))
8981 {
8982 return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr;
8983 }
8984 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2"))
8985 {
8986 return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr;
8987 }
8988 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2"))
8989 {
8990 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr;
8991 }
8992 if (!strcmp(name, "vkGetPhysicalDeviceProperties2"))
8993 {
8994 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr;
8995 }
8996 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2"))
8997 {
8998 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr;
8999 }
9000 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2"))
9001 {
9002 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr;
9003 }
9004 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2"))
9005 {
9006 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr;
9007 }
9008 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2"))
9009 {
9010 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr;
9011 }
9012 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2"))
9013 {
9014 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr;
9015 }
9016 if (!strcmp(name, "vkTrimCommandPool"))
9017 {
9018 return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr;
9019 }
9020 if (!strcmp(name, "vkGetDeviceQueue2"))
9021 {
9022 return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr;
9023 }
9024 if (!strcmp(name, "vkCreateSamplerYcbcrConversion"))
9025 {
9026 return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr;
9027 }
9028 if (!strcmp(name, "vkDestroySamplerYcbcrConversion"))
9029 {
9030 return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr;
9031 }
9032 if (!strcmp(name, "vkCreateDescriptorUpdateTemplate"))
9033 {
9034 return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr;
9035 }
9036 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate"))
9037 {
9038 return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr;
9039 }
9040 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate"))
9041 {
9042 return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr;
9043 }
9044 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties"))
9045 {
9046 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr;
9047 }
9048 if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties"))
9049 {
9050 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr;
9051 }
9052 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties"))
9053 {
9054 return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr;
9055 }
9056 if (!strcmp(name, "vkGetDescriptorSetLayoutSupport"))
9057 {
9058 return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr;
9059 }
9060#endif
9061#ifdef VK_KHR_surface
9062 if (!strcmp(name, "vkDestroySurfaceKHR"))
9063 {
9064 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9065 return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr;
9066 }
9067 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR"))
9068 {
9069 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9070 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr;
9071 }
9072 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"))
9073 {
9074 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9075 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr;
9076 }
9077 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR"))
9078 {
9079 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9080 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr;
9081 }
9082 if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR"))
9083 {
9084 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface");
9085 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr;
9086 }
9087#endif
9088#ifdef VK_KHR_swapchain
9089 if (!strcmp(name, "vkCreateSwapchainKHR"))
9090 {
9091 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9092 return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr;
9093 }
9094 if (!strcmp(name, "vkDestroySwapchainKHR"))
9095 {
9096 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9097 return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr;
9098 }
9099 if (!strcmp(name, "vkGetSwapchainImagesKHR"))
9100 {
9101 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9102 return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr;
9103 }
9104 if (!strcmp(name, "vkAcquireNextImageKHR"))
9105 {
9106 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9107 return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr;
9108 }
9109 if (!strcmp(name, "vkQueuePresentKHR"))
9110 {
9111 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9112 return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr;
9113 }
9114 if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR"))
9115 {
9116 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9117 return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr;
9118 }
9119 if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR"))
9120 {
9121 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9122 return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr;
9123 }
9124 if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR"))
9125 {
9126 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9127 return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr;
9128 }
9129 if (!strcmp(name, "vkAcquireNextImage2KHR"))
9130 {
9131 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain");
9132 return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr;
9133 }
9134#endif
9135#ifdef VK_KHR_display
9136 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR"))
9137 {
9138 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9139 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr;
9140 }
9141 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"))
9142 {
9143 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9144 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr;
9145 }
9146 if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR"))
9147 {
9148 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9149 return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr;
9150 }
9151 if (!strcmp(name, "vkGetDisplayModePropertiesKHR"))
9152 {
9153 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9154 return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr;
9155 }
9156 if (!strcmp(name, "vkCreateDisplayModeKHR"))
9157 {
9158 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9159 return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr;
9160 }
9161 if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR"))
9162 {
9163 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9164 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr;
9165 }
9166 if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR"))
9167 {
9168 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display");
9169 return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr;
9170 }
9171#endif
9172#ifdef VK_KHR_display_swapchain
9173 if (!strcmp(name, "vkCreateSharedSwapchainsKHR"))
9174 {
9175 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain");
9176 return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr;
9177 }
9178#endif
9179#ifdef VK_KHR_xlib_surface
9180 if (!strcmp(name, "vkCreateXlibSurfaceKHR"))
9181 {
9182 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9183 return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr;
9184 }
9185 if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR"))
9186 {
9187 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface");
9188 return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr;
9189 }
9190#endif
9191#ifdef VK_KHR_xcb_surface
9192 if (!strcmp(name, "vkCreateXcbSurfaceKHR"))
9193 {
9194 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9195 return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr;
9196 }
9197 if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR"))
9198 {
9199 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface");
9200 return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr;
9201 }
9202#endif
9203#ifdef VK_KHR_wayland_surface
9204 if (!strcmp(name, "vkCreateWaylandSurfaceKHR"))
9205 {
9206 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9207 return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr;
9208 }
9209 if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"))
9210 {
9211 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface");
9212 return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr;
9213 }
9214#endif
9215#ifdef VK_KHR_mir_surface
9216 if (!strcmp(name, "vkCreateMirSurfaceKHR"))
9217 {
9218 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9219 return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr;
9220 }
9221 if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR"))
9222 {
9223 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface");
9224 return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr;
9225 }
9226#endif
9227#ifdef VK_KHR_android_surface
9228 if (!strcmp(name, "vkCreateAndroidSurfaceKHR"))
9229 {
9230 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface");
9231 return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr;
9232 }
9233#endif
9234#ifdef VK_KHR_win32_surface
9235 if (!strcmp(name, "vkCreateWin32SurfaceKHR"))
9236 {
9237 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9238 return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr;
9239 }
9240 if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR"))
9241 {
9242 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface");
9243 return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr;
9244 }
9245#endif
9246#ifdef VK_KHR_get_physical_device_properties2
9247 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR"))
9248 {
9249 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9250 return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr;
9251 }
9252 if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR"))
9253 {
9254 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9255 return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr;
9256 }
9257 if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR"))
9258 {
9259 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9260 return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr;
9261 }
9262 if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR"))
9263 {
9264 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9265 return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr;
9266 }
9267 if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"))
9268 {
9269 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9270 return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr;
9271 }
9272 if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR"))
9273 {
9274 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9275 return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr;
9276 }
9277 if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"))
9278 {
9279 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2");
9280 return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr;
9281 }
9282#endif
9283#ifdef VK_KHR_device_group
9284 if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR"))
9285 {
9286 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9287 return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr;
9288 }
9289 if (!strcmp(name, "vkCmdSetDeviceMaskKHR"))
9290 {
9291 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9292 return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr;
9293 }
9294 if (!strcmp(name, "vkCmdDispatchBaseKHR"))
9295 {
9296 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group");
9297 return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr;
9298 }
9299#endif
9300#ifdef VK_KHR_maintenance1
9301 if (!strcmp(name, "vkTrimCommandPoolKHR"))
9302 {
9303 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1");
9304 return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr;
9305 }
9306#endif
9307#ifdef VK_KHR_device_group_creation
9308 if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR"))
9309 {
9310 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation");
9311 return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr;
9312 }
9313#endif
9314#ifdef VK_KHR_external_memory_capabilities
9315 if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"))
9316 {
9317 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities");
9318 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr;
9319 }
9320#endif
9321#ifdef VK_KHR_external_memory_win32
9322 if (!strcmp(name, "vkGetMemoryWin32HandleKHR"))
9323 {
9324 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9325 return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr;
9326 }
9327 if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR"))
9328 {
9329 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32");
9330 return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr;
9331 }
9332#endif
9333#ifdef VK_KHR_external_memory_fd
9334 if (!strcmp(name, "vkGetMemoryFdKHR"))
9335 {
9336 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9337 return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr;
9338 }
9339 if (!strcmp(name, "vkGetMemoryFdPropertiesKHR"))
9340 {
9341 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd");
9342 return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr;
9343 }
9344#endif
9345#ifdef VK_KHR_external_semaphore_capabilities
9346 if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"))
9347 {
9348 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities");
9349 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr;
9350 }
9351#endif
9352#ifdef VK_KHR_external_semaphore_win32
9353 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR"))
9354 {
9355 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9356 return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr;
9357 }
9358 if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR"))
9359 {
9360 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32");
9361 return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr;
9362 }
9363#endif
9364#ifdef VK_KHR_external_semaphore_fd
9365 if (!strcmp(name, "vkImportSemaphoreFdKHR"))
9366 {
9367 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9368 return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr;
9369 }
9370 if (!strcmp(name, "vkGetSemaphoreFdKHR"))
9371 {
9372 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd");
9373 return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr;
9374 }
9375#endif
9376#ifdef VK_KHR_push_descriptor
9377 if (!strcmp(name, "vkCmdPushDescriptorSetKHR"))
9378 {
9379 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9380 return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr;
9381 }
9382 if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
9383 {
9384 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor");
9385 return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr;
9386 }
9387#endif
9388#ifdef VK_KHR_descriptor_update_template
9389 if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR"))
9390 {
9391 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9392 return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr;
9393 }
9394 if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR"))
9395 {
9396 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9397 return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr;
9398 }
9399 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR"))
9400 {
9401 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template");
9402 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr;
9403 }
9404#endif
9405#ifdef VK_KHR_create_renderpass2
9406 if (!strcmp(name, "vkCreateRenderPass2KHR"))
9407 {
9408 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9409 return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr;
9410 }
9411 if (!strcmp(name, "vkCmdBeginRenderPass2KHR"))
9412 {
9413 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9414 return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr;
9415 }
9416 if (!strcmp(name, "vkCmdNextSubpass2KHR"))
9417 {
9418 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9419 return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr;
9420 }
9421 if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
9422 {
9423 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2");
9424 return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr;
9425 }
9426#endif
9427#ifdef VK_KHR_shared_presentable_image
9428 if (!strcmp(name, "vkGetSwapchainStatusKHR"))
9429 {
9430 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image");
9431 return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr;
9432 }
9433#endif
9434#ifdef VK_KHR_external_fence_capabilities
9435 if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR"))
9436 {
9437 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities");
9438 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr;
9439 }
9440#endif
9441#ifdef VK_KHR_external_fence_win32
9442 if (!strcmp(name, "vkImportFenceWin32HandleKHR"))
9443 {
9444 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9445 return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr;
9446 }
9447 if (!strcmp(name, "vkGetFenceWin32HandleKHR"))
9448 {
9449 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32");
9450 return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr;
9451 }
9452#endif
9453#ifdef VK_KHR_external_fence_fd
9454 if (!strcmp(name, "vkImportFenceFdKHR"))
9455 {
9456 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9457 return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr;
9458 }
9459 if (!strcmp(name, "vkGetFenceFdKHR"))
9460 {
9461 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd");
9462 return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr;
9463 }
9464#endif
9465#ifdef VK_KHR_get_surface_capabilities2
9466 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"))
9467 {
9468 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9469 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr;
9470 }
9471 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR"))
9472 {
9473 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2");
9474 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr;
9475 }
9476#endif
9477#ifdef VK_KHR_get_display_properties2
9478 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR"))
9479 {
9480 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9481 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr;
9482 }
9483 if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"))
9484 {
9485 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9486 return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr;
9487 }
9488 if (!strcmp(name, "vkGetDisplayModeProperties2KHR"))
9489 {
9490 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9491 return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr;
9492 }
9493 if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR"))
9494 {
9495 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2");
9496 return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr;
9497 }
9498#endif
9499#ifdef VK_KHR_get_memory_requirements2
9500 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR"))
9501 {
9502 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9503 return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr;
9504 }
9505 if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR"))
9506 {
9507 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9508 return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr;
9509 }
9510 if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR"))
9511 {
9512 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2");
9513 return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr;
9514 }
9515#endif
9516#ifdef VK_KHR_sampler_ycbcr_conversion
9517 if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR"))
9518 {
9519 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9520 return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr;
9521 }
9522 if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR"))
9523 {
9524 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion");
9525 return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr;
9526 }
9527#endif
9528#ifdef VK_KHR_bind_memory2
9529 if (!strcmp(name, "vkBindBufferMemory2KHR"))
9530 {
9531 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9532 return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr;
9533 }
9534 if (!strcmp(name, "vkBindImageMemory2KHR"))
9535 {
9536 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2");
9537 return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr;
9538 }
9539#endif
9540#ifdef VK_KHR_maintenance3
9541 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR"))
9542 {
9543 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3");
9544 return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr;
9545 }
9546#endif
9547#ifdef VK_KHR_draw_indirect_count
9548 if (!strcmp(name, "vkCmdDrawIndirectCountKHR"))
9549 {
9550 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9551 return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr;
9552 }
9553 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
9554 {
9555 bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count");
9556 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr;
9557 }
9558#endif
9559#ifdef VK_ANDROID_native_buffer
9560 if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID"))
9561 {
9562 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9563 return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr;
9564 }
9565 if (!strcmp(name, "vkAcquireImageANDROID"))
9566 {
9567 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9568 return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr;
9569 }
9570 if (!strcmp(name, "vkQueueSignalReleaseImageANDROID"))
9571 {
9572 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer");
9573 return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr;
9574 }
9575#endif
9576#ifdef VK_EXT_debug_report
9577 if (!strcmp(name, "vkCreateDebugReportCallbackEXT"))
9578 {
9579 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9580 return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr;
9581 }
9582 if (!strcmp(name, "vkDestroyDebugReportCallbackEXT"))
9583 {
9584 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9585 return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr;
9586 }
9587 if (!strcmp(name, "vkDebugReportMessageEXT"))
9588 {
9589 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report");
9590 return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr;
9591 }
9592#endif
9593#ifdef VK_EXT_debug_marker
9594 if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT"))
9595 {
9596 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9597 return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr;
9598 }
9599 if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT"))
9600 {
9601 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9602 return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr;
9603 }
9604 if (!strcmp(name, "vkCmdDebugMarkerBeginEXT"))
9605 {
9606 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9607 return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr;
9608 }
9609 if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
9610 {
9611 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9612 return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr;
9613 }
9614 if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
9615 {
9616 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker");
9617 return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr;
9618 }
9619#endif
9620#ifdef VK_AMD_draw_indirect_count
9621 if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
9622 {
9623 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9624 return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr;
9625 }
9626 if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
9627 {
9628 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count");
9629 return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr;
9630 }
9631#endif
9632#ifdef VK_AMD_shader_info
9633 if (!strcmp(name, "vkGetShaderInfoAMD"))
9634 {
9635 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info");
9636 return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr;
9637 }
9638#endif
9639#ifdef VK_NV_external_memory_capabilities
9640 if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"))
9641 {
9642 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities");
9643 return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr;
9644 }
9645#endif
9646#ifdef VK_NV_external_memory_win32
9647 if (!strcmp(name, "vkGetMemoryWin32HandleNV"))
9648 {
9649 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32");
9650 return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr;
9651 }
9652#endif
9653#ifdef VK_NN_vi_surface
9654 if (!strcmp(name, "vkCreateViSurfaceNN"))
9655 {
9656 bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface");
9657 return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr;
9658 }
9659#endif
9660#ifdef VK_EXT_conditional_rendering
9661 if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT"))
9662 {
9663 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9664 return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr;
9665 }
9666 if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
9667 {
9668 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering");
9669 return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr;
9670 }
9671#endif
9672#ifdef VK_NVX_device_generated_commands
9673 if (!strcmp(name, "vkCmdProcessCommandsNVX"))
9674 {
9675 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9676 return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr;
9677 }
9678 if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX"))
9679 {
9680 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9681 return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr;
9682 }
9683 if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX"))
9684 {
9685 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9686 return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr;
9687 }
9688 if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX"))
9689 {
9690 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9691 return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr;
9692 }
9693 if (!strcmp(name, "vkCreateObjectTableNVX"))
9694 {
9695 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9696 return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr;
9697 }
9698 if (!strcmp(name, "vkDestroyObjectTableNVX"))
9699 {
9700 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9701 return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr;
9702 }
9703 if (!strcmp(name, "vkRegisterObjectsNVX"))
9704 {
9705 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9706 return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr;
9707 }
9708 if (!strcmp(name, "vkUnregisterObjectsNVX"))
9709 {
9710 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9711 return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr;
9712 }
9713 if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"))
9714 {
9715 bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands");
9716 return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr;
9717 }
9718#endif
9719#ifdef VK_NV_clip_space_w_scaling
9720 if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
9721 {
9722 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling");
9723 return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr;
9724 }
9725#endif
9726#ifdef VK_EXT_direct_mode_display
9727 if (!strcmp(name, "vkReleaseDisplayEXT"))
9728 {
9729 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display");
9730 return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr;
9731 }
9732#endif
9733#ifdef VK_EXT_acquire_xlib_display
9734 if (!strcmp(name, "vkAcquireXlibDisplayEXT"))
9735 {
9736 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9737 return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr;
9738 }
9739 if (!strcmp(name, "vkGetRandROutputDisplayEXT"))
9740 {
9741 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display");
9742 return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr;
9743 }
9744#endif
9745#ifdef VK_EXT_display_surface_counter
9746 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"))
9747 {
9748 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter");
9749 return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr;
9750 }
9751#endif
9752#ifdef VK_EXT_display_control
9753 if (!strcmp(name, "vkDisplayPowerControlEXT"))
9754 {
9755 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9756 return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr;
9757 }
9758 if (!strcmp(name, "vkRegisterDeviceEventEXT"))
9759 {
9760 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9761 return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr;
9762 }
9763 if (!strcmp(name, "vkRegisterDisplayEventEXT"))
9764 {
9765 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9766 return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr;
9767 }
9768 if (!strcmp(name, "vkGetSwapchainCounterEXT"))
9769 {
9770 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control");
9771 return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr;
9772 }
9773#endif
9774#ifdef VK_GOOGLE_display_timing
9775 if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE"))
9776 {
9777 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9778 return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr;
9779 }
9780 if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE"))
9781 {
9782 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing");
9783 return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr;
9784 }
9785#endif
9786#ifdef VK_EXT_discard_rectangles
9787 if (!strcmp(name, "vkCmdSetDiscardRectangleEXT"))
9788 {
9789 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles");
9790 return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr;
9791 }
9792#endif
9793#ifdef VK_EXT_hdr_metadata
9794 if (!strcmp(name, "vkSetHdrMetadataEXT"))
9795 {
9796 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata");
9797 return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr;
9798 }
9799#endif
9800#ifdef VK_MVK_ios_surface
9801 if (!strcmp(name, "vkCreateIOSSurfaceMVK"))
9802 {
9803 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface");
9804 return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr;
9805 }
9806#endif
9807#ifdef VK_MVK_macos_surface
9808 if (!strcmp(name, "vkCreateMacOSSurfaceMVK"))
9809 {
9810 bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface");
9811 return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr;
9812 }
9813#endif
9814#ifdef VK_EXT_debug_utils
9815 if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT"))
9816 {
9817 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9818 return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr;
9819 }
9820 if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT"))
9821 {
9822 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9823 return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr;
9824 }
9825 if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT"))
9826 {
9827 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9828 return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr;
9829 }
9830 if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT"))
9831 {
9832 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9833 return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr;
9834 }
9835 if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT"))
9836 {
9837 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9838 return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr;
9839 }
9840 if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT"))
9841 {
9842 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9843 return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr;
9844 }
9845 if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
9846 {
9847 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9848 return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr;
9849 }
9850 if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
9851 {
9852 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9853 return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr;
9854 }
9855 if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT"))
9856 {
9857 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9858 return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr;
9859 }
9860 if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT"))
9861 {
9862 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9863 return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr;
9864 }
9865 if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT"))
9866 {
9867 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils");
9868 return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr;
9869 }
9870#endif
9871#ifdef VK_ANDROID_external_memory_android_hardware_buffer
9872 if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID"))
9873 {
9874 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9875 return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr;
9876 }
9877 if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID"))
9878 {
9879 bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer");
9880 return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr;
9881 }
9882#endif
9883#ifdef VK_EXT_sample_locations
9884 if (!strcmp(name, "vkCmdSetSampleLocationsEXT"))
9885 {
9886 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9887 return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr;
9888 }
9889 if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
9890 {
9891 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations");
9892 return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
9893 }
9894#endif
9895#ifdef VK_EXT_validation_cache
9896 if (!strcmp(name, "vkCreateValidationCacheEXT"))
9897 {
9898 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9899 return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr;
9900 }
9901 if (!strcmp(name, "vkDestroyValidationCacheEXT"))
9902 {
9903 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9904 return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr;
9905 }
9906 if (!strcmp(name, "vkMergeValidationCachesEXT"))
9907 {
9908 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9909 return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr;
9910 }
9911 if (!strcmp(name, "vkGetValidationCacheDataEXT"))
9912 {
9913 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache");
9914 return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr;
9915 }
9916#endif
9917#ifdef VK_EXT_external_memory_host
9918 if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT"))
9919 {
9920 bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host");
9921 return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr;
9922 }
9923#endif
9924#ifdef VK_AMD_buffer_marker
9925 if (!strcmp(name, "vkCmdWriteBufferMarkerAMD"))
9926 {
9927 bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker");
9928 return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr;
9929 }
9930#endif
9931#ifdef VK_NV_device_diagnostic_checkpoints
9932 if (!strcmp(name, "vkCmdSetCheckpointNV"))
9933 {
9934 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9935 return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr;
9936 }
9937 if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
9938 {
9939 bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints");
9940 return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
9941 }
9942#endif
9943#ifdef VK_GOOGLE_address_space
9944 if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
9945 {
9946 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space");
9947 return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
Lingfeng Yang5c63afd2018-12-22 01:21:14 -08009948 }
9949#endif
Lingfeng Yangae7e1b32019-02-19 14:07:39 -08009950#ifdef VK_GOOGLE_color_buffer
9951 if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
9952 {
9953 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9954 return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
9955 }
9956 if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
9957 {
9958 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer");
9959 return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
9960 }
9961#endif
Lingfeng Yang05d5ea32019-03-23 00:12:39 -07009962#ifdef VK_GOOGLE_sized_descriptor_update_template
9963 if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
9964 {
9965 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template");
9966 return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
9967 }
9968#endif
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009969#ifdef VK_GOOGLE_async_command_buffers
9970 if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
9971 {
9972 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9973 return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
9974 }
9975 if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
9976 {
9977 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9978 return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
9979 }
9980 if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
9981 {
9982 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9983 return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
9984 }
Lingfeng Yang39a276e2019-06-17 13:27:22 -07009985 if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
9986 {
9987 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers");
9988 return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
9989 }
Lingfeng Yangc53e7472019-03-27 08:50:55 -07009990#endif
Lingfeng Yang87f11962019-06-27 16:28:53 +00009991#ifdef VK_GOOGLE_create_resources_with_requirements
9992 if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
9993 {
9994 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
9995 return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
9996 }
9997 if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
9998 {
9999 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements");
10000 return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
10001 }
10002#endif
Lingfeng Yang4c542412020-02-04 18:18:32 -080010003#ifdef VK_GOOGLE_address_space_info
10004 if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
10005 {
10006 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info");
10007 return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
10008 }
10009#endif
Lingfeng Yang2f39a1f2020-04-14 19:24:41 -070010010#ifdef VK_GOOGLE_free_memory_sync
10011 if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
10012 {
10013 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync");
10014 return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
10015 }
10016#endif
Lingfeng Yangf89f75d2020-07-09 17:42:33 -070010017#ifdef VK_GOOGLE_async_queue_submit
10018 if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
10019 {
10020 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10021 return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
10022 }
10023 if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
10024 {
10025 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10026 return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
10027 }
10028 if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
10029 {
10030 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10031 return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
10032 }
10033 if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
10034 {
10035 bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit");
10036 return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
10037 }
10038#endif
Lingfeng Yang0b81df22018-11-05 21:40:30 -080010039 return nullptr;
10040}
10041
10042} // namespace goldfish_vk