// Copyright (C) 2018 The Android Open Source Project // Copyright (C) 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Autogenerated module func_table // (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 // Please do not modify directly; // re-run android/scripts/generate-vulkan-sources.sh, // or directly from Python by defining: // VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml // CEREAL_OUTPUT_DIR: Where to put the generated sources. // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR #include "func_table.h" #include "VkEncoder.h" #include "HostConnection.h" #include "ResourceTracker.h" #include "goldfish_vk_private_defs.h" #include // Stuff we are not going to use but if included, // will cause compile errors. These are Android Vulkan // required extensions, but the approach will be to // implement them completely on the guest side. #undef VK_KHR_android_surface namespace goldfish_vk { static void sOnInvalidDynamicallyCheckedCall(const char* apiname, const char* neededFeature) { ALOGE("invalid call to %s: %s not supported", apiname, neededFeature); abort(); } #ifdef VK_VERSION_1_0 static VkResult entry_vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) { AEMU_SCOPED_TRACE("vkCreateInstance"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateInstance_VkResult_return = (VkResult)0; vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance); return vkCreateInstance_VkResult_return; } static void entry_vkDestroyInstance( VkInstance instance, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyInstance"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyInstance(instance, pAllocator); } static VkResult entry_vkEnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) { AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkEnumeratePhysicalDevices_VkResult_return = resources->on_vkEnumeratePhysicalDevices(vkEnc, VK_SUCCESS, instance, pPhysicalDeviceCount, pPhysicalDevices); return vkEnumeratePhysicalDevices_VkResult_return; } static void entry_vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures); } static void entry_vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties); } static VkResult entry_vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0; vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties); return vkGetPhysicalDeviceImageFormatProperties_VkResult_return; } static void entry_vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties); } static void entry_vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties); } static void entry_vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties); } static PFN_vkVoidFunction entry_vkGetInstanceProcAddr( VkInstance instance, const char* pName) { AEMU_SCOPED_TRACE("vkGetInstanceProcAddr"); auto vkEnc = HostConnection::get()->vkEncoder(); PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName); return vkGetInstanceProcAddr_PFN_vkVoidFunction_return; } static PFN_vkVoidFunction entry_vkGetDeviceProcAddr( VkDevice device, const char* pName) { AEMU_SCOPED_TRACE("vkGetDeviceProcAddr"); auto vkEnc = HostConnection::get()->vkEncoder(); PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName); return vkGetDeviceProcAddr_PFN_vkVoidFunction_return; } static VkResult entry_vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) { AEMU_SCOPED_TRACE("vkCreateDevice"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDevice_VkResult_return = (VkResult)0; vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice); return vkCreateDevice_VkResult_return; } static void entry_vkDestroyDevice( VkDevice device, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDevice"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDevice(device, pAllocator); } static VkResult entry_vkEnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkEnumerateInstanceExtensionProperties_VkResult_return = resources->on_vkEnumerateInstanceExtensionProperties(vkEnc, VK_SUCCESS, pLayerName, pPropertyCount, pProperties); return vkEnumerateInstanceExtensionProperties_VkResult_return; } static VkResult entry_vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkEnumerateDeviceExtensionProperties_VkResult_return = resources->on_vkEnumerateDeviceExtensionProperties(vkEnc, VK_SUCCESS, physicalDevice, pLayerName, pPropertyCount, pProperties); return vkEnumerateDeviceExtensionProperties_VkResult_return; } static VkResult entry_vkEnumerateInstanceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties) { AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0; vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties); return vkEnumerateInstanceLayerProperties_VkResult_return; } static VkResult entry_vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) { AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0; vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties); return vkEnumerateDeviceLayerProperties_VkResult_return; } static void entry_vkGetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) { AEMU_SCOPED_TRACE("vkGetDeviceQueue"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue); } static VkResult entry_vkQueueSubmit( VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) { AEMU_SCOPED_TRACE("vkQueueSubmit"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); VkResult vkQueueSubmit_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(vkEnc, VK_SUCCESS, queue, submitCount, pSubmits, fence); return vkQueueSubmit_VkResult_return; } static VkResult entry_vkQueueWaitIdle( VkQueue queue) { AEMU_SCOPED_TRACE("vkQueueWaitIdle"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkQueueWaitIdle_VkResult_return = resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, queue); return vkQueueWaitIdle_VkResult_return; } static VkResult entry_vkDeviceWaitIdle( VkDevice device) { AEMU_SCOPED_TRACE("vkDeviceWaitIdle"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0; vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device); return vkDeviceWaitIdle_VkResult_return; } static VkResult entry_vkAllocateMemory( VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) { AEMU_SCOPED_TRACE("vkAllocateMemory"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAllocateMemory_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkAllocateMemory_VkResult_return = resources->on_vkAllocateMemory(vkEnc, VK_SUCCESS, device, pAllocateInfo, pAllocator, pMemory); return vkAllocateMemory_VkResult_return; } static void entry_vkFreeMemory( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkFreeMemory"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkFreeMemory(vkEnc, device, memory, pAllocator); } static VkResult entry_vkMapMemory( VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) { AEMU_SCOPED_TRACE("vkMapMemory"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkMapMemory_VkResult_return = (VkResult)0; vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData); return vkMapMemory_VkResult_return; } static void entry_vkUnmapMemory( VkDevice device, VkDeviceMemory memory) { AEMU_SCOPED_TRACE("vkUnmapMemory"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkUnmapMemory(device, memory); } static VkResult entry_vkFlushMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) { AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0; vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges); return vkFlushMappedMemoryRanges_VkResult_return; } static VkResult entry_vkInvalidateMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) { AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0; vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges); return vkInvalidateMappedMemoryRanges_VkResult_return; } static void entry_vkGetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) { AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes); } static VkResult entry_vkBindBufferMemory( VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) { AEMU_SCOPED_TRACE("vkBindBufferMemory"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindBufferMemory_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(vkEnc, VK_SUCCESS, device, buffer, memory, memoryOffset); return vkBindBufferMemory_VkResult_return; } static VkResult entry_vkBindImageMemory( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) { AEMU_SCOPED_TRACE("vkBindImageMemory"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindImageMemory_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(vkEnc, VK_SUCCESS, device, image, memory, memoryOffset); return vkBindImageMemory_VkResult_return; } static void entry_vkGetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetBufferMemoryRequirements(vkEnc, device, buffer, pMemoryRequirements); } static void entry_vkGetImageMemoryRequirements( VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetImageMemoryRequirements(vkEnc, device, image, pMemoryRequirements); } static void entry_vkGetImageSparseMemoryRequirements( VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements); } static void entry_vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties); } static VkResult entry_vkQueueBindSparse( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) { AEMU_SCOPED_TRACE("vkQueueBindSparse"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); VkResult vkQueueBindSparse_VkResult_return = (VkResult)0; vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence); return vkQueueBindSparse_VkResult_return; } static VkResult entry_vkCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { AEMU_SCOPED_TRACE("vkCreateFence"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateFence_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateFence_VkResult_return = resources->on_vkCreateFence(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pFence); return vkCreateFence_VkResult_return; } static void entry_vkDestroyFence( VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyFence"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyFence(device, fence, pAllocator); } static VkResult entry_vkResetFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences) { AEMU_SCOPED_TRACE("vkResetFences"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkResetFences_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkResetFences_VkResult_return = resources->on_vkResetFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences); return vkResetFences_VkResult_return; } static VkResult entry_vkGetFenceStatus( VkDevice device, VkFence fence) { AEMU_SCOPED_TRACE("vkGetFenceStatus"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetFenceStatus_VkResult_return = (VkResult)0; vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence); return vkGetFenceStatus_VkResult_return; } static VkResult entry_vkWaitForFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) { AEMU_SCOPED_TRACE("vkWaitForFences"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkWaitForFences_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkWaitForFences_VkResult_return = resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, device, fenceCount, pFences, waitAll, timeout); return vkWaitForFences_VkResult_return; } static VkResult entry_vkCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) { AEMU_SCOPED_TRACE("vkCreateSemaphore"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSemaphore_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSemaphore); return vkCreateSemaphore_VkResult_return; } static void entry_vkDestroySemaphore( VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroySemaphore"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkDestroySemaphore(vkEnc, device, semaphore, pAllocator); } static VkResult entry_vkCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) { AEMU_SCOPED_TRACE("vkCreateEvent"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateEvent_VkResult_return = (VkResult)0; vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent); return vkCreateEvent_VkResult_return; } static void entry_vkDestroyEvent( VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyEvent"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyEvent(device, event, pAllocator); } static VkResult entry_vkGetEventStatus( VkDevice device, VkEvent event) { AEMU_SCOPED_TRACE("vkGetEventStatus"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetEventStatus_VkResult_return = (VkResult)0; vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event); return vkGetEventStatus_VkResult_return; } static VkResult entry_vkSetEvent( VkDevice device, VkEvent event) { AEMU_SCOPED_TRACE("vkSetEvent"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkSetEvent_VkResult_return = (VkResult)0; vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event); return vkSetEvent_VkResult_return; } static VkResult entry_vkResetEvent( VkDevice device, VkEvent event) { AEMU_SCOPED_TRACE("vkResetEvent"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkResetEvent_VkResult_return = (VkResult)0; vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event); return vkResetEvent_VkResult_return; } static VkResult entry_vkCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) { AEMU_SCOPED_TRACE("vkCreateQueryPool"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateQueryPool_VkResult_return = (VkResult)0; vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool); return vkCreateQueryPool_VkResult_return; } static void entry_vkDestroyQueryPool( VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyQueryPool"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator); } static VkResult entry_vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) { AEMU_SCOPED_TRACE("vkGetQueryPoolResults"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0; vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags); return vkGetQueryPoolResults_VkResult_return; } static VkResult entry_vkCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) { AEMU_SCOPED_TRACE("vkCreateBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateBuffer_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pBuffer); return vkCreateBuffer_VkResult_return; } static void entry_vkDestroyBuffer( VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkDestroyBuffer(vkEnc, device, buffer, pAllocator); } static VkResult entry_vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) { AEMU_SCOPED_TRACE("vkCreateBufferView"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateBufferView_VkResult_return = (VkResult)0; vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView); return vkCreateBufferView_VkResult_return; } static void entry_vkDestroyBufferView( VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyBufferView"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyBufferView(device, bufferView, pAllocator); } static VkResult entry_vkCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) { AEMU_SCOPED_TRACE("vkCreateImage"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateImage_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateImage_VkResult_return = resources->on_vkCreateImage(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pImage); return vkCreateImage_VkResult_return; } static void entry_vkDestroyImage( VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyImage"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkDestroyImage(vkEnc, device, image, pAllocator); } static void entry_vkGetImageSubresourceLayout( VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) { AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout); } static VkResult entry_vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) { AEMU_SCOPED_TRACE("vkCreateImageView"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateImageView_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pView); return vkCreateImageView_VkResult_return; } static void entry_vkDestroyImageView( VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyImageView"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyImageView(device, imageView, pAllocator); } static VkResult entry_vkCreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) { AEMU_SCOPED_TRACE("vkCreateShaderModule"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateShaderModule_VkResult_return = (VkResult)0; vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule); return vkCreateShaderModule_VkResult_return; } static void entry_vkDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyShaderModule"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator); } static VkResult entry_vkCreatePipelineCache( VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) { AEMU_SCOPED_TRACE("vkCreatePipelineCache"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0; vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache); return vkCreatePipelineCache_VkResult_return; } static void entry_vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyPipelineCache"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator); } static VkResult entry_vkGetPipelineCacheData( VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) { AEMU_SCOPED_TRACE("vkGetPipelineCacheData"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0; vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData); return vkGetPipelineCacheData_VkResult_return; } static VkResult entry_vkMergePipelineCaches( VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) { AEMU_SCOPED_TRACE("vkMergePipelineCaches"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0; vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches); return vkMergePipelineCaches_VkResult_return; } static VkResult entry_vkCreateGraphicsPipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0; vkCreateGraphicsPipelines_VkResult_return = vkEnc->vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); return vkCreateGraphicsPipelines_VkResult_return; } static VkResult entry_vkCreateComputePipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { AEMU_SCOPED_TRACE("vkCreateComputePipelines"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0; vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); return vkCreateComputePipelines_VkResult_return; } static void entry_vkDestroyPipeline( VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyPipeline"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyPipeline(device, pipeline, pAllocator); } static VkResult entry_vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) { AEMU_SCOPED_TRACE("vkCreatePipelineLayout"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0; vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout); return vkCreatePipelineLayout_VkResult_return; } static void entry_vkDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyPipelineLayout"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator); } static VkResult entry_vkCreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) { AEMU_SCOPED_TRACE("vkCreateSampler"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSampler_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateSampler_VkResult_return = resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSampler); return vkCreateSampler_VkResult_return; } static void entry_vkDestroySampler( VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroySampler"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroySampler(device, sampler, pAllocator); } static VkResult entry_vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) { AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pSetLayout); return vkCreateDescriptorSetLayout_VkResult_return; } static void entry_vkDestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator); } static VkResult entry_vkCreateDescriptorPool( VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) { AEMU_SCOPED_TRACE("vkCreateDescriptorPool"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pDescriptorPool); return vkCreateDescriptorPool_VkResult_return; } static void entry_vkDestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDescriptorPool"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkDestroyDescriptorPool(vkEnc, device, descriptorPool, pAllocator); } static VkResult entry_vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) { AEMU_SCOPED_TRACE("vkResetDescriptorPool"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(vkEnc, VK_SUCCESS, device, descriptorPool, flags); return vkResetDescriptorPool_VkResult_return; } static VkResult entry_vkAllocateDescriptorSets( VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) { AEMU_SCOPED_TRACE("vkAllocateDescriptorSets"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(vkEnc, VK_SUCCESS, device, pAllocateInfo, pDescriptorSets); return vkAllocateDescriptorSets_VkResult_return; } static VkResult entry_vkFreeDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets) { AEMU_SCOPED_TRACE("vkFreeDescriptorSets"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkFreeDescriptorSets_VkResult_return = resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, device, descriptorPool, descriptorSetCount, pDescriptorSets); return vkFreeDescriptorSets_VkResult_return; } static void entry_vkUpdateDescriptorSets( VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) { AEMU_SCOPED_TRACE("vkUpdateDescriptorSets"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkUpdateDescriptorSets(vkEnc, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies); } static VkResult entry_vkCreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) { AEMU_SCOPED_TRACE("vkCreateFramebuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0; vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer); return vkCreateFramebuffer_VkResult_return; } static void entry_vkDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyFramebuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator); } static VkResult entry_vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { AEMU_SCOPED_TRACE("vkCreateRenderPass"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateRenderPass_VkResult_return = (VkResult)0; vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass); return vkCreateRenderPass_VkResult_return; } static void entry_vkDestroyRenderPass( VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyRenderPass"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator); } static void entry_vkGetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) { AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity); } static VkResult entry_vkCreateCommandPool( VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) { AEMU_SCOPED_TRACE("vkCreateCommandPool"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateCommandPool_VkResult_return = (VkResult)0; vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool); return vkCreateCommandPool_VkResult_return; } static void entry_vkDestroyCommandPool( VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyCommandPool"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator); } static VkResult entry_vkResetCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) { AEMU_SCOPED_TRACE("vkResetCommandPool"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkResetCommandPool_VkResult_return = (VkResult)0; vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags); return vkResetCommandPool_VkResult_return; } static VkResult entry_vkAllocateCommandBuffers( VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) { AEMU_SCOPED_TRACE("vkAllocateCommandBuffers"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0; vkAllocateCommandBuffers_VkResult_return = vkEnc->vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers); return vkAllocateCommandBuffers_VkResult_return; } static void entry_vkFreeCommandBuffers( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) { AEMU_SCOPED_TRACE("vkFreeCommandBuffers"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers); } static VkResult entry_vkBeginCommandBuffer( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) { AEMU_SCOPED_TRACE("vkBeginCommandBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, pBeginInfo); return vkBeginCommandBuffer_VkResult_return; } static VkResult entry_vkEndCommandBuffer( VkCommandBuffer commandBuffer) { AEMU_SCOPED_TRACE("vkEndCommandBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer); return vkEndCommandBuffer_VkResult_return; } static VkResult entry_vkResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) { AEMU_SCOPED_TRACE("vkResetCommandBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(vkEnc, VK_SUCCESS, commandBuffer, flags); return vkResetCommandBuffer_VkResult_return; } static void entry_vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { AEMU_SCOPED_TRACE("vkCmdBindPipeline"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline); } static void entry_vkCmdSetViewport( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports) { AEMU_SCOPED_TRACE("vkCmdSetViewport"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports); } static void entry_vkCmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors) { AEMU_SCOPED_TRACE("vkCmdSetScissor"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors); } static void entry_vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth) { AEMU_SCOPED_TRACE("vkCmdSetLineWidth"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth); } static void entry_vkCmdSetDepthBias( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) { AEMU_SCOPED_TRACE("vkCmdSetDepthBias"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor); } static void entry_vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4]) { AEMU_SCOPED_TRACE("vkCmdSetBlendConstants"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants); } static void entry_vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) { AEMU_SCOPED_TRACE("vkCmdSetDepthBounds"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds); } static void entry_vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask) { AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask); } static void entry_vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask) { AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask); } static void entry_vkCmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference) { AEMU_SCOPED_TRACE("vkCmdSetStencilReference"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference); } static void entry_vkCmdBindDescriptorSets( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) { AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets); } static void entry_vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) { AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType); } static void entry_vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets); } static void entry_vkCmdDraw( VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) { AEMU_SCOPED_TRACE("vkCmdDraw"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance); } static void entry_vkCmdDrawIndexed( VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) { AEMU_SCOPED_TRACE("vkCmdDrawIndexed"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance); } static void entry_vkCmdDrawIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) { AEMU_SCOPED_TRACE("vkCmdDrawIndirect"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride); } static void entry_vkCmdDrawIndexedIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) { AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride); } static void entry_vkCmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { AEMU_SCOPED_TRACE("vkCmdDispatch"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ); } static void entry_vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) { AEMU_SCOPED_TRACE("vkCmdDispatchIndirect"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset); } static void entry_vkCmdCopyBuffer( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) { AEMU_SCOPED_TRACE("vkCmdCopyBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions); } static void entry_vkCmdCopyImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) { AEMU_SCOPED_TRACE("vkCmdCopyImage"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions); } static void entry_vkCmdBlitImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) { AEMU_SCOPED_TRACE("vkCmdBlitImage"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter); } static void entry_vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) { AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions); } static void entry_vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) { AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions); } static void entry_vkCmdUpdateBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) { AEMU_SCOPED_TRACE("vkCmdUpdateBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData); } static void entry_vkCmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) { AEMU_SCOPED_TRACE("vkCmdFillBuffer"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data); } static void entry_vkCmdClearColorImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { AEMU_SCOPED_TRACE("vkCmdClearColorImage"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges); } static void entry_vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges); } static void entry_vkCmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) { AEMU_SCOPED_TRACE("vkCmdClearAttachments"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects); } static void entry_vkCmdResolveImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) { AEMU_SCOPED_TRACE("vkCmdResolveImage"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions); } static void entry_vkCmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) { AEMU_SCOPED_TRACE("vkCmdSetEvent"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask); } static void entry_vkCmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) { AEMU_SCOPED_TRACE("vkCmdResetEvent"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask); } static void entry_vkCmdWaitEvents( VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { AEMU_SCOPED_TRACE("vkCmdWaitEvents"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); } static void entry_vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { AEMU_SCOPED_TRACE("vkCmdPipelineBarrier"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); } static void entry_vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) { AEMU_SCOPED_TRACE("vkCmdBeginQuery"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags); } static void entry_vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query) { AEMU_SCOPED_TRACE("vkCmdEndQuery"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query); } static void entry_vkCmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { AEMU_SCOPED_TRACE("vkCmdResetQueryPool"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount); } static void entry_vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query) { AEMU_SCOPED_TRACE("vkCmdWriteTimestamp"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query); } static void entry_vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) { AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags); } static void entry_vkCmdPushConstants( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues) { AEMU_SCOPED_TRACE("vkCmdPushConstants"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues); } static void entry_vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) { AEMU_SCOPED_TRACE("vkCmdBeginRenderPass"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents); } static void entry_vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents) { AEMU_SCOPED_TRACE("vkCmdNextSubpass"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdNextSubpass(commandBuffer, contents); } static void entry_vkCmdEndRenderPass( VkCommandBuffer commandBuffer) { AEMU_SCOPED_TRACE("vkCmdEndRenderPass"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdEndRenderPass(commandBuffer); } static void entry_vkCmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) { AEMU_SCOPED_TRACE("vkCmdExecuteCommands"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers); } #endif #ifdef VK_VERSION_1_1 static VkResult entry_vkEnumerateInstanceVersion( uint32_t* pApiVersion) { AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0; vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion); return vkEnumerateInstanceVersion_VkResult_return; } static VkResult entry_vkBindBufferMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { AEMU_SCOPED_TRACE("vkBindBufferMemory2"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindBufferMemory2_VkResult_return; } static VkResult dynCheck_entry_vkBindBufferMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkBindBufferMemory2"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0; vkBindBufferMemory2_VkResult_return = resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindBufferMemory2_VkResult_return; } static VkResult entry_vkBindImageMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { AEMU_SCOPED_TRACE("vkBindImageMemory2"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindImageMemory2_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindImageMemory2_VkResult_return; } static VkResult dynCheck_entry_vkBindImageMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkBindImageMemory2"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindImageMemory2_VkResult_return = (VkResult)0; vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindImageMemory2_VkResult_return; } static void entry_vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures); } static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeatures", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures); } static void entry_vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask) { AEMU_SCOPED_TRACE("vkCmdSetDeviceMask"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask); } static void entry_vkCmdDispatchBase( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { AEMU_SCOPED_TRACE("vkCmdDispatchBase"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ); } static VkResult entry_vkEnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0; vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); return vkEnumeratePhysicalDeviceGroups_VkResult_return; } static void entry_vkGetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements); } static void dynCheck_entry_vkGetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements); } static void entry_vkGetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements); } static void dynCheck_entry_vkGetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkGetBufferMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements); } static void entry_vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); } static void dynCheck_entry_vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); } static void entry_vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures); } static void entry_vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties); } static void entry_vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties); } static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties); return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return; } static void entry_vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties); } static void entry_vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties); } static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties); } static void entry_vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { AEMU_SCOPED_TRACE("vkTrimCommandPool"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkTrimCommandPool(device, commandPool, flags); } static void dynCheck_entry_vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkTrimCommandPool", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkTrimCommandPool"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkTrimCommandPool(device, commandPool, flags); } static void entry_vkGetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) { AEMU_SCOPED_TRACE("vkGetDeviceQueue2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue); } static void dynCheck_entry_vkGetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkGetDeviceQueue2", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkGetDeviceQueue2"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue); } static VkResult entry_vkCreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion); return vkCreateSamplerYcbcrConversion_VkResult_return; } static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversion", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0; vkCreateSamplerYcbcrConversion_VkResult_return = resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion); return vkCreateSamplerYcbcrConversion_VkResult_return; } static void entry_vkDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator); } static void dynCheck_entry_vkDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversion", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkDestroySamplerYcbcrConversion(vkEnc, device, ycbcrConversion, pAllocator); } static VkResult entry_vkCreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0; vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); return vkCreateDescriptorUpdateTemplate_VkResult_return; } static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplate", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0; vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); return vkCreateDescriptorUpdateTemplate_VkResult_return; } static void entry_vkDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator); } static void dynCheck_entry_vkDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplate", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator); } static void entry_vkUpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData); } static void dynCheck_entry_vkUpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplate", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, device, descriptorSet, descriptorUpdateTemplate, pData); } static void entry_vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties); } static void entry_vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetPhysicalDeviceExternalFenceProperties(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties); } static void entry_vkGetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties); } static void entry_vkGetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport); } static void dynCheck_entry_vkGetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { auto resources = ResourceTracker::get(); if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1) { sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupport", "VK_VERSION_1_1"); } AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport); } #endif #ifdef VK_KHR_surface static void entry_vkDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroySurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator); } static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported); return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return; } static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities); return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return; } static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats); return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return; } static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes); return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return; } #endif #ifdef VK_KHR_swapchain static VkResult entry_vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) { AEMU_SCOPED_TRACE("vkCreateSwapchainKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0; vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain); return vkCreateSwapchainKHR_VkResult_return; } static VkResult dynCheck_entry_vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkCreateSwapchainKHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkCreateSwapchainKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0; vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain); return vkCreateSwapchainKHR_VkResult_return; } static void entry_vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroySwapchainKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator); } static void dynCheck_entry_vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkDestroySwapchainKHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkDestroySwapchainKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator); } static VkResult entry_vkGetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) { AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0; vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages); return vkGetSwapchainImagesKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkGetSwapchainImagesKHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0; vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages); return vkGetSwapchainImagesKHR_VkResult_return; } static VkResult entry_vkAcquireNextImageKHR( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) { AEMU_SCOPED_TRACE("vkAcquireNextImageKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0; vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex); return vkAcquireNextImageKHR_VkResult_return; } static VkResult dynCheck_entry_vkAcquireNextImageKHR( VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkAcquireNextImageKHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkAcquireNextImageKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0; vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex); return vkAcquireNextImageKHR_VkResult_return; } static VkResult entry_vkQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo) { AEMU_SCOPED_TRACE("vkQueuePresentKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0; vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo); return vkQueuePresentKHR_VkResult_return; } static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0; vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities); return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPresentCapabilitiesKHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0; vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities); return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return; } static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) { AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0; vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes); return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModesKHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0; vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes); return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return; } static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects) { AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0; vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects); return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return; } static VkResult entry_vkAcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex) { AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0; vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex); return vkAcquireNextImage2KHR_VkResult_return; } static VkResult dynCheck_entry_vkAcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkAcquireNextImage2KHR", "VK_KHR_swapchain"); } AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0; vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex); return vkAcquireNextImage2KHR_VkResult_return; } #endif #ifdef VK_KHR_display static VkResult entry_vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties); return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return; } static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties); return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return; } static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays) { AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0; vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays); return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return; } static VkResult entry_vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) { AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0; vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties); return vkGetDisplayModePropertiesKHR_VkResult_return; } static VkResult entry_vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) { AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0; vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode); return vkCreateDisplayModeKHR_VkResult_return; } static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) { AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0; vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities); return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return; } static VkResult entry_vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0; vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateDisplayPlaneSurfaceKHR_VkResult_return; } #endif #ifdef VK_KHR_display_swapchain static VkResult entry_vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) { AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0; vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains); return vkCreateSharedSwapchainsKHR_VkResult_return; } static VkResult dynCheck_entry_vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_display_swapchain")) { sOnInvalidDynamicallyCheckedCall("vkCreateSharedSwapchainsKHR", "VK_KHR_display_swapchain"); } AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0; vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains); return vkCreateSharedSwapchainsKHR_VkResult_return; } #endif #ifdef VK_KHR_xlib_surface static VkResult entry_vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0; vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateXlibSurfaceKHR_VkResult_return; } static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0; vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID); return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return; } #endif #ifdef VK_KHR_xcb_surface static VkResult entry_vkCreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0; vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateXcbSurfaceKHR_VkResult_return; } static VkBool32 entry_vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0; vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id); return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return; } #endif #ifdef VK_KHR_wayland_surface static VkResult entry_vkCreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0; vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateWaylandSurfaceKHR_VkResult_return; } static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, wl_display* display) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0; vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display); return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return; } #endif #ifdef VK_KHR_mir_surface static VkResult entry_vkCreateMirSurfaceKHR( VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0; vkCreateMirSurfaceKHR_VkResult_return = vkEnc->vkCreateMirSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateMirSurfaceKHR_VkResult_return; } static VkBool32 entry_vkGetPhysicalDeviceMirPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0; vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceMirPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection); return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return; } #endif #ifdef VK_KHR_android_surface static VkResult entry_vkCreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0; vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateAndroidSurfaceKHR_VkResult_return; } #endif #ifdef VK_KHR_win32_surface static VkResult entry_vkCreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0; vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); return vkCreateWin32SurfaceKHR_VkResult_return; } static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0; vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex); return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return; } #endif #ifdef VK_KHR_sampler_mirror_clamp_to_edge #endif #ifdef VK_KHR_multiview #endif #ifdef VK_KHR_get_physical_device_properties2 static void entry_vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures); } static void entry_vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties); } static void entry_vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties); } static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(vkEnc, VK_SUCCESS, physicalDevice, pImageFormatInfo, pImageFormatProperties); return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return; } static void entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties); } static void entry_vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties); } static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties); } #endif #ifdef VK_KHR_device_group static void entry_vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures); } static void dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_device_group")) { sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupPeerMemoryFeaturesKHR", "VK_KHR_device_group"); } AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures); } static void entry_vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask) { AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask); } static void entry_vkCmdDispatchBaseKHR( VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ); } #endif #ifdef VK_KHR_shader_draw_parameters #endif #ifdef VK_KHR_maintenance1 static void entry_vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags); } static void dynCheck_entry_vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance1")) { sOnInvalidDynamicallyCheckedCall("vkTrimCommandPoolKHR", "VK_KHR_maintenance1"); } AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags); } #endif #ifdef VK_KHR_device_group_creation static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0; vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return; } #endif #ifdef VK_KHR_external_memory_capabilities static void entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties); } #endif #ifdef VK_KHR_external_memory #endif #ifdef VK_KHR_external_memory_win32 static VkResult entry_vkGetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0; vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); return vkGetMemoryWin32HandleKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleKHR", "VK_KHR_external_memory_win32"); } AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0; vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); return vkGetMemoryWin32HandleKHR_VkResult_return; } static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0; vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties); return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandlePropertiesKHR", "VK_KHR_external_memory_win32"); } AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0; vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties); return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return; } #endif #ifdef VK_KHR_external_memory_fd static VkResult entry_vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) { AEMU_SCOPED_TRACE("vkGetMemoryFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0; vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd); return vkGetMemoryFdKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdKHR", "VK_KHR_external_memory_fd"); } AEMU_SCOPED_TRACE("vkGetMemoryFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0; vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd); return vkGetMemoryFdKHR_VkResult_return; } static VkResult entry_vkGetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) { AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0; vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties); return vkGetMemoryFdPropertiesKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryFdPropertiesKHR", "VK_KHR_external_memory_fd"); } AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0; vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties); return vkGetMemoryFdPropertiesKHR_VkResult_return; } #endif #ifdef VK_KHR_win32_keyed_mutex #endif #ifdef VK_KHR_external_semaphore_capabilities static void entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties); } #endif #ifdef VK_KHR_external_semaphore #endif #ifdef VK_KHR_external_semaphore_win32 static VkResult entry_vkImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo); return vkImportSemaphoreWin32HandleKHR_VkResult_return; } static VkResult dynCheck_entry_vkImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32")) { sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32"); } AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo); return vkImportSemaphoreWin32HandleKHR_VkResult_return; } static VkResult entry_vkGetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); return vkGetSemaphoreWin32HandleKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32")) { sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreWin32HandleKHR", "VK_KHR_external_semaphore_win32"); } AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); return vkGetSemaphoreWin32HandleKHR_VkResult_return; } #endif #ifdef VK_KHR_external_semaphore_fd static VkResult entry_vkImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo); return vkImportSemaphoreFdKHR_VkResult_return; } static VkResult dynCheck_entry_vkImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd")) { sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreFdKHR", "VK_KHR_external_semaphore_fd"); } AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0; vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pImportSemaphoreFdInfo); return vkImportSemaphoreFdKHR_VkResult_return; } static VkResult entry_vkGetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) { AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd); return vkGetSemaphoreFdKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd")) { sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreFdKHR", "VK_KHR_external_semaphore_fd"); } AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0; vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd); return vkGetSemaphoreFdKHR_VkResult_return; } #endif #ifdef VK_KHR_push_descriptor static void entry_vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) { AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites); } static void entry_vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData) { AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData); } #endif #ifdef VK_KHR_16bit_storage #endif #ifdef VK_KHR_incremental_present #endif #ifdef VK_KHR_descriptor_update_template static VkResult entry_vkCreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0; vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); return vkCreateDescriptorUpdateTemplateKHR_VkResult_return; } static VkResult dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template")) { sOnInvalidDynamicallyCheckedCall("vkCreateDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template"); } AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0; vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); return vkCreateDescriptorUpdateTemplateKHR_VkResult_return; } static void entry_vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator); } static void dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template")) { sOnInvalidDynamicallyCheckedCall("vkDestroyDescriptorUpdateTemplateKHR", "VK_KHR_descriptor_update_template"); } AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator); } static void entry_vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData); } static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template")) { sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateKHR", "VK_KHR_descriptor_update_template"); } AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData); } #endif #ifdef VK_KHR_create_renderpass2 static VkResult entry_vkCreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0; vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass); return vkCreateRenderPass2KHR_VkResult_return; } static VkResult dynCheck_entry_vkCreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2")) { sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2KHR", "VK_KHR_create_renderpass2"); } AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0; vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass); return vkCreateRenderPass2KHR_VkResult_return; } static void entry_vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo) { AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo); } static void entry_vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo) { AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo); } static void entry_vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo) { AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo); } #endif #ifdef VK_KHR_shared_presentable_image static VkResult entry_vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain) { AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0; vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain); return vkGetSwapchainStatusKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image")) { sOnInvalidDynamicallyCheckedCall("vkGetSwapchainStatusKHR", "VK_KHR_shared_presentable_image"); } AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0; vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain); return vkGetSwapchainStatusKHR_VkResult_return; } #endif #ifdef VK_KHR_external_fence_capabilities static void entry_vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkEnc, physicalDevice, pExternalFenceInfo, pExternalFenceProperties); } #endif #ifdef VK_KHR_external_fence #endif #ifdef VK_KHR_external_fence_win32 static VkResult entry_vkImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0; vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo); return vkImportFenceWin32HandleKHR_VkResult_return; } static VkResult dynCheck_entry_vkImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32")) { sOnInvalidDynamicallyCheckedCall("vkImportFenceWin32HandleKHR", "VK_KHR_external_fence_win32"); } AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0; vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo); return vkImportFenceWin32HandleKHR_VkResult_return; } static VkResult entry_vkGetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0; vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); return vkGetFenceWin32HandleKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32")) { sOnInvalidDynamicallyCheckedCall("vkGetFenceWin32HandleKHR", "VK_KHR_external_fence_win32"); } AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0; vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); return vkGetFenceWin32HandleKHR_VkResult_return; } #endif #ifdef VK_KHR_external_fence_fd static VkResult entry_vkImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { AEMU_SCOPED_TRACE("vkImportFenceFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo); return vkImportFenceFdKHR_VkResult_return; } static VkResult dynCheck_entry_vkImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd")) { sOnInvalidDynamicallyCheckedCall("vkImportFenceFdKHR", "VK_KHR_external_fence_fd"); } AEMU_SCOPED_TRACE("vkImportFenceFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0; vkImportFenceFdKHR_VkResult_return = resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, device, pImportFenceFdInfo); return vkImportFenceFdKHR_VkResult_return; } static VkResult entry_vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) { AEMU_SCOPED_TRACE("vkGetFenceFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd); return vkGetFenceFdKHR_VkResult_return; } static VkResult dynCheck_entry_vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd")) { sOnInvalidDynamicallyCheckedCall("vkGetFenceFdKHR", "VK_KHR_external_fence_fd"); } AEMU_SCOPED_TRACE("vkGetFenceFdKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0; vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(vkEnc, VK_SUCCESS, device, pGetFdInfo, pFd); return vkGetFenceFdKHR_VkResult_return; } #endif #ifdef VK_KHR_maintenance2 #endif #ifdef VK_KHR_get_surface_capabilities2 static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities); return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return; } static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats); return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return; } #endif #ifdef VK_KHR_variable_pointers #endif #ifdef VK_KHR_get_display_properties2 static VkResult entry_vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties); return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return; } static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0; vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties); return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return; } static VkResult entry_vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) { AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0; vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties); return vkGetDisplayModeProperties2KHR_VkResult_return; } static VkResult entry_vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) { AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0; vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities); return vkGetDisplayPlaneCapabilities2KHR_VkResult_return; } #endif #ifdef VK_KHR_dedicated_allocation #endif #ifdef VK_KHR_storage_buffer_storage_class #endif #ifdef VK_KHR_relaxed_block_layout #endif #ifdef VK_KHR_get_memory_requirements2 static void entry_vkGetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements); } static void dynCheck_entry_vkGetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2")) { sOnInvalidDynamicallyCheckedCall("vkGetImageMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2"); } AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements); } static void entry_vkGetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements); } static void dynCheck_entry_vkGetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2")) { sOnInvalidDynamicallyCheckedCall("vkGetBufferMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2"); } AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements); } static void entry_vkGetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); } static void dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2")) { sOnInvalidDynamicallyCheckedCall("vkGetImageSparseMemoryRequirements2KHR", "VK_KHR_get_memory_requirements2"); } AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); } #endif #ifdef VK_KHR_image_format_list #endif #ifdef VK_KHR_sampler_ycbcr_conversion static VkResult entry_vkCreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion); return vkCreateSamplerYcbcrConversionKHR_VkResult_return; } static VkResult dynCheck_entry_vkCreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion")) { sOnInvalidDynamicallyCheckedCall("vkCreateSamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion"); } AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0; vkCreateSamplerYcbcrConversionKHR_VkResult_return = resources->on_vkCreateSamplerYcbcrConversionKHR(vkEnc, VK_SUCCESS, device, pCreateInfo, pAllocator, pYcbcrConversion); return vkCreateSamplerYcbcrConversionKHR_VkResult_return; } static void entry_vkDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); auto resources = ResourceTracker::get(); resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator); } static void dynCheck_entry_vkDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion")) { sOnInvalidDynamicallyCheckedCall("vkDestroySamplerYcbcrConversionKHR", "VK_KHR_sampler_ycbcr_conversion"); } AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, device, ycbcrConversion, pAllocator); } #endif #ifdef VK_KHR_bind_memory2 static VkResult entry_vkBindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindBufferMemory2KHR_VkResult_return; } static VkResult dynCheck_entry_vkBindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2")) { sOnInvalidDynamicallyCheckedCall("vkBindBufferMemory2KHR", "VK_KHR_bind_memory2"); } AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0; vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindBufferMemory2KHR_VkResult_return; } static VkResult entry_vkBindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { AEMU_SCOPED_TRACE("vkBindImageMemory2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindImageMemory2KHR_VkResult_return; } static VkResult dynCheck_entry_vkBindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_bind_memory2")) { sOnInvalidDynamicallyCheckedCall("vkBindImageMemory2KHR", "VK_KHR_bind_memory2"); } AEMU_SCOPED_TRACE("vkBindImageMemory2KHR"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0; vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(vkEnc, VK_SUCCESS, device, bindInfoCount, pBindInfos); return vkBindImageMemory2KHR_VkResult_return; } #endif #ifdef VK_KHR_maintenance3 static void entry_vkGetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport); } static void dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance3")) { sOnInvalidDynamicallyCheckedCall("vkGetDescriptorSetLayoutSupportKHR", "VK_KHR_maintenance3"); } AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport); } #endif #ifdef VK_KHR_draw_indirect_count static void entry_vkCmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); } static void entry_vkCmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); } #endif #ifdef VK_KHR_8bit_storage #endif #ifdef VK_KHR_shader_float16_int8 #endif #ifdef VK_ANDROID_native_buffer static VkResult entry_vkGetSwapchainGrallocUsageANDROID( VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage) { AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0; vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage); return vkGetSwapchainGrallocUsageANDROID_VkResult_return; } static VkResult dynCheck_entry_vkGetSwapchainGrallocUsageANDROID( VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, int* grallocUsage) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer")) { sOnInvalidDynamicallyCheckedCall("vkGetSwapchainGrallocUsageANDROID", "VK_ANDROID_native_buffer"); } AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0; vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage); return vkGetSwapchainGrallocUsageANDROID_VkResult_return; } static VkResult entry_vkAcquireImageANDROID( VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore, VkFence fence) { AEMU_SCOPED_TRACE("vkAcquireImageANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0; vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence); return vkAcquireImageANDROID_VkResult_return; } static VkResult dynCheck_entry_vkAcquireImageANDROID( VkDevice device, VkImage image, int nativeFenceFd, VkSemaphore semaphore, VkFence fence) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer")) { sOnInvalidDynamicallyCheckedCall("vkAcquireImageANDROID", "VK_ANDROID_native_buffer"); } AEMU_SCOPED_TRACE("vkAcquireImageANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0; vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence); return vkAcquireImageANDROID_VkResult_return; } static VkResult entry_vkQueueSignalReleaseImageANDROID( VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int* pNativeFenceFd) { AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0; vkQueueSignalReleaseImageANDROID_VkResult_return = vkEnc->vkQueueSignalReleaseImageANDROID(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd); return vkQueueSignalReleaseImageANDROID_VkResult_return; } #endif #ifdef VK_EXT_debug_report static VkResult entry_vkCreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) { AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0; vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback); return vkCreateDebugReportCallbackEXT_VkResult_return; } static void entry_vkDestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator); } static void entry_vkDebugReportMessageEXT( VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage) { AEMU_SCOPED_TRACE("vkDebugReportMessageEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage); } #endif #ifdef VK_NV_glsl_shader #endif #ifdef VK_EXT_depth_range_unrestricted #endif #ifdef VK_IMG_filter_cubic #endif #ifdef VK_AMD_rasterization_order #endif #ifdef VK_AMD_shader_trinary_minmax #endif #ifdef VK_AMD_shader_explicit_vertex_parameter #endif #ifdef VK_EXT_debug_marker static VkResult entry_vkDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) { AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0; vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo); return vkDebugMarkerSetObjectTagEXT_VkResult_return; } static VkResult dynCheck_entry_vkDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) { sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectTagEXT", "VK_EXT_debug_marker"); } AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0; vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo); return vkDebugMarkerSetObjectTagEXT_VkResult_return; } static VkResult entry_vkDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) { AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0; vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo); return vkDebugMarkerSetObjectNameEXT_VkResult_return; } static VkResult dynCheck_entry_vkDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker")) { sOnInvalidDynamicallyCheckedCall("vkDebugMarkerSetObjectNameEXT", "VK_EXT_debug_marker"); } AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0; vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo); return vkDebugMarkerSetObjectNameEXT_VkResult_return; } static void entry_vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo); } static void entry_vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer) { AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer); } static void entry_vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo); } #endif #ifdef VK_AMD_gcn_shader #endif #ifdef VK_NV_dedicated_allocation #endif #ifdef VK_AMD_draw_indirect_count static void entry_vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); } static void entry_vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride); } #endif #ifdef VK_AMD_negative_viewport_height #endif #ifdef VK_AMD_gpu_shader_half_float #endif #ifdef VK_AMD_shader_ballot #endif #ifdef VK_AMD_texture_gather_bias_lod #endif #ifdef VK_AMD_shader_info static VkResult entry_vkGetShaderInfoAMD( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo) { AEMU_SCOPED_TRACE("vkGetShaderInfoAMD"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0; vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo); return vkGetShaderInfoAMD_VkResult_return; } static VkResult dynCheck_entry_vkGetShaderInfoAMD( VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_AMD_shader_info")) { sOnInvalidDynamicallyCheckedCall("vkGetShaderInfoAMD", "VK_AMD_shader_info"); } AEMU_SCOPED_TRACE("vkGetShaderInfoAMD"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0; vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo); return vkGetShaderInfoAMD_VkResult_return; } #endif #ifdef VK_AMD_shader_image_load_store_lod #endif #ifdef VK_IMG_format_pvrtc #endif #ifdef VK_NV_external_memory_capabilities static VkResult entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0; vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties); return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return; } #endif #ifdef VK_NV_external_memory #endif #ifdef VK_NV_external_memory_win32 static VkResult entry_vkGetMemoryWin32HandleNV( VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle) { AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0; vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle); return vkGetMemoryWin32HandleNV_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryWin32HandleNV( VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_win32")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryWin32HandleNV", "VK_NV_external_memory_win32"); } AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0; vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle); return vkGetMemoryWin32HandleNV_VkResult_return; } #endif #ifdef VK_NV_win32_keyed_mutex #endif #ifdef VK_EXT_validation_flags #endif #ifdef VK_NN_vi_surface static VkResult entry_vkCreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateViSurfaceNN"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0; vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface); return vkCreateViSurfaceNN_VkResult_return; } #endif #ifdef VK_EXT_shader_subgroup_ballot #endif #ifdef VK_EXT_shader_subgroup_vote #endif #ifdef VK_EXT_conditional_rendering static void entry_vkCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin); } static void entry_vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer) { AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer); } #endif #ifdef VK_NVX_device_generated_commands static void entry_vkCmdProcessCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) { AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo); } static void entry_vkCmdReserveSpaceForCommandsNVX( VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) { AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo); } static VkResult entry_vkCreateIndirectCommandsLayoutNVX( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) { AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0; vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout); return vkCreateIndirectCommandsLayoutNVX_VkResult_return; } static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNVX( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands")) { sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands"); } AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0; vkCreateIndirectCommandsLayoutNVX_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout); return vkCreateIndirectCommandsLayoutNVX_VkResult_return; } static void entry_vkDestroyIndirectCommandsLayoutNVX( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator); } static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX( VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands")) { sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNVX", "VK_NVX_device_generated_commands"); } AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator); } static VkResult entry_vkCreateObjectTableNVX( VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) { AEMU_SCOPED_TRACE("vkCreateObjectTableNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0; vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable); return vkCreateObjectTableNVX_VkResult_return; } static VkResult dynCheck_entry_vkCreateObjectTableNVX( VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands")) { sOnInvalidDynamicallyCheckedCall("vkCreateObjectTableNVX", "VK_NVX_device_generated_commands"); } AEMU_SCOPED_TRACE("vkCreateObjectTableNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0; vkCreateObjectTableNVX_VkResult_return = vkEnc->vkCreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable); return vkCreateObjectTableNVX_VkResult_return; } static void entry_vkDestroyObjectTableNVX( VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator); } static void dynCheck_entry_vkDestroyObjectTableNVX( VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands")) { sOnInvalidDynamicallyCheckedCall("vkDestroyObjectTableNVX", "VK_NVX_device_generated_commands"); } AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyObjectTableNVX(device, objectTable, pAllocator); } static VkResult entry_vkRegisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices) { AEMU_SCOPED_TRACE("vkRegisterObjectsNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0; vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices); return vkRegisterObjectsNVX_VkResult_return; } static VkResult dynCheck_entry_vkRegisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands")) { sOnInvalidDynamicallyCheckedCall("vkRegisterObjectsNVX", "VK_NVX_device_generated_commands"); } AEMU_SCOPED_TRACE("vkRegisterObjectsNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0; vkRegisterObjectsNVX_VkResult_return = vkEnc->vkRegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices); return vkRegisterObjectsNVX_VkResult_return; } static VkResult entry_vkUnregisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices) { AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0; vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices); return vkUnregisterObjectsNVX_VkResult_return; } static VkResult dynCheck_entry_vkUnregisterObjectsNVX( VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands")) { sOnInvalidDynamicallyCheckedCall("vkUnregisterObjectsNVX", "VK_NVX_device_generated_commands"); } AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0; vkUnregisterObjectsNVX_VkResult_return = vkEnc->vkUnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices); return vkUnregisterObjectsNVX_VkResult_return; } static void entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits); } #endif #ifdef VK_NV_clip_space_w_scaling static void entry_vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings) { AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings); } #endif #ifdef VK_EXT_direct_mode_display static VkResult entry_vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display) { AEMU_SCOPED_TRACE("vkReleaseDisplayEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0; vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display); return vkReleaseDisplayEXT_VkResult_return; } #endif #ifdef VK_EXT_acquire_xlib_display static VkResult entry_vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display) { AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0; vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display); return vkAcquireXlibDisplayEXT_VkResult_return; } static VkResult entry_vkGetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay) { AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0; vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay); return vkGetRandROutputDisplayEXT_VkResult_return; } #endif #ifdef VK_EXT_display_surface_counter static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0; vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities); return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return; } #endif #ifdef VK_EXT_display_control static VkResult entry_vkDisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0; vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo); return vkDisplayPowerControlEXT_VkResult_return; } static VkResult dynCheck_entry_vkDisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) { sOnInvalidDynamicallyCheckedCall("vkDisplayPowerControlEXT", "VK_EXT_display_control"); } AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0; vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo); return vkDisplayPowerControlEXT_VkResult_return; } static VkResult entry_vkRegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0; vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence); return vkRegisterDeviceEventEXT_VkResult_return; } static VkResult dynCheck_entry_vkRegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) { sOnInvalidDynamicallyCheckedCall("vkRegisterDeviceEventEXT", "VK_EXT_display_control"); } AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0; vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence); return vkRegisterDeviceEventEXT_VkResult_return; } static VkResult entry_vkRegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0; vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence); return vkRegisterDisplayEventEXT_VkResult_return; } static VkResult dynCheck_entry_vkRegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) { sOnInvalidDynamicallyCheckedCall("vkRegisterDisplayEventEXT", "VK_EXT_display_control"); } AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0; vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence); return vkRegisterDisplayEventEXT_VkResult_return; } static VkResult entry_vkGetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue) { AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0; vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue); return vkGetSwapchainCounterEXT_VkResult_return; } static VkResult dynCheck_entry_vkGetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_display_control")) { sOnInvalidDynamicallyCheckedCall("vkGetSwapchainCounterEXT", "VK_EXT_display_control"); } AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0; vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue); return vkGetSwapchainCounterEXT_VkResult_return; } #endif #ifdef VK_GOOGLE_display_timing static VkResult entry_vkGetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0; vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties); return vkGetRefreshCycleDurationGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkGetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing")) { sOnInvalidDynamicallyCheckedCall("vkGetRefreshCycleDurationGOOGLE", "VK_GOOGLE_display_timing"); } AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0; vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties); return vkGetRefreshCycleDurationGOOGLE_VkResult_return; } static VkResult entry_vkGetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) { AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0; vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings); return vkGetPastPresentationTimingGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkGetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing")) { sOnInvalidDynamicallyCheckedCall("vkGetPastPresentationTimingGOOGLE", "VK_GOOGLE_display_timing"); } AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0; vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings); return vkGetPastPresentationTimingGOOGLE_VkResult_return; } #endif #ifdef VK_NV_sample_mask_override_coverage #endif #ifdef VK_NV_geometry_shader_passthrough #endif #ifdef VK_NV_viewport_array2 #endif #ifdef VK_NVX_multiview_per_view_attributes #endif #ifdef VK_NV_viewport_swizzle #endif #ifdef VK_EXT_discard_rectangles static void entry_vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles) { AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles); } #endif #ifdef VK_EXT_conservative_rasterization #endif #ifdef VK_EXT_swapchain_colorspace #endif #ifdef VK_EXT_hdr_metadata static void entry_vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata); } static void dynCheck_entry_vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata")) { sOnInvalidDynamicallyCheckedCall("vkSetHdrMetadataEXT", "VK_EXT_hdr_metadata"); } AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata); } #endif #ifdef VK_MVK_ios_surface static VkResult entry_vkCreateIOSSurfaceMVK( VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0; vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); return vkCreateIOSSurfaceMVK_VkResult_return; } #endif #ifdef VK_MVK_macos_surface static VkResult entry_vkCreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0; vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); return vkCreateMacOSSurfaceMVK_VkResult_return; } #endif #ifdef VK_EXT_external_memory_dma_buf #endif #ifdef VK_EXT_queue_family_foreign #endif #ifdef VK_EXT_debug_utils static VkResult entry_vkSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) { AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0; vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo); return vkSetDebugUtilsObjectNameEXT_VkResult_return; } static VkResult dynCheck_entry_vkSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils")) { sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectNameEXT", "VK_EXT_debug_utils"); } AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0; vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo); return vkSetDebugUtilsObjectNameEXT_VkResult_return; } static VkResult entry_vkSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) { AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0; vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo); return vkSetDebugUtilsObjectTagEXT_VkResult_return; } static VkResult dynCheck_entry_vkSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils")) { sOnInvalidDynamicallyCheckedCall("vkSetDebugUtilsObjectTagEXT", "VK_EXT_debug_utils"); } AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0; vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo); return vkSetDebugUtilsObjectTagEXT_VkResult_return; } static void entry_vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo); } static void entry_vkQueueEndDebugUtilsLabelEXT( VkQueue queue) { AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueEndDebugUtilsLabelEXT(queue); } static void entry_vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo); } static void entry_vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo); } static void entry_vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer) { AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer); } static void entry_vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo); } static VkResult entry_vkCreateDebugUtilsMessengerEXT( VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) { AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0; vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger); return vkCreateDebugUtilsMessengerEXT_VkResult_return; } static void entry_vkDestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator); } static void entry_vkSubmitDebugUtilsMessageEXT( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData); } #endif #ifdef VK_ANDROID_external_memory_android_hardware_buffer static VkResult entry_vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) { AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties); return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return; } static VkResult dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer")) { sOnInvalidDynamicallyCheckedCall("vkGetAndroidHardwareBufferPropertiesANDROID", "VK_ANDROID_external_memory_android_hardware_buffer"); } AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0; vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(vkEnc, VK_SUCCESS, device, buffer, pProperties); return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return; } static VkResult entry_vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, AHardwareBuffer** pBuffer) { AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0; auto resources = ResourceTracker::get(); vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer); return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, AHardwareBuffer** pBuffer) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryAndroidHardwareBufferANDROID", "VK_ANDROID_external_memory_android_hardware_buffer"); } AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0; vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = resources->on_vkGetMemoryAndroidHardwareBufferANDROID(vkEnc, VK_SUCCESS, device, pInfo, pBuffer); return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return; } #endif #ifdef VK_EXT_sampler_filter_minmax #endif #ifdef VK_AMD_gpu_shader_int16 #endif #ifdef VK_AMD_mixed_attachment_samples #endif #ifdef VK_AMD_shader_fragment_mask #endif #ifdef VK_EXT_shader_stencil_export #endif #ifdef VK_EXT_sample_locations static void entry_vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo); } static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) { AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties); } #endif #ifdef VK_EXT_blend_operation_advanced #endif #ifdef VK_NV_fragment_coverage_to_color #endif #ifdef VK_NV_framebuffer_mixed_samples #endif #ifdef VK_NV_fill_rectangle #endif #ifdef VK_EXT_post_depth_coverage #endif #ifdef VK_EXT_validation_cache static VkResult entry_vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) { AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0; vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache); return vkCreateValidationCacheEXT_VkResult_return; } static VkResult dynCheck_entry_vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) { sOnInvalidDynamicallyCheckedCall("vkCreateValidationCacheEXT", "VK_EXT_validation_cache"); } AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0; vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache); return vkCreateValidationCacheEXT_VkResult_return; } static void entry_vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator); } static void dynCheck_entry_vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) { sOnInvalidDynamicallyCheckedCall("vkDestroyValidationCacheEXT", "VK_EXT_validation_cache"); } AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator); } static VkResult entry_vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches) { AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0; vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches); return vkMergeValidationCachesEXT_VkResult_return; } static VkResult dynCheck_entry_vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) { sOnInvalidDynamicallyCheckedCall("vkMergeValidationCachesEXT", "VK_EXT_validation_cache"); } AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0; vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches); return vkMergeValidationCachesEXT_VkResult_return; } static VkResult entry_vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData) { AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0; vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData); return vkGetValidationCacheDataEXT_VkResult_return; } static VkResult dynCheck_entry_vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_validation_cache")) { sOnInvalidDynamicallyCheckedCall("vkGetValidationCacheDataEXT", "VK_EXT_validation_cache"); } AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0; vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData); return vkGetValidationCacheDataEXT_VkResult_return; } #endif #ifdef VK_EXT_descriptor_indexing #endif #ifdef VK_EXT_shader_viewport_index_layer #endif #ifdef VK_EXT_global_priority #endif #ifdef VK_EXT_external_memory_host static VkResult entry_vkGetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0; vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties); return vkGetMemoryHostPointerPropertiesEXT_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_EXT_external_memory_host")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostPointerPropertiesEXT", "VK_EXT_external_memory_host"); } AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0; vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties); return vkGetMemoryHostPointerPropertiesEXT_VkResult_return; } #endif #ifdef VK_AMD_buffer_marker static void entry_vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker) { AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker); } #endif #ifdef VK_AMD_shader_core_properties #endif #ifdef VK_EXT_vertex_attribute_divisor #endif #ifdef VK_NV_shader_subgroup_partitioned #endif #ifdef VK_NV_device_diagnostic_checkpoints static void entry_vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker); } static void entry_vkGetQueueCheckpointDataNV( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) { AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData); } #endif #ifdef VK_GOOGLE_address_space static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE( VkDevice device, VkDeviceMemory memory, uint64_t* pAddress) { AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0; vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress); return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE( VkDevice device, VkDeviceMemory memory, uint64_t* pAddress) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space")) { sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_address_space"); } AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0; vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress); return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return; } #endif #ifdef VK_GOOGLE_color_buffer static VkResult entry_vkRegisterImageColorBufferGOOGLE( VkDevice device, VkImage image, uint32_t colorBuffer) { AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0; vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer); return vkRegisterImageColorBufferGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkRegisterImageColorBufferGOOGLE( VkDevice device, VkImage image, uint32_t colorBuffer) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer")) { sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_color_buffer"); } AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0; vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer); return vkRegisterImageColorBufferGOOGLE_VkResult_return; } static VkResult entry_vkRegisterBufferColorBufferGOOGLE( VkDevice device, VkBuffer buffer, uint32_t colorBuffer) { AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0; vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer); return vkRegisterBufferColorBufferGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkRegisterBufferColorBufferGOOGLE( VkDevice device, VkBuffer buffer, uint32_t colorBuffer) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer")) { sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_color_buffer"); } AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0; vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer); return vkRegisterBufferColorBufferGOOGLE_VkResult_return; } #endif #ifdef VK_GOOGLE_sized_descriptor_update_template static void entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount, uint32_t bufferInfoCount, uint32_t bufferViewCount, const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews) { AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews); } static void dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount, uint32_t bufferInfoCount, uint32_t bufferViewCount, const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template")) { sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_sized_descriptor_update_template"); } AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews); } #endif #ifdef VK_GOOGLE_async_command_buffers static void entry_vkBeginCommandBufferAsyncGOOGLE( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) { AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo); } static void entry_vkEndCommandBufferAsyncGOOGLE( VkCommandBuffer commandBuffer) { AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer); } static void entry_vkResetCommandBufferAsyncGOOGLE( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) { AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags); } static void entry_vkCommandBufferHostSyncGOOGLE( VkCommandBuffer commandBuffer, uint32_t needHostSync, uint32_t sequenceNumber) { AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForCommandBuffer(commandBuffer, vkEnc); vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber); } #endif #ifdef VK_GOOGLE_create_resources_with_requirements static VkResult entry_vkCreateImageWithRequirementsGOOGLE( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage, VkMemoryRequirements* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0; vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements); return vkCreateImageWithRequirementsGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkCreateImageWithRequirementsGOOGLE( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage, VkMemoryRequirements* pMemoryRequirements) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements")) { sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements"); } AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0; vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements); return vkCreateImageWithRequirementsGOOGLE_VkResult_return; } static VkResult entry_vkCreateBufferWithRequirementsGOOGLE( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer, VkMemoryRequirements* pMemoryRequirements) { AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0; vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements); return vkCreateBufferWithRequirementsGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer, VkMemoryRequirements* pMemoryRequirements) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements")) { sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_create_resources_with_requirements"); } AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0; vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements); return vkCreateBufferWithRequirementsGOOGLE_VkResult_return; } #endif #ifdef VK_GOOGLE_address_space_info static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE( VkDevice device, VkDeviceMemory memory, uint64_t* pAddress, uint64_t* pSize, uint64_t* pHostmemId) { AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0; vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId); return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE( VkDevice device, VkDeviceMemory memory, uint64_t* pAddress, uint64_t* pSize, uint64_t* pHostmemId) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info")) { sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_address_space_info"); } AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0; vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId); return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return; } #endif #ifdef VK_GOOGLE_free_memory_sync static VkResult entry_vkFreeMemorySyncGOOGLE( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0; vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator); return vkFreeMemorySyncGOOGLE_VkResult_return; } static VkResult dynCheck_entry_vkFreeMemorySyncGOOGLE( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { auto resources = ResourceTracker::get(); if (!resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync")) { sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_free_memory_sync"); } AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0; vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator); return vkFreeMemorySyncGOOGLE_VkResult_return; } #endif #ifdef VK_GOOGLE_async_queue_submit static void entry_vkQueueHostSyncGOOGLE( VkQueue queue, uint32_t needHostSync, uint32_t sequenceNumber) { AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber); } static void entry_vkQueueSubmitAsyncGOOGLE( VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) { AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence); } static void entry_vkQueueWaitIdleAsyncGOOGLE( VkQueue queue) { AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue); } static void entry_vkQueueBindSparseAsyncGOOGLE( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) { AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE"); auto vkEnc = HostConnection::get()->vkEncoder(); ResourceTracker::get()->syncEncodersForQueue(queue, vkEnc); vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence); } #endif void* goldfish_vulkan_get_proc_address(const char* name){ #ifdef VK_VERSION_1_0 if (!strcmp(name, "vkCreateInstance")) { return (void*)entry_vkCreateInstance; } if (!strcmp(name, "vkDestroyInstance")) { return (void*)entry_vkDestroyInstance; } if (!strcmp(name, "vkEnumeratePhysicalDevices")) { return (void*)entry_vkEnumeratePhysicalDevices; } if (!strcmp(name, "vkGetPhysicalDeviceFeatures")) { return (void*)entry_vkGetPhysicalDeviceFeatures; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceFormatProperties; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceImageFormatProperties; } if (!strcmp(name, "vkGetPhysicalDeviceProperties")) { return (void*)entry_vkGetPhysicalDeviceProperties; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties")) { return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties")) { return (void*)entry_vkGetPhysicalDeviceMemoryProperties; } if (!strcmp(name, "vkGetInstanceProcAddr")) { return (void*)entry_vkGetInstanceProcAddr; } if (!strcmp(name, "vkGetDeviceProcAddr")) { return (void*)entry_vkGetDeviceProcAddr; } if (!strcmp(name, "vkCreateDevice")) { return (void*)entry_vkCreateDevice; } if (!strcmp(name, "vkDestroyDevice")) { return (void*)entry_vkDestroyDevice; } if (!strcmp(name, "vkEnumerateInstanceExtensionProperties")) { return (void*)entry_vkEnumerateInstanceExtensionProperties; } if (!strcmp(name, "vkEnumerateDeviceExtensionProperties")) { return (void*)entry_vkEnumerateDeviceExtensionProperties; } if (!strcmp(name, "vkEnumerateInstanceLayerProperties")) { return (void*)entry_vkEnumerateInstanceLayerProperties; } if (!strcmp(name, "vkEnumerateDeviceLayerProperties")) { return (void*)entry_vkEnumerateDeviceLayerProperties; } if (!strcmp(name, "vkGetDeviceQueue")) { return (void*)entry_vkGetDeviceQueue; } if (!strcmp(name, "vkQueueSubmit")) { return (void*)entry_vkQueueSubmit; } if (!strcmp(name, "vkQueueWaitIdle")) { return (void*)entry_vkQueueWaitIdle; } if (!strcmp(name, "vkDeviceWaitIdle")) { return (void*)entry_vkDeviceWaitIdle; } if (!strcmp(name, "vkAllocateMemory")) { return (void*)entry_vkAllocateMemory; } if (!strcmp(name, "vkFreeMemory")) { return (void*)entry_vkFreeMemory; } if (!strcmp(name, "vkMapMemory")) { return (void*)entry_vkMapMemory; } if (!strcmp(name, "vkUnmapMemory")) { return (void*)entry_vkUnmapMemory; } if (!strcmp(name, "vkFlushMappedMemoryRanges")) { return (void*)entry_vkFlushMappedMemoryRanges; } if (!strcmp(name, "vkInvalidateMappedMemoryRanges")) { return (void*)entry_vkInvalidateMappedMemoryRanges; } if (!strcmp(name, "vkGetDeviceMemoryCommitment")) { return (void*)entry_vkGetDeviceMemoryCommitment; } if (!strcmp(name, "vkBindBufferMemory")) { return (void*)entry_vkBindBufferMemory; } if (!strcmp(name, "vkBindImageMemory")) { return (void*)entry_vkBindImageMemory; } if (!strcmp(name, "vkGetBufferMemoryRequirements")) { return (void*)entry_vkGetBufferMemoryRequirements; } if (!strcmp(name, "vkGetImageMemoryRequirements")) { return (void*)entry_vkGetImageMemoryRequirements; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements")) { return (void*)entry_vkGetImageSparseMemoryRequirements; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties; } if (!strcmp(name, "vkQueueBindSparse")) { return (void*)entry_vkQueueBindSparse; } if (!strcmp(name, "vkCreateFence")) { return (void*)entry_vkCreateFence; } if (!strcmp(name, "vkDestroyFence")) { return (void*)entry_vkDestroyFence; } if (!strcmp(name, "vkResetFences")) { return (void*)entry_vkResetFences; } if (!strcmp(name, "vkGetFenceStatus")) { return (void*)entry_vkGetFenceStatus; } if (!strcmp(name, "vkWaitForFences")) { return (void*)entry_vkWaitForFences; } if (!strcmp(name, "vkCreateSemaphore")) { return (void*)entry_vkCreateSemaphore; } if (!strcmp(name, "vkDestroySemaphore")) { return (void*)entry_vkDestroySemaphore; } if (!strcmp(name, "vkCreateEvent")) { return (void*)entry_vkCreateEvent; } if (!strcmp(name, "vkDestroyEvent")) { return (void*)entry_vkDestroyEvent; } if (!strcmp(name, "vkGetEventStatus")) { return (void*)entry_vkGetEventStatus; } if (!strcmp(name, "vkSetEvent")) { return (void*)entry_vkSetEvent; } if (!strcmp(name, "vkResetEvent")) { return (void*)entry_vkResetEvent; } if (!strcmp(name, "vkCreateQueryPool")) { return (void*)entry_vkCreateQueryPool; } if (!strcmp(name, "vkDestroyQueryPool")) { return (void*)entry_vkDestroyQueryPool; } if (!strcmp(name, "vkGetQueryPoolResults")) { return (void*)entry_vkGetQueryPoolResults; } if (!strcmp(name, "vkCreateBuffer")) { return (void*)entry_vkCreateBuffer; } if (!strcmp(name, "vkDestroyBuffer")) { return (void*)entry_vkDestroyBuffer; } if (!strcmp(name, "vkCreateBufferView")) { return (void*)entry_vkCreateBufferView; } if (!strcmp(name, "vkDestroyBufferView")) { return (void*)entry_vkDestroyBufferView; } if (!strcmp(name, "vkCreateImage")) { return (void*)entry_vkCreateImage; } if (!strcmp(name, "vkDestroyImage")) { return (void*)entry_vkDestroyImage; } if (!strcmp(name, "vkGetImageSubresourceLayout")) { return (void*)entry_vkGetImageSubresourceLayout; } if (!strcmp(name, "vkCreateImageView")) { return (void*)entry_vkCreateImageView; } if (!strcmp(name, "vkDestroyImageView")) { return (void*)entry_vkDestroyImageView; } if (!strcmp(name, "vkCreateShaderModule")) { return (void*)entry_vkCreateShaderModule; } if (!strcmp(name, "vkDestroyShaderModule")) { return (void*)entry_vkDestroyShaderModule; } if (!strcmp(name, "vkCreatePipelineCache")) { return (void*)entry_vkCreatePipelineCache; } if (!strcmp(name, "vkDestroyPipelineCache")) { return (void*)entry_vkDestroyPipelineCache; } if (!strcmp(name, "vkGetPipelineCacheData")) { return (void*)entry_vkGetPipelineCacheData; } if (!strcmp(name, "vkMergePipelineCaches")) { return (void*)entry_vkMergePipelineCaches; } if (!strcmp(name, "vkCreateGraphicsPipelines")) { return (void*)entry_vkCreateGraphicsPipelines; } if (!strcmp(name, "vkCreateComputePipelines")) { return (void*)entry_vkCreateComputePipelines; } if (!strcmp(name, "vkDestroyPipeline")) { return (void*)entry_vkDestroyPipeline; } if (!strcmp(name, "vkCreatePipelineLayout")) { return (void*)entry_vkCreatePipelineLayout; } if (!strcmp(name, "vkDestroyPipelineLayout")) { return (void*)entry_vkDestroyPipelineLayout; } if (!strcmp(name, "vkCreateSampler")) { return (void*)entry_vkCreateSampler; } if (!strcmp(name, "vkDestroySampler")) { return (void*)entry_vkDestroySampler; } if (!strcmp(name, "vkCreateDescriptorSetLayout")) { return (void*)entry_vkCreateDescriptorSetLayout; } if (!strcmp(name, "vkDestroyDescriptorSetLayout")) { return (void*)entry_vkDestroyDescriptorSetLayout; } if (!strcmp(name, "vkCreateDescriptorPool")) { return (void*)entry_vkCreateDescriptorPool; } if (!strcmp(name, "vkDestroyDescriptorPool")) { return (void*)entry_vkDestroyDescriptorPool; } if (!strcmp(name, "vkResetDescriptorPool")) { return (void*)entry_vkResetDescriptorPool; } if (!strcmp(name, "vkAllocateDescriptorSets")) { return (void*)entry_vkAllocateDescriptorSets; } if (!strcmp(name, "vkFreeDescriptorSets")) { return (void*)entry_vkFreeDescriptorSets; } if (!strcmp(name, "vkUpdateDescriptorSets")) { return (void*)entry_vkUpdateDescriptorSets; } if (!strcmp(name, "vkCreateFramebuffer")) { return (void*)entry_vkCreateFramebuffer; } if (!strcmp(name, "vkDestroyFramebuffer")) { return (void*)entry_vkDestroyFramebuffer; } if (!strcmp(name, "vkCreateRenderPass")) { return (void*)entry_vkCreateRenderPass; } if (!strcmp(name, "vkDestroyRenderPass")) { return (void*)entry_vkDestroyRenderPass; } if (!strcmp(name, "vkGetRenderAreaGranularity")) { return (void*)entry_vkGetRenderAreaGranularity; } if (!strcmp(name, "vkCreateCommandPool")) { return (void*)entry_vkCreateCommandPool; } if (!strcmp(name, "vkDestroyCommandPool")) { return (void*)entry_vkDestroyCommandPool; } if (!strcmp(name, "vkResetCommandPool")) { return (void*)entry_vkResetCommandPool; } if (!strcmp(name, "vkAllocateCommandBuffers")) { return (void*)entry_vkAllocateCommandBuffers; } if (!strcmp(name, "vkFreeCommandBuffers")) { return (void*)entry_vkFreeCommandBuffers; } if (!strcmp(name, "vkBeginCommandBuffer")) { return (void*)entry_vkBeginCommandBuffer; } if (!strcmp(name, "vkEndCommandBuffer")) { return (void*)entry_vkEndCommandBuffer; } if (!strcmp(name, "vkResetCommandBuffer")) { return (void*)entry_vkResetCommandBuffer; } if (!strcmp(name, "vkCmdBindPipeline")) { return (void*)entry_vkCmdBindPipeline; } if (!strcmp(name, "vkCmdSetViewport")) { return (void*)entry_vkCmdSetViewport; } if (!strcmp(name, "vkCmdSetScissor")) { return (void*)entry_vkCmdSetScissor; } if (!strcmp(name, "vkCmdSetLineWidth")) { return (void*)entry_vkCmdSetLineWidth; } if (!strcmp(name, "vkCmdSetDepthBias")) { return (void*)entry_vkCmdSetDepthBias; } if (!strcmp(name, "vkCmdSetBlendConstants")) { return (void*)entry_vkCmdSetBlendConstants; } if (!strcmp(name, "vkCmdSetDepthBounds")) { return (void*)entry_vkCmdSetDepthBounds; } if (!strcmp(name, "vkCmdSetStencilCompareMask")) { return (void*)entry_vkCmdSetStencilCompareMask; } if (!strcmp(name, "vkCmdSetStencilWriteMask")) { return (void*)entry_vkCmdSetStencilWriteMask; } if (!strcmp(name, "vkCmdSetStencilReference")) { return (void*)entry_vkCmdSetStencilReference; } if (!strcmp(name, "vkCmdBindDescriptorSets")) { return (void*)entry_vkCmdBindDescriptorSets; } if (!strcmp(name, "vkCmdBindIndexBuffer")) { return (void*)entry_vkCmdBindIndexBuffer; } if (!strcmp(name, "vkCmdBindVertexBuffers")) { return (void*)entry_vkCmdBindVertexBuffers; } if (!strcmp(name, "vkCmdDraw")) { return (void*)entry_vkCmdDraw; } if (!strcmp(name, "vkCmdDrawIndexed")) { return (void*)entry_vkCmdDrawIndexed; } if (!strcmp(name, "vkCmdDrawIndirect")) { return (void*)entry_vkCmdDrawIndirect; } if (!strcmp(name, "vkCmdDrawIndexedIndirect")) { return (void*)entry_vkCmdDrawIndexedIndirect; } if (!strcmp(name, "vkCmdDispatch")) { return (void*)entry_vkCmdDispatch; } if (!strcmp(name, "vkCmdDispatchIndirect")) { return (void*)entry_vkCmdDispatchIndirect; } if (!strcmp(name, "vkCmdCopyBuffer")) { return (void*)entry_vkCmdCopyBuffer; } if (!strcmp(name, "vkCmdCopyImage")) { return (void*)entry_vkCmdCopyImage; } if (!strcmp(name, "vkCmdBlitImage")) { return (void*)entry_vkCmdBlitImage; } if (!strcmp(name, "vkCmdCopyBufferToImage")) { return (void*)entry_vkCmdCopyBufferToImage; } if (!strcmp(name, "vkCmdCopyImageToBuffer")) { return (void*)entry_vkCmdCopyImageToBuffer; } if (!strcmp(name, "vkCmdUpdateBuffer")) { return (void*)entry_vkCmdUpdateBuffer; } if (!strcmp(name, "vkCmdFillBuffer")) { return (void*)entry_vkCmdFillBuffer; } if (!strcmp(name, "vkCmdClearColorImage")) { return (void*)entry_vkCmdClearColorImage; } if (!strcmp(name, "vkCmdClearDepthStencilImage")) { return (void*)entry_vkCmdClearDepthStencilImage; } if (!strcmp(name, "vkCmdClearAttachments")) { return (void*)entry_vkCmdClearAttachments; } if (!strcmp(name, "vkCmdResolveImage")) { return (void*)entry_vkCmdResolveImage; } if (!strcmp(name, "vkCmdSetEvent")) { return (void*)entry_vkCmdSetEvent; } if (!strcmp(name, "vkCmdResetEvent")) { return (void*)entry_vkCmdResetEvent; } if (!strcmp(name, "vkCmdWaitEvents")) { return (void*)entry_vkCmdWaitEvents; } if (!strcmp(name, "vkCmdPipelineBarrier")) { return (void*)entry_vkCmdPipelineBarrier; } if (!strcmp(name, "vkCmdBeginQuery")) { return (void*)entry_vkCmdBeginQuery; } if (!strcmp(name, "vkCmdEndQuery")) { return (void*)entry_vkCmdEndQuery; } if (!strcmp(name, "vkCmdResetQueryPool")) { return (void*)entry_vkCmdResetQueryPool; } if (!strcmp(name, "vkCmdWriteTimestamp")) { return (void*)entry_vkCmdWriteTimestamp; } if (!strcmp(name, "vkCmdCopyQueryPoolResults")) { return (void*)entry_vkCmdCopyQueryPoolResults; } if (!strcmp(name, "vkCmdPushConstants")) { return (void*)entry_vkCmdPushConstants; } if (!strcmp(name, "vkCmdBeginRenderPass")) { return (void*)entry_vkCmdBeginRenderPass; } if (!strcmp(name, "vkCmdNextSubpass")) { return (void*)entry_vkCmdNextSubpass; } if (!strcmp(name, "vkCmdEndRenderPass")) { return (void*)entry_vkCmdEndRenderPass; } if (!strcmp(name, "vkCmdExecuteCommands")) { return (void*)entry_vkCmdExecuteCommands; } #endif #ifdef VK_VERSION_1_1 if (!strcmp(name, "vkEnumerateInstanceVersion")) { return nullptr; } if (!strcmp(name, "vkBindBufferMemory2")) { return nullptr; } if (!strcmp(name, "vkBindImageMemory2")) { return nullptr; } if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures")) { return nullptr; } if (!strcmp(name, "vkCmdSetDeviceMask")) { return nullptr; } if (!strcmp(name, "vkCmdDispatchBase")) { return nullptr; } if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups")) { return nullptr; } if (!strcmp(name, "vkGetImageMemoryRequirements2")) { return nullptr; } if (!strcmp(name, "vkGetBufferMemoryRequirements2")) { return nullptr; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFeatures2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceProperties2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2")) { return nullptr; } if (!strcmp(name, "vkTrimCommandPool")) { return nullptr; } if (!strcmp(name, "vkGetDeviceQueue2")) { return nullptr; } if (!strcmp(name, "vkCreateSamplerYcbcrConversion")) { return nullptr; } if (!strcmp(name, "vkDestroySamplerYcbcrConversion")) { return nullptr; } if (!strcmp(name, "vkCreateDescriptorUpdateTemplate")) { return nullptr; } if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate")) { return nullptr; } if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties")) { return nullptr; } if (!strcmp(name, "vkGetDescriptorSetLayoutSupport")) { return nullptr; } #endif #ifdef VK_KHR_surface if (!strcmp(name, "vkDestroySurfaceKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR")) { return nullptr; } #endif #ifdef VK_KHR_swapchain if (!strcmp(name, "vkCreateSwapchainKHR")) { return nullptr; } if (!strcmp(name, "vkDestroySwapchainKHR")) { return nullptr; } if (!strcmp(name, "vkGetSwapchainImagesKHR")) { return nullptr; } if (!strcmp(name, "vkAcquireNextImageKHR")) { return nullptr; } if (!strcmp(name, "vkQueuePresentKHR")) { return nullptr; } if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR")) { return nullptr; } if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR")) { return nullptr; } if (!strcmp(name, "vkAcquireNextImage2KHR")) { return nullptr; } #endif #ifdef VK_KHR_display if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")) { return nullptr; } if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR")) { return nullptr; } if (!strcmp(name, "vkGetDisplayModePropertiesKHR")) { return nullptr; } if (!strcmp(name, "vkCreateDisplayModeKHR")) { return nullptr; } if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR")) { return nullptr; } if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR")) { return nullptr; } #endif #ifdef VK_KHR_display_swapchain if (!strcmp(name, "vkCreateSharedSwapchainsKHR")) { return nullptr; } #endif #ifdef VK_KHR_xlib_surface if (!strcmp(name, "vkCreateXlibSurfaceKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR")) { return nullptr; } #endif #ifdef VK_KHR_xcb_surface if (!strcmp(name, "vkCreateXcbSurfaceKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR")) { return nullptr; } #endif #ifdef VK_KHR_wayland_surface if (!strcmp(name, "vkCreateWaylandSurfaceKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR")) { return nullptr; } #endif #ifdef VK_KHR_mir_surface if (!strcmp(name, "vkCreateMirSurfaceKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR")) { return nullptr; } #endif #ifdef VK_KHR_android_surface if (!strcmp(name, "vkCreateAndroidSurfaceKHR")) { return nullptr; } #endif #ifdef VK_KHR_win32_surface if (!strcmp(name, "vkCreateWin32SurfaceKHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) { return nullptr; } #endif #ifdef VK_KHR_get_physical_device_properties2 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")) { return nullptr; } #endif #ifdef VK_KHR_device_group if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR")) { return nullptr; } if (!strcmp(name, "vkCmdSetDeviceMaskKHR")) { return nullptr; } if (!strcmp(name, "vkCmdDispatchBaseKHR")) { return nullptr; } #endif #ifdef VK_KHR_maintenance1 if (!strcmp(name, "vkTrimCommandPoolKHR")) { return nullptr; } #endif #ifdef VK_KHR_device_group_creation if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_memory_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_memory_win32 if (!strcmp(name, "vkGetMemoryWin32HandleKHR")) { return nullptr; } if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_memory_fd if (!strcmp(name, "vkGetMemoryFdKHR")) { return nullptr; } if (!strcmp(name, "vkGetMemoryFdPropertiesKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_semaphore_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_semaphore_win32 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR")) { return nullptr; } if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_semaphore_fd if (!strcmp(name, "vkImportSemaphoreFdKHR")) { return nullptr; } if (!strcmp(name, "vkGetSemaphoreFdKHR")) { return nullptr; } #endif #ifdef VK_KHR_push_descriptor if (!strcmp(name, "vkCmdPushDescriptorSetKHR")) { return nullptr; } if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR")) { return nullptr; } #endif #ifdef VK_KHR_descriptor_update_template if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR")) { return nullptr; } if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR")) { return nullptr; } if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR")) { return nullptr; } #endif #ifdef VK_KHR_create_renderpass2 if (!strcmp(name, "vkCreateRenderPass2KHR")) { return nullptr; } if (!strcmp(name, "vkCmdBeginRenderPass2KHR")) { return nullptr; } if (!strcmp(name, "vkCmdNextSubpass2KHR")) { return nullptr; } if (!strcmp(name, "vkCmdEndRenderPass2KHR")) { return nullptr; } #endif #ifdef VK_KHR_shared_presentable_image if (!strcmp(name, "vkGetSwapchainStatusKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_fence_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_fence_win32 if (!strcmp(name, "vkImportFenceWin32HandleKHR")) { return nullptr; } if (!strcmp(name, "vkGetFenceWin32HandleKHR")) { return nullptr; } #endif #ifdef VK_KHR_external_fence_fd if (!strcmp(name, "vkImportFenceFdKHR")) { return nullptr; } if (!strcmp(name, "vkGetFenceFdKHR")) { return nullptr; } #endif #ifdef VK_KHR_get_surface_capabilities2 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR")) { return nullptr; } #endif #ifdef VK_KHR_get_display_properties2 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetDisplayModeProperties2KHR")) { return nullptr; } if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR")) { return nullptr; } #endif #ifdef VK_KHR_get_memory_requirements2 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR")) { return nullptr; } if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR")) { return nullptr; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR")) { return nullptr; } #endif #ifdef VK_KHR_sampler_ycbcr_conversion if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR")) { return nullptr; } if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR")) { return nullptr; } #endif #ifdef VK_KHR_bind_memory2 if (!strcmp(name, "vkBindBufferMemory2KHR")) { return nullptr; } if (!strcmp(name, "vkBindImageMemory2KHR")) { return nullptr; } #endif #ifdef VK_KHR_maintenance3 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR")) { return nullptr; } #endif #ifdef VK_KHR_draw_indirect_count if (!strcmp(name, "vkCmdDrawIndirectCountKHR")) { return nullptr; } if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR")) { return nullptr; } #endif #ifdef VK_ANDROID_native_buffer if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID")) { return nullptr; } if (!strcmp(name, "vkAcquireImageANDROID")) { return nullptr; } if (!strcmp(name, "vkQueueSignalReleaseImageANDROID")) { return nullptr; } #endif #ifdef VK_EXT_debug_report if (!strcmp(name, "vkCreateDebugReportCallbackEXT")) { return nullptr; } if (!strcmp(name, "vkDestroyDebugReportCallbackEXT")) { return nullptr; } if (!strcmp(name, "vkDebugReportMessageEXT")) { return nullptr; } #endif #ifdef VK_EXT_debug_marker if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT")) { return nullptr; } if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT")) { return nullptr; } if (!strcmp(name, "vkCmdDebugMarkerBeginEXT")) { return nullptr; } if (!strcmp(name, "vkCmdDebugMarkerEndEXT")) { return nullptr; } if (!strcmp(name, "vkCmdDebugMarkerInsertEXT")) { return nullptr; } #endif #ifdef VK_AMD_draw_indirect_count if (!strcmp(name, "vkCmdDrawIndirectCountAMD")) { return nullptr; } if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD")) { return nullptr; } #endif #ifdef VK_AMD_shader_info if (!strcmp(name, "vkGetShaderInfoAMD")) { return nullptr; } #endif #ifdef VK_NV_external_memory_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV")) { return nullptr; } #endif #ifdef VK_NV_external_memory_win32 if (!strcmp(name, "vkGetMemoryWin32HandleNV")) { return nullptr; } #endif #ifdef VK_NN_vi_surface if (!strcmp(name, "vkCreateViSurfaceNN")) { return nullptr; } #endif #ifdef VK_EXT_conditional_rendering if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT")) { return nullptr; } if (!strcmp(name, "vkCmdEndConditionalRenderingEXT")) { return nullptr; } #endif #ifdef VK_NVX_device_generated_commands if (!strcmp(name, "vkCmdProcessCommandsNVX")) { return nullptr; } if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX")) { return nullptr; } if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX")) { return nullptr; } if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX")) { return nullptr; } if (!strcmp(name, "vkCreateObjectTableNVX")) { return nullptr; } if (!strcmp(name, "vkDestroyObjectTableNVX")) { return nullptr; } if (!strcmp(name, "vkRegisterObjectsNVX")) { return nullptr; } if (!strcmp(name, "vkUnregisterObjectsNVX")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX")) { return nullptr; } #endif #ifdef VK_NV_clip_space_w_scaling if (!strcmp(name, "vkCmdSetViewportWScalingNV")) { return nullptr; } #endif #ifdef VK_EXT_direct_mode_display if (!strcmp(name, "vkReleaseDisplayEXT")) { return nullptr; } #endif #ifdef VK_EXT_acquire_xlib_display if (!strcmp(name, "vkAcquireXlibDisplayEXT")) { return nullptr; } if (!strcmp(name, "vkGetRandROutputDisplayEXT")) { return nullptr; } #endif #ifdef VK_EXT_display_surface_counter if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT")) { return nullptr; } #endif #ifdef VK_EXT_display_control if (!strcmp(name, "vkDisplayPowerControlEXT")) { return nullptr; } if (!strcmp(name, "vkRegisterDeviceEventEXT")) { return nullptr; } if (!strcmp(name, "vkRegisterDisplayEventEXT")) { return nullptr; } if (!strcmp(name, "vkGetSwapchainCounterEXT")) { return nullptr; } #endif #ifdef VK_GOOGLE_display_timing if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE")) { return nullptr; } if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE")) { return nullptr; } #endif #ifdef VK_EXT_discard_rectangles if (!strcmp(name, "vkCmdSetDiscardRectangleEXT")) { return nullptr; } #endif #ifdef VK_EXT_hdr_metadata if (!strcmp(name, "vkSetHdrMetadataEXT")) { return nullptr; } #endif #ifdef VK_MVK_ios_surface if (!strcmp(name, "vkCreateIOSSurfaceMVK")) { return nullptr; } #endif #ifdef VK_MVK_macos_surface if (!strcmp(name, "vkCreateMacOSSurfaceMVK")) { return nullptr; } #endif #ifdef VK_EXT_debug_utils if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT")) { return nullptr; } if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT")) { return nullptr; } if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT")) { return nullptr; } if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT")) { return nullptr; } if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT")) { return nullptr; } if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT")) { return nullptr; } if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT")) { return nullptr; } if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT")) { return nullptr; } if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT")) { return nullptr; } if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT")) { return nullptr; } if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT")) { return nullptr; } #endif #ifdef VK_ANDROID_external_memory_android_hardware_buffer if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID")) { return nullptr; } if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID")) { return nullptr; } #endif #ifdef VK_EXT_sample_locations if (!strcmp(name, "vkCmdSetSampleLocationsEXT")) { return nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT")) { return nullptr; } #endif #ifdef VK_EXT_validation_cache if (!strcmp(name, "vkCreateValidationCacheEXT")) { return nullptr; } if (!strcmp(name, "vkDestroyValidationCacheEXT")) { return nullptr; } if (!strcmp(name, "vkMergeValidationCachesEXT")) { return nullptr; } if (!strcmp(name, "vkGetValidationCacheDataEXT")) { return nullptr; } #endif #ifdef VK_EXT_external_memory_host if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT")) { return nullptr; } #endif #ifdef VK_AMD_buffer_marker if (!strcmp(name, "vkCmdWriteBufferMarkerAMD")) { return nullptr; } #endif #ifdef VK_NV_device_diagnostic_checkpoints if (!strcmp(name, "vkCmdSetCheckpointNV")) { return nullptr; } if (!strcmp(name, "vkGetQueueCheckpointDataNV")) { return nullptr; } #endif #ifdef VK_GOOGLE_address_space if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_color_buffer if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE")) { return nullptr; } if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_sized_descriptor_update_template if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_async_command_buffers if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE")) { return nullptr; } if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE")) { return nullptr; } if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE")) { return nullptr; } if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_create_resources_with_requirements if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE")) { return nullptr; } if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_address_space_info if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_free_memory_sync if (!strcmp(name, "vkFreeMemorySyncGOOGLE")) { return nullptr; } #endif #ifdef VK_GOOGLE_async_queue_submit if (!strcmp(name, "vkQueueHostSyncGOOGLE")) { return nullptr; } if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE")) { return nullptr; } if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE")) { return nullptr; } if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE")) { return nullptr; } #endif return nullptr; } void* goldfish_vulkan_get_instance_proc_address(VkInstance instance, const char* name){ auto resources = ResourceTracker::get(); bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1; #ifdef VK_VERSION_1_0 if (!strcmp(name, "vkCreateInstance")) { return (void*)entry_vkCreateInstance; } if (!strcmp(name, "vkDestroyInstance")) { return (void*)entry_vkDestroyInstance; } if (!strcmp(name, "vkEnumeratePhysicalDevices")) { return (void*)entry_vkEnumeratePhysicalDevices; } if (!strcmp(name, "vkGetPhysicalDeviceFeatures")) { return (void*)entry_vkGetPhysicalDeviceFeatures; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceFormatProperties; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceImageFormatProperties; } if (!strcmp(name, "vkGetPhysicalDeviceProperties")) { return (void*)entry_vkGetPhysicalDeviceProperties; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties")) { return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties")) { return (void*)entry_vkGetPhysicalDeviceMemoryProperties; } if (!strcmp(name, "vkGetInstanceProcAddr")) { return (void*)entry_vkGetInstanceProcAddr; } if (!strcmp(name, "vkGetDeviceProcAddr")) { return (void*)entry_vkGetDeviceProcAddr; } if (!strcmp(name, "vkCreateDevice")) { return (void*)entry_vkCreateDevice; } if (!strcmp(name, "vkDestroyDevice")) { return (void*)entry_vkDestroyDevice; } if (!strcmp(name, "vkEnumerateInstanceExtensionProperties")) { return (void*)entry_vkEnumerateInstanceExtensionProperties; } if (!strcmp(name, "vkEnumerateDeviceExtensionProperties")) { return (void*)entry_vkEnumerateDeviceExtensionProperties; } if (!strcmp(name, "vkEnumerateInstanceLayerProperties")) { return (void*)entry_vkEnumerateInstanceLayerProperties; } if (!strcmp(name, "vkEnumerateDeviceLayerProperties")) { return (void*)entry_vkEnumerateDeviceLayerProperties; } if (!strcmp(name, "vkGetDeviceQueue")) { return (void*)entry_vkGetDeviceQueue; } if (!strcmp(name, "vkQueueSubmit")) { return (void*)entry_vkQueueSubmit; } if (!strcmp(name, "vkQueueWaitIdle")) { return (void*)entry_vkQueueWaitIdle; } if (!strcmp(name, "vkDeviceWaitIdle")) { return (void*)entry_vkDeviceWaitIdle; } if (!strcmp(name, "vkAllocateMemory")) { return (void*)entry_vkAllocateMemory; } if (!strcmp(name, "vkFreeMemory")) { return (void*)entry_vkFreeMemory; } if (!strcmp(name, "vkMapMemory")) { return (void*)entry_vkMapMemory; } if (!strcmp(name, "vkUnmapMemory")) { return (void*)entry_vkUnmapMemory; } if (!strcmp(name, "vkFlushMappedMemoryRanges")) { return (void*)entry_vkFlushMappedMemoryRanges; } if (!strcmp(name, "vkInvalidateMappedMemoryRanges")) { return (void*)entry_vkInvalidateMappedMemoryRanges; } if (!strcmp(name, "vkGetDeviceMemoryCommitment")) { return (void*)entry_vkGetDeviceMemoryCommitment; } if (!strcmp(name, "vkBindBufferMemory")) { return (void*)entry_vkBindBufferMemory; } if (!strcmp(name, "vkBindImageMemory")) { return (void*)entry_vkBindImageMemory; } if (!strcmp(name, "vkGetBufferMemoryRequirements")) { return (void*)entry_vkGetBufferMemoryRequirements; } if (!strcmp(name, "vkGetImageMemoryRequirements")) { return (void*)entry_vkGetImageMemoryRequirements; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements")) { return (void*)entry_vkGetImageSparseMemoryRequirements; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties; } if (!strcmp(name, "vkQueueBindSparse")) { return (void*)entry_vkQueueBindSparse; } if (!strcmp(name, "vkCreateFence")) { return (void*)entry_vkCreateFence; } if (!strcmp(name, "vkDestroyFence")) { return (void*)entry_vkDestroyFence; } if (!strcmp(name, "vkResetFences")) { return (void*)entry_vkResetFences; } if (!strcmp(name, "vkGetFenceStatus")) { return (void*)entry_vkGetFenceStatus; } if (!strcmp(name, "vkWaitForFences")) { return (void*)entry_vkWaitForFences; } if (!strcmp(name, "vkCreateSemaphore")) { return (void*)entry_vkCreateSemaphore; } if (!strcmp(name, "vkDestroySemaphore")) { return (void*)entry_vkDestroySemaphore; } if (!strcmp(name, "vkCreateEvent")) { return (void*)entry_vkCreateEvent; } if (!strcmp(name, "vkDestroyEvent")) { return (void*)entry_vkDestroyEvent; } if (!strcmp(name, "vkGetEventStatus")) { return (void*)entry_vkGetEventStatus; } if (!strcmp(name, "vkSetEvent")) { return (void*)entry_vkSetEvent; } if (!strcmp(name, "vkResetEvent")) { return (void*)entry_vkResetEvent; } if (!strcmp(name, "vkCreateQueryPool")) { return (void*)entry_vkCreateQueryPool; } if (!strcmp(name, "vkDestroyQueryPool")) { return (void*)entry_vkDestroyQueryPool; } if (!strcmp(name, "vkGetQueryPoolResults")) { return (void*)entry_vkGetQueryPoolResults; } if (!strcmp(name, "vkCreateBuffer")) { return (void*)entry_vkCreateBuffer; } if (!strcmp(name, "vkDestroyBuffer")) { return (void*)entry_vkDestroyBuffer; } if (!strcmp(name, "vkCreateBufferView")) { return (void*)entry_vkCreateBufferView; } if (!strcmp(name, "vkDestroyBufferView")) { return (void*)entry_vkDestroyBufferView; } if (!strcmp(name, "vkCreateImage")) { return (void*)entry_vkCreateImage; } if (!strcmp(name, "vkDestroyImage")) { return (void*)entry_vkDestroyImage; } if (!strcmp(name, "vkGetImageSubresourceLayout")) { return (void*)entry_vkGetImageSubresourceLayout; } if (!strcmp(name, "vkCreateImageView")) { return (void*)entry_vkCreateImageView; } if (!strcmp(name, "vkDestroyImageView")) { return (void*)entry_vkDestroyImageView; } if (!strcmp(name, "vkCreateShaderModule")) { return (void*)entry_vkCreateShaderModule; } if (!strcmp(name, "vkDestroyShaderModule")) { return (void*)entry_vkDestroyShaderModule; } if (!strcmp(name, "vkCreatePipelineCache")) { return (void*)entry_vkCreatePipelineCache; } if (!strcmp(name, "vkDestroyPipelineCache")) { return (void*)entry_vkDestroyPipelineCache; } if (!strcmp(name, "vkGetPipelineCacheData")) { return (void*)entry_vkGetPipelineCacheData; } if (!strcmp(name, "vkMergePipelineCaches")) { return (void*)entry_vkMergePipelineCaches; } if (!strcmp(name, "vkCreateGraphicsPipelines")) { return (void*)entry_vkCreateGraphicsPipelines; } if (!strcmp(name, "vkCreateComputePipelines")) { return (void*)entry_vkCreateComputePipelines; } if (!strcmp(name, "vkDestroyPipeline")) { return (void*)entry_vkDestroyPipeline; } if (!strcmp(name, "vkCreatePipelineLayout")) { return (void*)entry_vkCreatePipelineLayout; } if (!strcmp(name, "vkDestroyPipelineLayout")) { return (void*)entry_vkDestroyPipelineLayout; } if (!strcmp(name, "vkCreateSampler")) { return (void*)entry_vkCreateSampler; } if (!strcmp(name, "vkDestroySampler")) { return (void*)entry_vkDestroySampler; } if (!strcmp(name, "vkCreateDescriptorSetLayout")) { return (void*)entry_vkCreateDescriptorSetLayout; } if (!strcmp(name, "vkDestroyDescriptorSetLayout")) { return (void*)entry_vkDestroyDescriptorSetLayout; } if (!strcmp(name, "vkCreateDescriptorPool")) { return (void*)entry_vkCreateDescriptorPool; } if (!strcmp(name, "vkDestroyDescriptorPool")) { return (void*)entry_vkDestroyDescriptorPool; } if (!strcmp(name, "vkResetDescriptorPool")) { return (void*)entry_vkResetDescriptorPool; } if (!strcmp(name, "vkAllocateDescriptorSets")) { return (void*)entry_vkAllocateDescriptorSets; } if (!strcmp(name, "vkFreeDescriptorSets")) { return (void*)entry_vkFreeDescriptorSets; } if (!strcmp(name, "vkUpdateDescriptorSets")) { return (void*)entry_vkUpdateDescriptorSets; } if (!strcmp(name, "vkCreateFramebuffer")) { return (void*)entry_vkCreateFramebuffer; } if (!strcmp(name, "vkDestroyFramebuffer")) { return (void*)entry_vkDestroyFramebuffer; } if (!strcmp(name, "vkCreateRenderPass")) { return (void*)entry_vkCreateRenderPass; } if (!strcmp(name, "vkDestroyRenderPass")) { return (void*)entry_vkDestroyRenderPass; } if (!strcmp(name, "vkGetRenderAreaGranularity")) { return (void*)entry_vkGetRenderAreaGranularity; } if (!strcmp(name, "vkCreateCommandPool")) { return (void*)entry_vkCreateCommandPool; } if (!strcmp(name, "vkDestroyCommandPool")) { return (void*)entry_vkDestroyCommandPool; } if (!strcmp(name, "vkResetCommandPool")) { return (void*)entry_vkResetCommandPool; } if (!strcmp(name, "vkAllocateCommandBuffers")) { return (void*)entry_vkAllocateCommandBuffers; } if (!strcmp(name, "vkFreeCommandBuffers")) { return (void*)entry_vkFreeCommandBuffers; } if (!strcmp(name, "vkBeginCommandBuffer")) { return (void*)entry_vkBeginCommandBuffer; } if (!strcmp(name, "vkEndCommandBuffer")) { return (void*)entry_vkEndCommandBuffer; } if (!strcmp(name, "vkResetCommandBuffer")) { return (void*)entry_vkResetCommandBuffer; } if (!strcmp(name, "vkCmdBindPipeline")) { return (void*)entry_vkCmdBindPipeline; } if (!strcmp(name, "vkCmdSetViewport")) { return (void*)entry_vkCmdSetViewport; } if (!strcmp(name, "vkCmdSetScissor")) { return (void*)entry_vkCmdSetScissor; } if (!strcmp(name, "vkCmdSetLineWidth")) { return (void*)entry_vkCmdSetLineWidth; } if (!strcmp(name, "vkCmdSetDepthBias")) { return (void*)entry_vkCmdSetDepthBias; } if (!strcmp(name, "vkCmdSetBlendConstants")) { return (void*)entry_vkCmdSetBlendConstants; } if (!strcmp(name, "vkCmdSetDepthBounds")) { return (void*)entry_vkCmdSetDepthBounds; } if (!strcmp(name, "vkCmdSetStencilCompareMask")) { return (void*)entry_vkCmdSetStencilCompareMask; } if (!strcmp(name, "vkCmdSetStencilWriteMask")) { return (void*)entry_vkCmdSetStencilWriteMask; } if (!strcmp(name, "vkCmdSetStencilReference")) { return (void*)entry_vkCmdSetStencilReference; } if (!strcmp(name, "vkCmdBindDescriptorSets")) { return (void*)entry_vkCmdBindDescriptorSets; } if (!strcmp(name, "vkCmdBindIndexBuffer")) { return (void*)entry_vkCmdBindIndexBuffer; } if (!strcmp(name, "vkCmdBindVertexBuffers")) { return (void*)entry_vkCmdBindVertexBuffers; } if (!strcmp(name, "vkCmdDraw")) { return (void*)entry_vkCmdDraw; } if (!strcmp(name, "vkCmdDrawIndexed")) { return (void*)entry_vkCmdDrawIndexed; } if (!strcmp(name, "vkCmdDrawIndirect")) { return (void*)entry_vkCmdDrawIndirect; } if (!strcmp(name, "vkCmdDrawIndexedIndirect")) { return (void*)entry_vkCmdDrawIndexedIndirect; } if (!strcmp(name, "vkCmdDispatch")) { return (void*)entry_vkCmdDispatch; } if (!strcmp(name, "vkCmdDispatchIndirect")) { return (void*)entry_vkCmdDispatchIndirect; } if (!strcmp(name, "vkCmdCopyBuffer")) { return (void*)entry_vkCmdCopyBuffer; } if (!strcmp(name, "vkCmdCopyImage")) { return (void*)entry_vkCmdCopyImage; } if (!strcmp(name, "vkCmdBlitImage")) { return (void*)entry_vkCmdBlitImage; } if (!strcmp(name, "vkCmdCopyBufferToImage")) { return (void*)entry_vkCmdCopyBufferToImage; } if (!strcmp(name, "vkCmdCopyImageToBuffer")) { return (void*)entry_vkCmdCopyImageToBuffer; } if (!strcmp(name, "vkCmdUpdateBuffer")) { return (void*)entry_vkCmdUpdateBuffer; } if (!strcmp(name, "vkCmdFillBuffer")) { return (void*)entry_vkCmdFillBuffer; } if (!strcmp(name, "vkCmdClearColorImage")) { return (void*)entry_vkCmdClearColorImage; } if (!strcmp(name, "vkCmdClearDepthStencilImage")) { return (void*)entry_vkCmdClearDepthStencilImage; } if (!strcmp(name, "vkCmdClearAttachments")) { return (void*)entry_vkCmdClearAttachments; } if (!strcmp(name, "vkCmdResolveImage")) { return (void*)entry_vkCmdResolveImage; } if (!strcmp(name, "vkCmdSetEvent")) { return (void*)entry_vkCmdSetEvent; } if (!strcmp(name, "vkCmdResetEvent")) { return (void*)entry_vkCmdResetEvent; } if (!strcmp(name, "vkCmdWaitEvents")) { return (void*)entry_vkCmdWaitEvents; } if (!strcmp(name, "vkCmdPipelineBarrier")) { return (void*)entry_vkCmdPipelineBarrier; } if (!strcmp(name, "vkCmdBeginQuery")) { return (void*)entry_vkCmdBeginQuery; } if (!strcmp(name, "vkCmdEndQuery")) { return (void*)entry_vkCmdEndQuery; } if (!strcmp(name, "vkCmdResetQueryPool")) { return (void*)entry_vkCmdResetQueryPool; } if (!strcmp(name, "vkCmdWriteTimestamp")) { return (void*)entry_vkCmdWriteTimestamp; } if (!strcmp(name, "vkCmdCopyQueryPoolResults")) { return (void*)entry_vkCmdCopyQueryPoolResults; } if (!strcmp(name, "vkCmdPushConstants")) { return (void*)entry_vkCmdPushConstants; } if (!strcmp(name, "vkCmdBeginRenderPass")) { return (void*)entry_vkCmdBeginRenderPass; } if (!strcmp(name, "vkCmdNextSubpass")) { return (void*)entry_vkCmdNextSubpass; } if (!strcmp(name, "vkCmdEndRenderPass")) { return (void*)entry_vkCmdEndRenderPass; } if (!strcmp(name, "vkCmdExecuteCommands")) { return (void*)entry_vkCmdExecuteCommands; } #endif #ifdef VK_VERSION_1_1 if (!strcmp(name, "vkEnumerateInstanceVersion")) { return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr; } if (!strcmp(name, "vkBindBufferMemory2")) { return (void*)dynCheck_entry_vkBindBufferMemory2; } if (!strcmp(name, "vkBindImageMemory2")) { return (void*)dynCheck_entry_vkBindImageMemory2; } if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures")) { return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeatures; } if (!strcmp(name, "vkCmdSetDeviceMask")) { return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr; } if (!strcmp(name, "vkCmdDispatchBase")) { return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr; } if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups")) { return nullptr; } if (!strcmp(name, "vkGetImageMemoryRequirements2")) { return (void*)dynCheck_entry_vkGetImageMemoryRequirements2; } if (!strcmp(name, "vkGetBufferMemoryRequirements2")) { return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements2")) { return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2; } if (!strcmp(name, "vkGetPhysicalDeviceFeatures2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr; } if (!strcmp(name, "vkTrimCommandPool")) { return (void*)dynCheck_entry_vkTrimCommandPool; } if (!strcmp(name, "vkGetDeviceQueue2")) { return (void*)dynCheck_entry_vkGetDeviceQueue2; } if (!strcmp(name, "vkCreateSamplerYcbcrConversion")) { return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversion; } if (!strcmp(name, "vkDestroySamplerYcbcrConversion")) { return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversion; } if (!strcmp(name, "vkCreateDescriptorUpdateTemplate")) { return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplate; } if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate")) { return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplate; } if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate")) { return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplate; } if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr; } if (!strcmp(name, "vkGetDescriptorSetLayoutSupport")) { return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupport; } #endif #ifdef VK_KHR_surface if (!strcmp(name, "vkDestroySurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface"); return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr; } #endif #ifdef VK_KHR_swapchain if (!strcmp(name, "vkCreateSwapchainKHR")) { return (void*)dynCheck_entry_vkCreateSwapchainKHR; } if (!strcmp(name, "vkDestroySwapchainKHR")) { return (void*)dynCheck_entry_vkDestroySwapchainKHR; } if (!strcmp(name, "vkGetSwapchainImagesKHR")) { return (void*)dynCheck_entry_vkGetSwapchainImagesKHR; } if (!strcmp(name, "vkAcquireNextImageKHR")) { return (void*)dynCheck_entry_vkAcquireNextImageKHR; } if (!strcmp(name, "vkQueuePresentKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr; } if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR")) { return (void*)dynCheck_entry_vkGetDeviceGroupPresentCapabilitiesKHR; } if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR")) { return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModesKHR; } if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr; } if (!strcmp(name, "vkAcquireNextImage2KHR")) { return (void*)dynCheck_entry_vkAcquireNextImage2KHR; } #endif #ifdef VK_KHR_display if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr; } if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr; } if (!strcmp(name, "vkGetDisplayModePropertiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr; } if (!strcmp(name, "vkCreateDisplayModeKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr; } if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr; } if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_display"); return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr; } #endif #ifdef VK_KHR_display_swapchain if (!strcmp(name, "vkCreateSharedSwapchainsKHR")) { return (void*)dynCheck_entry_vkCreateSharedSwapchainsKHR; } #endif #ifdef VK_KHR_xlib_surface if (!strcmp(name, "vkCreateXlibSurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface"); return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xlib_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_xcb_surface if (!strcmp(name, "vkCreateXcbSurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface"); return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_xcb_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_wayland_surface if (!strcmp(name, "vkCreateWaylandSurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface"); return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_wayland_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_mir_surface if (!strcmp(name, "vkCreateMirSurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface"); return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_mir_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_android_surface if (!strcmp(name, "vkCreateAndroidSurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_android_surface"); return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr; } #endif #ifdef VK_KHR_win32_surface if (!strcmp(name, "vkCreateWin32SurfaceKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface"); return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_win32_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_get_physical_device_properties2 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr; } #endif #ifdef VK_KHR_device_group if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR")) { return (void*)dynCheck_entry_vkGetDeviceGroupPeerMemoryFeaturesKHR; } if (!strcmp(name, "vkCmdSetDeviceMaskKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group"); return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr; } if (!strcmp(name, "vkCmdDispatchBaseKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group"); return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr; } #endif #ifdef VK_KHR_maintenance1 if (!strcmp(name, "vkTrimCommandPoolKHR")) { return (void*)dynCheck_entry_vkTrimCommandPoolKHR; } #endif #ifdef VK_KHR_device_group_creation if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_device_group_creation"); return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr; } #endif #ifdef VK_KHR_external_memory_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_memory_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_memory_win32 if (!strcmp(name, "vkGetMemoryWin32HandleKHR")) { return (void*)dynCheck_entry_vkGetMemoryWin32HandleKHR; } if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR")) { return (void*)dynCheck_entry_vkGetMemoryWin32HandlePropertiesKHR; } #endif #ifdef VK_KHR_external_memory_fd if (!strcmp(name, "vkGetMemoryFdKHR")) { return (void*)dynCheck_entry_vkGetMemoryFdKHR; } if (!strcmp(name, "vkGetMemoryFdPropertiesKHR")) { return (void*)dynCheck_entry_vkGetMemoryFdPropertiesKHR; } #endif #ifdef VK_KHR_external_semaphore_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_semaphore_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_semaphore_win32 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR")) { return (void*)dynCheck_entry_vkImportSemaphoreWin32HandleKHR; } if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR")) { return (void*)dynCheck_entry_vkGetSemaphoreWin32HandleKHR; } #endif #ifdef VK_KHR_external_semaphore_fd if (!strcmp(name, "vkImportSemaphoreFdKHR")) { return (void*)dynCheck_entry_vkImportSemaphoreFdKHR; } if (!strcmp(name, "vkGetSemaphoreFdKHR")) { return (void*)dynCheck_entry_vkGetSemaphoreFdKHR; } #endif #ifdef VK_KHR_push_descriptor if (!strcmp(name, "vkCmdPushDescriptorSetKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor"); return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr; } if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_push_descriptor"); return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr; } #endif #ifdef VK_KHR_descriptor_update_template if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR")) { return (void*)dynCheck_entry_vkCreateDescriptorUpdateTemplateKHR; } if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR")) { return (void*)dynCheck_entry_vkDestroyDescriptorUpdateTemplateKHR; } if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR")) { return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateKHR; } #endif #ifdef VK_KHR_create_renderpass2 if (!strcmp(name, "vkCreateRenderPass2KHR")) { return (void*)dynCheck_entry_vkCreateRenderPass2KHR; } if (!strcmp(name, "vkCmdBeginRenderPass2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr; } if (!strcmp(name, "vkCmdNextSubpass2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr; } if (!strcmp(name, "vkCmdEndRenderPass2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr; } #endif #ifdef VK_KHR_shared_presentable_image if (!strcmp(name, "vkGetSwapchainStatusKHR")) { return (void*)dynCheck_entry_vkGetSwapchainStatusKHR; } #endif #ifdef VK_KHR_external_fence_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_external_fence_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_fence_win32 if (!strcmp(name, "vkImportFenceWin32HandleKHR")) { return (void*)dynCheck_entry_vkImportFenceWin32HandleKHR; } if (!strcmp(name, "vkGetFenceWin32HandleKHR")) { return (void*)dynCheck_entry_vkGetFenceWin32HandleKHR; } #endif #ifdef VK_KHR_external_fence_fd if (!strcmp(name, "vkImportFenceFdKHR")) { return (void*)dynCheck_entry_vkImportFenceFdKHR; } if (!strcmp(name, "vkGetFenceFdKHR")) { return (void*)dynCheck_entry_vkGetFenceFdKHR; } #endif #ifdef VK_KHR_get_surface_capabilities2 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_surface_capabilities2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr; } #endif #ifdef VK_KHR_get_display_properties2 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr; } if (!strcmp(name, "vkGetDisplayModeProperties2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr; } if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr; } #endif #ifdef VK_KHR_get_memory_requirements2 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR")) { return (void*)dynCheck_entry_vkGetImageMemoryRequirements2KHR; } if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR")) { return (void*)dynCheck_entry_vkGetBufferMemoryRequirements2KHR; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR")) { return (void*)dynCheck_entry_vkGetImageSparseMemoryRequirements2KHR; } #endif #ifdef VK_KHR_sampler_ycbcr_conversion if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR")) { return (void*)dynCheck_entry_vkCreateSamplerYcbcrConversionKHR; } if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR")) { return (void*)dynCheck_entry_vkDestroySamplerYcbcrConversionKHR; } #endif #ifdef VK_KHR_bind_memory2 if (!strcmp(name, "vkBindBufferMemory2KHR")) { return (void*)dynCheck_entry_vkBindBufferMemory2KHR; } if (!strcmp(name, "vkBindImageMemory2KHR")) { return (void*)dynCheck_entry_vkBindImageMemory2KHR; } #endif #ifdef VK_KHR_maintenance3 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR")) { return (void*)dynCheck_entry_vkGetDescriptorSetLayoutSupportKHR; } #endif #ifdef VK_KHR_draw_indirect_count if (!strcmp(name, "vkCmdDrawIndirectCountKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr; } if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr; } #endif #ifdef VK_ANDROID_native_buffer if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID")) { return (void*)dynCheck_entry_vkGetSwapchainGrallocUsageANDROID; } if (!strcmp(name, "vkAcquireImageANDROID")) { return (void*)dynCheck_entry_vkAcquireImageANDROID; } if (!strcmp(name, "vkQueueSignalReleaseImageANDROID")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_ANDROID_native_buffer"); return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr; } #endif #ifdef VK_EXT_debug_report if (!strcmp(name, "vkCreateDebugReportCallbackEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report"); return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr; } if (!strcmp(name, "vkDestroyDebugReportCallbackEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report"); return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr; } if (!strcmp(name, "vkDebugReportMessageEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_report"); return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr; } #endif #ifdef VK_EXT_debug_marker if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT")) { return (void*)dynCheck_entry_vkDebugMarkerSetObjectTagEXT; } if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT")) { return (void*)dynCheck_entry_vkDebugMarkerSetObjectNameEXT; } if (!strcmp(name, "vkCmdDebugMarkerBeginEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr; } if (!strcmp(name, "vkCmdDebugMarkerEndEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr; } if (!strcmp(name, "vkCmdDebugMarkerInsertEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr; } #endif #ifdef VK_AMD_draw_indirect_count if (!strcmp(name, "vkCmdDrawIndirectCountAMD")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr; } if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr; } #endif #ifdef VK_AMD_shader_info if (!strcmp(name, "vkGetShaderInfoAMD")) { return (void*)dynCheck_entry_vkGetShaderInfoAMD; } #endif #ifdef VK_NV_external_memory_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_external_memory_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr; } #endif #ifdef VK_NV_external_memory_win32 if (!strcmp(name, "vkGetMemoryWin32HandleNV")) { return (void*)dynCheck_entry_vkGetMemoryWin32HandleNV; } #endif #ifdef VK_NN_vi_surface if (!strcmp(name, "vkCreateViSurfaceNN")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NN_vi_surface"); return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr; } #endif #ifdef VK_EXT_conditional_rendering if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering"); return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr; } if (!strcmp(name, "vkCmdEndConditionalRenderingEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_conditional_rendering"); return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr; } #endif #ifdef VK_NVX_device_generated_commands if (!strcmp(name, "vkCmdProcessCommandsNVX")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr; } if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr; } if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX")) { return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNVX; } if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX")) { return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNVX; } if (!strcmp(name, "vkCreateObjectTableNVX")) { return (void*)dynCheck_entry_vkCreateObjectTableNVX; } if (!strcmp(name, "vkDestroyObjectTableNVX")) { return (void*)dynCheck_entry_vkDestroyObjectTableNVX; } if (!strcmp(name, "vkRegisterObjectsNVX")) { return (void*)dynCheck_entry_vkRegisterObjectsNVX; } if (!strcmp(name, "vkUnregisterObjectsNVX")) { return (void*)dynCheck_entry_vkUnregisterObjectsNVX; } if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr; } #endif #ifdef VK_NV_clip_space_w_scaling if (!strcmp(name, "vkCmdSetViewportWScalingNV")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_clip_space_w_scaling"); return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr; } #endif #ifdef VK_EXT_direct_mode_display if (!strcmp(name, "vkReleaseDisplayEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_direct_mode_display"); return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr; } #endif #ifdef VK_EXT_acquire_xlib_display if (!strcmp(name, "vkAcquireXlibDisplayEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display"); return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr; } if (!strcmp(name, "vkGetRandROutputDisplayEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_xlib_display"); return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr; } #endif #ifdef VK_EXT_display_surface_counter if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_display_surface_counter"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr; } #endif #ifdef VK_EXT_display_control if (!strcmp(name, "vkDisplayPowerControlEXT")) { return (void*)dynCheck_entry_vkDisplayPowerControlEXT; } if (!strcmp(name, "vkRegisterDeviceEventEXT")) { return (void*)dynCheck_entry_vkRegisterDeviceEventEXT; } if (!strcmp(name, "vkRegisterDisplayEventEXT")) { return (void*)dynCheck_entry_vkRegisterDisplayEventEXT; } if (!strcmp(name, "vkGetSwapchainCounterEXT")) { return (void*)dynCheck_entry_vkGetSwapchainCounterEXT; } #endif #ifdef VK_GOOGLE_display_timing if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE")) { return (void*)dynCheck_entry_vkGetRefreshCycleDurationGOOGLE; } if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE")) { return (void*)dynCheck_entry_vkGetPastPresentationTimingGOOGLE; } #endif #ifdef VK_EXT_discard_rectangles if (!strcmp(name, "vkCmdSetDiscardRectangleEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_discard_rectangles"); return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr; } #endif #ifdef VK_EXT_hdr_metadata if (!strcmp(name, "vkSetHdrMetadataEXT")) { return (void*)dynCheck_entry_vkSetHdrMetadataEXT; } #endif #ifdef VK_MVK_ios_surface if (!strcmp(name, "vkCreateIOSSurfaceMVK")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_ios_surface"); return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr; } #endif #ifdef VK_MVK_macos_surface if (!strcmp(name, "vkCreateMacOSSurfaceMVK")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_macos_surface"); return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr; } #endif #ifdef VK_EXT_debug_utils if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT")) { return (void*)dynCheck_entry_vkSetDebugUtilsObjectNameEXT; } if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT")) { return (void*)dynCheck_entry_vkSetDebugUtilsObjectTagEXT; } if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr; } if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr; } if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr; } #endif #ifdef VK_ANDROID_external_memory_android_hardware_buffer if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID")) { return (void*)dynCheck_entry_vkGetAndroidHardwareBufferPropertiesANDROID; } if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID")) { return (void*)dynCheck_entry_vkGetMemoryAndroidHardwareBufferANDROID; } #endif #ifdef VK_EXT_sample_locations if (!strcmp(name, "vkCmdSetSampleLocationsEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations"); return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations"); return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr; } #endif #ifdef VK_EXT_validation_cache if (!strcmp(name, "vkCreateValidationCacheEXT")) { return (void*)dynCheck_entry_vkCreateValidationCacheEXT; } if (!strcmp(name, "vkDestroyValidationCacheEXT")) { return (void*)dynCheck_entry_vkDestroyValidationCacheEXT; } if (!strcmp(name, "vkMergeValidationCachesEXT")) { return (void*)dynCheck_entry_vkMergeValidationCachesEXT; } if (!strcmp(name, "vkGetValidationCacheDataEXT")) { return (void*)dynCheck_entry_vkGetValidationCacheDataEXT; } #endif #ifdef VK_EXT_external_memory_host if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT")) { return (void*)dynCheck_entry_vkGetMemoryHostPointerPropertiesEXT; } #endif #ifdef VK_AMD_buffer_marker if (!strcmp(name, "vkCmdWriteBufferMarkerAMD")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_AMD_buffer_marker"); return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr; } #endif #ifdef VK_NV_device_diagnostic_checkpoints if (!strcmp(name, "vkCmdSetCheckpointNV")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints"); return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr; } if (!strcmp(name, "vkGetQueueCheckpointDataNV")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints"); return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr; } #endif #ifdef VK_GOOGLE_address_space if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE")) { return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE; } #endif #ifdef VK_GOOGLE_color_buffer if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE")) { return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE; } if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE")) { return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE; } #endif #ifdef VK_GOOGLE_sized_descriptor_update_template if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE")) { return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE; } #endif #ifdef VK_GOOGLE_async_command_buffers if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_create_resources_with_requirements if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE")) { return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE; } if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE")) { return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE; } #endif #ifdef VK_GOOGLE_address_space_info if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE")) { return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE; } #endif #ifdef VK_GOOGLE_free_memory_sync if (!strcmp(name, "vkFreeMemorySyncGOOGLE")) { return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE; } #endif #ifdef VK_GOOGLE_async_queue_submit if (!strcmp(name, "vkQueueHostSyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr; } if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE")) { bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr; } #endif return nullptr; } void* goldfish_vulkan_get_device_proc_address(VkDevice device, const char* name){ auto resources = ResourceTracker::get(); bool has1_1OrHigher = resources->getApiVersionFromDevice(device) >= VK_API_VERSION_1_1; #ifdef VK_VERSION_1_0 if (!strcmp(name, "vkCreateInstance")) { return (void*)entry_vkCreateInstance; } if (!strcmp(name, "vkDestroyInstance")) { return (void*)entry_vkDestroyInstance; } if (!strcmp(name, "vkEnumeratePhysicalDevices")) { return (void*)entry_vkEnumeratePhysicalDevices; } if (!strcmp(name, "vkGetPhysicalDeviceFeatures")) { return (void*)entry_vkGetPhysicalDeviceFeatures; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceFormatProperties; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceImageFormatProperties; } if (!strcmp(name, "vkGetPhysicalDeviceProperties")) { return (void*)entry_vkGetPhysicalDeviceProperties; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties")) { return (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties")) { return (void*)entry_vkGetPhysicalDeviceMemoryProperties; } if (!strcmp(name, "vkGetInstanceProcAddr")) { return (void*)entry_vkGetInstanceProcAddr; } if (!strcmp(name, "vkGetDeviceProcAddr")) { return (void*)entry_vkGetDeviceProcAddr; } if (!strcmp(name, "vkCreateDevice")) { return (void*)entry_vkCreateDevice; } if (!strcmp(name, "vkDestroyDevice")) { return (void*)entry_vkDestroyDevice; } if (!strcmp(name, "vkEnumerateInstanceExtensionProperties")) { return (void*)entry_vkEnumerateInstanceExtensionProperties; } if (!strcmp(name, "vkEnumerateDeviceExtensionProperties")) { return (void*)entry_vkEnumerateDeviceExtensionProperties; } if (!strcmp(name, "vkEnumerateInstanceLayerProperties")) { return (void*)entry_vkEnumerateInstanceLayerProperties; } if (!strcmp(name, "vkEnumerateDeviceLayerProperties")) { return (void*)entry_vkEnumerateDeviceLayerProperties; } if (!strcmp(name, "vkGetDeviceQueue")) { return (void*)entry_vkGetDeviceQueue; } if (!strcmp(name, "vkQueueSubmit")) { return (void*)entry_vkQueueSubmit; } if (!strcmp(name, "vkQueueWaitIdle")) { return (void*)entry_vkQueueWaitIdle; } if (!strcmp(name, "vkDeviceWaitIdle")) { return (void*)entry_vkDeviceWaitIdle; } if (!strcmp(name, "vkAllocateMemory")) { return (void*)entry_vkAllocateMemory; } if (!strcmp(name, "vkFreeMemory")) { return (void*)entry_vkFreeMemory; } if (!strcmp(name, "vkMapMemory")) { return (void*)entry_vkMapMemory; } if (!strcmp(name, "vkUnmapMemory")) { return (void*)entry_vkUnmapMemory; } if (!strcmp(name, "vkFlushMappedMemoryRanges")) { return (void*)entry_vkFlushMappedMemoryRanges; } if (!strcmp(name, "vkInvalidateMappedMemoryRanges")) { return (void*)entry_vkInvalidateMappedMemoryRanges; } if (!strcmp(name, "vkGetDeviceMemoryCommitment")) { return (void*)entry_vkGetDeviceMemoryCommitment; } if (!strcmp(name, "vkBindBufferMemory")) { return (void*)entry_vkBindBufferMemory; } if (!strcmp(name, "vkBindImageMemory")) { return (void*)entry_vkBindImageMemory; } if (!strcmp(name, "vkGetBufferMemoryRequirements")) { return (void*)entry_vkGetBufferMemoryRequirements; } if (!strcmp(name, "vkGetImageMemoryRequirements")) { return (void*)entry_vkGetImageMemoryRequirements; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements")) { return (void*)entry_vkGetImageSparseMemoryRequirements; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties")) { return (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties; } if (!strcmp(name, "vkQueueBindSparse")) { return (void*)entry_vkQueueBindSparse; } if (!strcmp(name, "vkCreateFence")) { return (void*)entry_vkCreateFence; } if (!strcmp(name, "vkDestroyFence")) { return (void*)entry_vkDestroyFence; } if (!strcmp(name, "vkResetFences")) { return (void*)entry_vkResetFences; } if (!strcmp(name, "vkGetFenceStatus")) { return (void*)entry_vkGetFenceStatus; } if (!strcmp(name, "vkWaitForFences")) { return (void*)entry_vkWaitForFences; } if (!strcmp(name, "vkCreateSemaphore")) { return (void*)entry_vkCreateSemaphore; } if (!strcmp(name, "vkDestroySemaphore")) { return (void*)entry_vkDestroySemaphore; } if (!strcmp(name, "vkCreateEvent")) { return (void*)entry_vkCreateEvent; } if (!strcmp(name, "vkDestroyEvent")) { return (void*)entry_vkDestroyEvent; } if (!strcmp(name, "vkGetEventStatus")) { return (void*)entry_vkGetEventStatus; } if (!strcmp(name, "vkSetEvent")) { return (void*)entry_vkSetEvent; } if (!strcmp(name, "vkResetEvent")) { return (void*)entry_vkResetEvent; } if (!strcmp(name, "vkCreateQueryPool")) { return (void*)entry_vkCreateQueryPool; } if (!strcmp(name, "vkDestroyQueryPool")) { return (void*)entry_vkDestroyQueryPool; } if (!strcmp(name, "vkGetQueryPoolResults")) { return (void*)entry_vkGetQueryPoolResults; } if (!strcmp(name, "vkCreateBuffer")) { return (void*)entry_vkCreateBuffer; } if (!strcmp(name, "vkDestroyBuffer")) { return (void*)entry_vkDestroyBuffer; } if (!strcmp(name, "vkCreateBufferView")) { return (void*)entry_vkCreateBufferView; } if (!strcmp(name, "vkDestroyBufferView")) { return (void*)entry_vkDestroyBufferView; } if (!strcmp(name, "vkCreateImage")) { return (void*)entry_vkCreateImage; } if (!strcmp(name, "vkDestroyImage")) { return (void*)entry_vkDestroyImage; } if (!strcmp(name, "vkGetImageSubresourceLayout")) { return (void*)entry_vkGetImageSubresourceLayout; } if (!strcmp(name, "vkCreateImageView")) { return (void*)entry_vkCreateImageView; } if (!strcmp(name, "vkDestroyImageView")) { return (void*)entry_vkDestroyImageView; } if (!strcmp(name, "vkCreateShaderModule")) { return (void*)entry_vkCreateShaderModule; } if (!strcmp(name, "vkDestroyShaderModule")) { return (void*)entry_vkDestroyShaderModule; } if (!strcmp(name, "vkCreatePipelineCache")) { return (void*)entry_vkCreatePipelineCache; } if (!strcmp(name, "vkDestroyPipelineCache")) { return (void*)entry_vkDestroyPipelineCache; } if (!strcmp(name, "vkGetPipelineCacheData")) { return (void*)entry_vkGetPipelineCacheData; } if (!strcmp(name, "vkMergePipelineCaches")) { return (void*)entry_vkMergePipelineCaches; } if (!strcmp(name, "vkCreateGraphicsPipelines")) { return (void*)entry_vkCreateGraphicsPipelines; } if (!strcmp(name, "vkCreateComputePipelines")) { return (void*)entry_vkCreateComputePipelines; } if (!strcmp(name, "vkDestroyPipeline")) { return (void*)entry_vkDestroyPipeline; } if (!strcmp(name, "vkCreatePipelineLayout")) { return (void*)entry_vkCreatePipelineLayout; } if (!strcmp(name, "vkDestroyPipelineLayout")) { return (void*)entry_vkDestroyPipelineLayout; } if (!strcmp(name, "vkCreateSampler")) { return (void*)entry_vkCreateSampler; } if (!strcmp(name, "vkDestroySampler")) { return (void*)entry_vkDestroySampler; } if (!strcmp(name, "vkCreateDescriptorSetLayout")) { return (void*)entry_vkCreateDescriptorSetLayout; } if (!strcmp(name, "vkDestroyDescriptorSetLayout")) { return (void*)entry_vkDestroyDescriptorSetLayout; } if (!strcmp(name, "vkCreateDescriptorPool")) { return (void*)entry_vkCreateDescriptorPool; } if (!strcmp(name, "vkDestroyDescriptorPool")) { return (void*)entry_vkDestroyDescriptorPool; } if (!strcmp(name, "vkResetDescriptorPool")) { return (void*)entry_vkResetDescriptorPool; } if (!strcmp(name, "vkAllocateDescriptorSets")) { return (void*)entry_vkAllocateDescriptorSets; } if (!strcmp(name, "vkFreeDescriptorSets")) { return (void*)entry_vkFreeDescriptorSets; } if (!strcmp(name, "vkUpdateDescriptorSets")) { return (void*)entry_vkUpdateDescriptorSets; } if (!strcmp(name, "vkCreateFramebuffer")) { return (void*)entry_vkCreateFramebuffer; } if (!strcmp(name, "vkDestroyFramebuffer")) { return (void*)entry_vkDestroyFramebuffer; } if (!strcmp(name, "vkCreateRenderPass")) { return (void*)entry_vkCreateRenderPass; } if (!strcmp(name, "vkDestroyRenderPass")) { return (void*)entry_vkDestroyRenderPass; } if (!strcmp(name, "vkGetRenderAreaGranularity")) { return (void*)entry_vkGetRenderAreaGranularity; } if (!strcmp(name, "vkCreateCommandPool")) { return (void*)entry_vkCreateCommandPool; } if (!strcmp(name, "vkDestroyCommandPool")) { return (void*)entry_vkDestroyCommandPool; } if (!strcmp(name, "vkResetCommandPool")) { return (void*)entry_vkResetCommandPool; } if (!strcmp(name, "vkAllocateCommandBuffers")) { return (void*)entry_vkAllocateCommandBuffers; } if (!strcmp(name, "vkFreeCommandBuffers")) { return (void*)entry_vkFreeCommandBuffers; } if (!strcmp(name, "vkBeginCommandBuffer")) { return (void*)entry_vkBeginCommandBuffer; } if (!strcmp(name, "vkEndCommandBuffer")) { return (void*)entry_vkEndCommandBuffer; } if (!strcmp(name, "vkResetCommandBuffer")) { return (void*)entry_vkResetCommandBuffer; } if (!strcmp(name, "vkCmdBindPipeline")) { return (void*)entry_vkCmdBindPipeline; } if (!strcmp(name, "vkCmdSetViewport")) { return (void*)entry_vkCmdSetViewport; } if (!strcmp(name, "vkCmdSetScissor")) { return (void*)entry_vkCmdSetScissor; } if (!strcmp(name, "vkCmdSetLineWidth")) { return (void*)entry_vkCmdSetLineWidth; } if (!strcmp(name, "vkCmdSetDepthBias")) { return (void*)entry_vkCmdSetDepthBias; } if (!strcmp(name, "vkCmdSetBlendConstants")) { return (void*)entry_vkCmdSetBlendConstants; } if (!strcmp(name, "vkCmdSetDepthBounds")) { return (void*)entry_vkCmdSetDepthBounds; } if (!strcmp(name, "vkCmdSetStencilCompareMask")) { return (void*)entry_vkCmdSetStencilCompareMask; } if (!strcmp(name, "vkCmdSetStencilWriteMask")) { return (void*)entry_vkCmdSetStencilWriteMask; } if (!strcmp(name, "vkCmdSetStencilReference")) { return (void*)entry_vkCmdSetStencilReference; } if (!strcmp(name, "vkCmdBindDescriptorSets")) { return (void*)entry_vkCmdBindDescriptorSets; } if (!strcmp(name, "vkCmdBindIndexBuffer")) { return (void*)entry_vkCmdBindIndexBuffer; } if (!strcmp(name, "vkCmdBindVertexBuffers")) { return (void*)entry_vkCmdBindVertexBuffers; } if (!strcmp(name, "vkCmdDraw")) { return (void*)entry_vkCmdDraw; } if (!strcmp(name, "vkCmdDrawIndexed")) { return (void*)entry_vkCmdDrawIndexed; } if (!strcmp(name, "vkCmdDrawIndirect")) { return (void*)entry_vkCmdDrawIndirect; } if (!strcmp(name, "vkCmdDrawIndexedIndirect")) { return (void*)entry_vkCmdDrawIndexedIndirect; } if (!strcmp(name, "vkCmdDispatch")) { return (void*)entry_vkCmdDispatch; } if (!strcmp(name, "vkCmdDispatchIndirect")) { return (void*)entry_vkCmdDispatchIndirect; } if (!strcmp(name, "vkCmdCopyBuffer")) { return (void*)entry_vkCmdCopyBuffer; } if (!strcmp(name, "vkCmdCopyImage")) { return (void*)entry_vkCmdCopyImage; } if (!strcmp(name, "vkCmdBlitImage")) { return (void*)entry_vkCmdBlitImage; } if (!strcmp(name, "vkCmdCopyBufferToImage")) { return (void*)entry_vkCmdCopyBufferToImage; } if (!strcmp(name, "vkCmdCopyImageToBuffer")) { return (void*)entry_vkCmdCopyImageToBuffer; } if (!strcmp(name, "vkCmdUpdateBuffer")) { return (void*)entry_vkCmdUpdateBuffer; } if (!strcmp(name, "vkCmdFillBuffer")) { return (void*)entry_vkCmdFillBuffer; } if (!strcmp(name, "vkCmdClearColorImage")) { return (void*)entry_vkCmdClearColorImage; } if (!strcmp(name, "vkCmdClearDepthStencilImage")) { return (void*)entry_vkCmdClearDepthStencilImage; } if (!strcmp(name, "vkCmdClearAttachments")) { return (void*)entry_vkCmdClearAttachments; } if (!strcmp(name, "vkCmdResolveImage")) { return (void*)entry_vkCmdResolveImage; } if (!strcmp(name, "vkCmdSetEvent")) { return (void*)entry_vkCmdSetEvent; } if (!strcmp(name, "vkCmdResetEvent")) { return (void*)entry_vkCmdResetEvent; } if (!strcmp(name, "vkCmdWaitEvents")) { return (void*)entry_vkCmdWaitEvents; } if (!strcmp(name, "vkCmdPipelineBarrier")) { return (void*)entry_vkCmdPipelineBarrier; } if (!strcmp(name, "vkCmdBeginQuery")) { return (void*)entry_vkCmdBeginQuery; } if (!strcmp(name, "vkCmdEndQuery")) { return (void*)entry_vkCmdEndQuery; } if (!strcmp(name, "vkCmdResetQueryPool")) { return (void*)entry_vkCmdResetQueryPool; } if (!strcmp(name, "vkCmdWriteTimestamp")) { return (void*)entry_vkCmdWriteTimestamp; } if (!strcmp(name, "vkCmdCopyQueryPoolResults")) { return (void*)entry_vkCmdCopyQueryPoolResults; } if (!strcmp(name, "vkCmdPushConstants")) { return (void*)entry_vkCmdPushConstants; } if (!strcmp(name, "vkCmdBeginRenderPass")) { return (void*)entry_vkCmdBeginRenderPass; } if (!strcmp(name, "vkCmdNextSubpass")) { return (void*)entry_vkCmdNextSubpass; } if (!strcmp(name, "vkCmdEndRenderPass")) { return (void*)entry_vkCmdEndRenderPass; } if (!strcmp(name, "vkCmdExecuteCommands")) { return (void*)entry_vkCmdExecuteCommands; } #endif #ifdef VK_VERSION_1_1 if (!strcmp(name, "vkEnumerateInstanceVersion")) { return has1_1OrHigher ? (void*)entry_vkEnumerateInstanceVersion : nullptr; } if (!strcmp(name, "vkBindBufferMemory2")) { return has1_1OrHigher ? (void*)entry_vkBindBufferMemory2 : nullptr; } if (!strcmp(name, "vkBindImageMemory2")) { return has1_1OrHigher ? (void*)entry_vkBindImageMemory2 : nullptr; } if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeatures")) { return has1_1OrHigher ? (void*)entry_vkGetDeviceGroupPeerMemoryFeatures : nullptr; } if (!strcmp(name, "vkCmdSetDeviceMask")) { return has1_1OrHigher ? (void*)entry_vkCmdSetDeviceMask : nullptr; } if (!strcmp(name, "vkCmdDispatchBase")) { return has1_1OrHigher ? (void*)entry_vkCmdDispatchBase : nullptr; } if (!strcmp(name, "vkEnumeratePhysicalDeviceGroups")) { return nullptr; } if (!strcmp(name, "vkGetImageMemoryRequirements2")) { return has1_1OrHigher ? (void*)entry_vkGetImageMemoryRequirements2 : nullptr; } if (!strcmp(name, "vkGetBufferMemoryRequirements2")) { return has1_1OrHigher ? (void*)entry_vkGetBufferMemoryRequirements2 : nullptr; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements2")) { return has1_1OrHigher ? (void*)entry_vkGetImageSparseMemoryRequirements2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFeatures2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFeatures2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceFormatProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2 : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2 : nullptr; } if (!strcmp(name, "vkTrimCommandPool")) { return has1_1OrHigher ? (void*)entry_vkTrimCommandPool : nullptr; } if (!strcmp(name, "vkGetDeviceQueue2")) { return has1_1OrHigher ? (void*)entry_vkGetDeviceQueue2 : nullptr; } if (!strcmp(name, "vkCreateSamplerYcbcrConversion")) { return has1_1OrHigher ? (void*)entry_vkCreateSamplerYcbcrConversion : nullptr; } if (!strcmp(name, "vkDestroySamplerYcbcrConversion")) { return has1_1OrHigher ? (void*)entry_vkDestroySamplerYcbcrConversion : nullptr; } if (!strcmp(name, "vkCreateDescriptorUpdateTemplate")) { return has1_1OrHigher ? (void*)entry_vkCreateDescriptorUpdateTemplate : nullptr; } if (!strcmp(name, "vkDestroyDescriptorUpdateTemplate")) { return has1_1OrHigher ? (void*)entry_vkDestroyDescriptorUpdateTemplate : nullptr; } if (!strcmp(name, "vkUpdateDescriptorSetWithTemplate")) { return has1_1OrHigher ? (void*)entry_vkUpdateDescriptorSetWithTemplate : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferProperties")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalBufferProperties : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalFenceProperties")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalFenceProperties : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphoreProperties")) { return has1_1OrHigher ? (void*)entry_vkGetPhysicalDeviceExternalSemaphoreProperties : nullptr; } if (!strcmp(name, "vkGetDescriptorSetLayoutSupport")) { return has1_1OrHigher ? (void*)entry_vkGetDescriptorSetLayoutSupport : nullptr; } #endif #ifdef VK_KHR_surface if (!strcmp(name, "vkDestroySurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface"); return hasExt ? (void*)entry_vkDestroySurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceSupportKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormatsKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormatsKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModesKHR : nullptr; } #endif #ifdef VK_KHR_swapchain if (!strcmp(name, "vkCreateSwapchainKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkCreateSwapchainKHR : nullptr; } if (!strcmp(name, "vkDestroySwapchainKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkDestroySwapchainKHR : nullptr; } if (!strcmp(name, "vkGetSwapchainImagesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkGetSwapchainImagesKHR : nullptr; } if (!strcmp(name, "vkAcquireNextImageKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkAcquireNextImageKHR : nullptr; } if (!strcmp(name, "vkQueuePresentKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkQueuePresentKHR : nullptr; } if (!strcmp(name, "vkGetDeviceGroupPresentCapabilitiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkGetDeviceGroupPresentCapabilitiesKHR : nullptr; } if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModesKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDevicePresentRectanglesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkGetPhysicalDevicePresentRectanglesKHR : nullptr; } if (!strcmp(name, "vkAcquireNextImage2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_swapchain"); return hasExt ? (void*)entry_vkAcquireNextImage2KHR : nullptr; } #endif #ifdef VK_KHR_display if (!strcmp(name, "vkGetPhysicalDeviceDisplayPropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPropertiesKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR : nullptr; } if (!strcmp(name, "vkGetDisplayPlaneSupportedDisplaysKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetDisplayPlaneSupportedDisplaysKHR : nullptr; } if (!strcmp(name, "vkGetDisplayModePropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetDisplayModePropertiesKHR : nullptr; } if (!strcmp(name, "vkCreateDisplayModeKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkCreateDisplayModeKHR : nullptr; } if (!strcmp(name, "vkGetDisplayPlaneCapabilitiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilitiesKHR : nullptr; } if (!strcmp(name, "vkCreateDisplayPlaneSurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display"); return hasExt ? (void*)entry_vkCreateDisplayPlaneSurfaceKHR : nullptr; } #endif #ifdef VK_KHR_display_swapchain if (!strcmp(name, "vkCreateSharedSwapchainsKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_display_swapchain"); return hasExt ? (void*)entry_vkCreateSharedSwapchainsKHR : nullptr; } #endif #ifdef VK_KHR_xlib_surface if (!strcmp(name, "vkCreateXlibSurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface"); return hasExt ? (void*)entry_vkCreateXlibSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceXlibPresentationSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xlib_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceXlibPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_xcb_surface if (!strcmp(name, "vkCreateXcbSurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface"); return hasExt ? (void*)entry_vkCreateXcbSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceXcbPresentationSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_xcb_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceXcbPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_wayland_surface if (!strcmp(name, "vkCreateWaylandSurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface"); return hasExt ? (void*)entry_vkCreateWaylandSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceWaylandPresentationSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_wayland_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_mir_surface if (!strcmp(name, "vkCreateMirSurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface"); return hasExt ? (void*)entry_vkCreateMirSurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMirPresentationSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_mir_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceMirPresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_android_surface if (!strcmp(name, "vkCreateAndroidSurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_android_surface"); return hasExt ? (void*)entry_vkCreateAndroidSurfaceKHR : nullptr; } #endif #ifdef VK_KHR_win32_surface if (!strcmp(name, "vkCreateWin32SurfaceKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface"); return hasExt ? (void*)entry_vkCreateWin32SurfaceKHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_win32_surface"); return hasExt ? (void*)entry_vkGetPhysicalDeviceWin32PresentationSupportKHR : nullptr; } #endif #ifdef VK_KHR_get_physical_device_properties2 if (!strcmp(name, "vkGetPhysicalDeviceFeatures2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceFeatures2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceFormatProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceFormatProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceImageFormatProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceImageFormatProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMemoryProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceMemoryProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_physical_device_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR : nullptr; } #endif #ifdef VK_KHR_device_group if (!strcmp(name, "vkGetDeviceGroupPeerMemoryFeaturesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group"); return hasExt ? (void*)entry_vkGetDeviceGroupPeerMemoryFeaturesKHR : nullptr; } if (!strcmp(name, "vkCmdSetDeviceMaskKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group"); return hasExt ? (void*)entry_vkCmdSetDeviceMaskKHR : nullptr; } if (!strcmp(name, "vkCmdDispatchBaseKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group"); return hasExt ? (void*)entry_vkCmdDispatchBaseKHR : nullptr; } #endif #ifdef VK_KHR_maintenance1 if (!strcmp(name, "vkTrimCommandPoolKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance1"); return hasExt ? (void*)entry_vkTrimCommandPoolKHR : nullptr; } #endif #ifdef VK_KHR_device_group_creation if (!strcmp(name, "vkEnumeratePhysicalDeviceGroupsKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_device_group_creation"); return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceGroupsKHR : nullptr; } #endif #ifdef VK_KHR_external_memory_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalBufferPropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalBufferPropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_memory_win32 if (!strcmp(name, "vkGetMemoryWin32HandleKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"); return hasExt ? (void*)entry_vkGetMemoryWin32HandleKHR : nullptr; } if (!strcmp(name, "vkGetMemoryWin32HandlePropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_win32"); return hasExt ? (void*)entry_vkGetMemoryWin32HandlePropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_memory_fd if (!strcmp(name, "vkGetMemoryFdKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"); return hasExt ? (void*)entry_vkGetMemoryFdKHR : nullptr; } if (!strcmp(name, "vkGetMemoryFdPropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_memory_fd"); return hasExt ? (void*)entry_vkGetMemoryFdPropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_semaphore_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_semaphore_win32 if (!strcmp(name, "vkImportSemaphoreWin32HandleKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"); return hasExt ? (void*)entry_vkImportSemaphoreWin32HandleKHR : nullptr; } if (!strcmp(name, "vkGetSemaphoreWin32HandleKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_win32"); return hasExt ? (void*)entry_vkGetSemaphoreWin32HandleKHR : nullptr; } #endif #ifdef VK_KHR_external_semaphore_fd if (!strcmp(name, "vkImportSemaphoreFdKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"); return hasExt ? (void*)entry_vkImportSemaphoreFdKHR : nullptr; } if (!strcmp(name, "vkGetSemaphoreFdKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_semaphore_fd"); return hasExt ? (void*)entry_vkGetSemaphoreFdKHR : nullptr; } #endif #ifdef VK_KHR_push_descriptor if (!strcmp(name, "vkCmdPushDescriptorSetKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor"); return hasExt ? (void*)entry_vkCmdPushDescriptorSetKHR : nullptr; } if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_push_descriptor"); return hasExt ? (void*)entry_vkCmdPushDescriptorSetWithTemplateKHR : nullptr; } #endif #ifdef VK_KHR_descriptor_update_template if (!strcmp(name, "vkCreateDescriptorUpdateTemplateKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"); return hasExt ? (void*)entry_vkCreateDescriptorUpdateTemplateKHR : nullptr; } if (!strcmp(name, "vkDestroyDescriptorUpdateTemplateKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"); return hasExt ? (void*)entry_vkDestroyDescriptorUpdateTemplateKHR : nullptr; } if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_descriptor_update_template"); return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateKHR : nullptr; } #endif #ifdef VK_KHR_create_renderpass2 if (!strcmp(name, "vkCreateRenderPass2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCreateRenderPass2KHR : nullptr; } if (!strcmp(name, "vkCmdBeginRenderPass2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCmdBeginRenderPass2KHR : nullptr; } if (!strcmp(name, "vkCmdNextSubpass2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCmdNextSubpass2KHR : nullptr; } if (!strcmp(name, "vkCmdEndRenderPass2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"); return hasExt ? (void*)entry_vkCmdEndRenderPass2KHR : nullptr; } #endif #ifdef VK_KHR_shared_presentable_image if (!strcmp(name, "vkGetSwapchainStatusKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_shared_presentable_image"); return hasExt ? (void*)entry_vkGetSwapchainStatusKHR : nullptr; } #endif #ifdef VK_KHR_external_fence_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalFencePropertiesKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalFencePropertiesKHR : nullptr; } #endif #ifdef VK_KHR_external_fence_win32 if (!strcmp(name, "vkImportFenceWin32HandleKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"); return hasExt ? (void*)entry_vkImportFenceWin32HandleKHR : nullptr; } if (!strcmp(name, "vkGetFenceWin32HandleKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_win32"); return hasExt ? (void*)entry_vkGetFenceWin32HandleKHR : nullptr; } #endif #ifdef VK_KHR_external_fence_fd if (!strcmp(name, "vkImportFenceFdKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"); return hasExt ? (void*)entry_vkImportFenceFdKHR : nullptr; } if (!strcmp(name, "vkGetFenceFdKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_external_fence_fd"); return hasExt ? (void*)entry_vkGetFenceFdKHR : nullptr; } #endif #ifdef VK_KHR_get_surface_capabilities2 if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceSurfaceFormats2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_surface_capabilities2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceFormats2KHR : nullptr; } #endif #ifdef VK_KHR_get_display_properties2 if (!strcmp(name, "vkGetPhysicalDeviceDisplayProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayProperties2KHR : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR : nullptr; } if (!strcmp(name, "vkGetDisplayModeProperties2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetDisplayModeProperties2KHR : nullptr; } if (!strcmp(name, "vkGetDisplayPlaneCapabilities2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_display_properties2"); return hasExt ? (void*)entry_vkGetDisplayPlaneCapabilities2KHR : nullptr; } #endif #ifdef VK_KHR_get_memory_requirements2 if (!strcmp(name, "vkGetImageMemoryRequirements2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"); return hasExt ? (void*)entry_vkGetImageMemoryRequirements2KHR : nullptr; } if (!strcmp(name, "vkGetBufferMemoryRequirements2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"); return hasExt ? (void*)entry_vkGetBufferMemoryRequirements2KHR : nullptr; } if (!strcmp(name, "vkGetImageSparseMemoryRequirements2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_get_memory_requirements2"); return hasExt ? (void*)entry_vkGetImageSparseMemoryRequirements2KHR : nullptr; } #endif #ifdef VK_KHR_sampler_ycbcr_conversion if (!strcmp(name, "vkCreateSamplerYcbcrConversionKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"); return hasExt ? (void*)entry_vkCreateSamplerYcbcrConversionKHR : nullptr; } if (!strcmp(name, "vkDestroySamplerYcbcrConversionKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_sampler_ycbcr_conversion"); return hasExt ? (void*)entry_vkDestroySamplerYcbcrConversionKHR : nullptr; } #endif #ifdef VK_KHR_bind_memory2 if (!strcmp(name, "vkBindBufferMemory2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"); return hasExt ? (void*)entry_vkBindBufferMemory2KHR : nullptr; } if (!strcmp(name, "vkBindImageMemory2KHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_bind_memory2"); return hasExt ? (void*)entry_vkBindImageMemory2KHR : nullptr; } #endif #ifdef VK_KHR_maintenance3 if (!strcmp(name, "vkGetDescriptorSetLayoutSupportKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance3"); return hasExt ? (void*)entry_vkGetDescriptorSetLayoutSupportKHR : nullptr; } #endif #ifdef VK_KHR_draw_indirect_count if (!strcmp(name, "vkCmdDrawIndirectCountKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndirectCountKHR : nullptr; } if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR")) { bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountKHR : nullptr; } #endif #ifdef VK_ANDROID_native_buffer if (!strcmp(name, "vkGetSwapchainGrallocUsageANDROID")) { bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"); return hasExt ? (void*)entry_vkGetSwapchainGrallocUsageANDROID : nullptr; } if (!strcmp(name, "vkAcquireImageANDROID")) { bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"); return hasExt ? (void*)entry_vkAcquireImageANDROID : nullptr; } if (!strcmp(name, "vkQueueSignalReleaseImageANDROID")) { bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_native_buffer"); return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROID : nullptr; } #endif #ifdef VK_EXT_debug_report if (!strcmp(name, "vkCreateDebugReportCallbackEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report"); return hasExt ? (void*)entry_vkCreateDebugReportCallbackEXT : nullptr; } if (!strcmp(name, "vkDestroyDebugReportCallbackEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report"); return hasExt ? (void*)entry_vkDestroyDebugReportCallbackEXT : nullptr; } if (!strcmp(name, "vkDebugReportMessageEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_report"); return hasExt ? (void*)entry_vkDebugReportMessageEXT : nullptr; } #endif #ifdef VK_EXT_debug_marker if (!strcmp(name, "vkDebugMarkerSetObjectTagEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkDebugMarkerSetObjectTagEXT : nullptr; } if (!strcmp(name, "vkDebugMarkerSetObjectNameEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkDebugMarkerSetObjectNameEXT : nullptr; } if (!strcmp(name, "vkCmdDebugMarkerBeginEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkCmdDebugMarkerBeginEXT : nullptr; } if (!strcmp(name, "vkCmdDebugMarkerEndEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkCmdDebugMarkerEndEXT : nullptr; } if (!strcmp(name, "vkCmdDebugMarkerInsertEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_marker"); return hasExt ? (void*)entry_vkCmdDebugMarkerInsertEXT : nullptr; } #endif #ifdef VK_AMD_draw_indirect_count if (!strcmp(name, "vkCmdDrawIndirectCountAMD")) { bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndirectCountAMD : nullptr; } if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD")) { bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count"); return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCountAMD : nullptr; } #endif #ifdef VK_AMD_shader_info if (!strcmp(name, "vkGetShaderInfoAMD")) { bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_shader_info"); return hasExt ? (void*)entry_vkGetShaderInfoAMD : nullptr; } #endif #ifdef VK_NV_external_memory_capabilities if (!strcmp(name, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_capabilities"); return hasExt ? (void*)entry_vkGetPhysicalDeviceExternalImageFormatPropertiesNV : nullptr; } #endif #ifdef VK_NV_external_memory_win32 if (!strcmp(name, "vkGetMemoryWin32HandleNV")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_win32"); return hasExt ? (void*)entry_vkGetMemoryWin32HandleNV : nullptr; } #endif #ifdef VK_NN_vi_surface if (!strcmp(name, "vkCreateViSurfaceNN")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NN_vi_surface"); return hasExt ? (void*)entry_vkCreateViSurfaceNN : nullptr; } #endif #ifdef VK_EXT_conditional_rendering if (!strcmp(name, "vkCmdBeginConditionalRenderingEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering"); return hasExt ? (void*)entry_vkCmdBeginConditionalRenderingEXT : nullptr; } if (!strcmp(name, "vkCmdEndConditionalRenderingEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering"); return hasExt ? (void*)entry_vkCmdEndConditionalRenderingEXT : nullptr; } #endif #ifdef VK_NVX_device_generated_commands if (!strcmp(name, "vkCmdProcessCommandsNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkCmdProcessCommandsNVX : nullptr; } if (!strcmp(name, "vkCmdReserveSpaceForCommandsNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkCmdReserveSpaceForCommandsNVX : nullptr; } if (!strcmp(name, "vkCreateIndirectCommandsLayoutNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNVX : nullptr; } if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNVX : nullptr; } if (!strcmp(name, "vkCreateObjectTableNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkCreateObjectTableNVX : nullptr; } if (!strcmp(name, "vkDestroyObjectTableNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkDestroyObjectTableNVX : nullptr; } if (!strcmp(name, "vkRegisterObjectsNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkRegisterObjectsNVX : nullptr; } if (!strcmp(name, "vkUnregisterObjectsNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkUnregisterObjectsNVX : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_device_generated_commands"); return hasExt ? (void*)entry_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX : nullptr; } #endif #ifdef VK_NV_clip_space_w_scaling if (!strcmp(name, "vkCmdSetViewportWScalingNV")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling"); return hasExt ? (void*)entry_vkCmdSetViewportWScalingNV : nullptr; } #endif #ifdef VK_EXT_direct_mode_display if (!strcmp(name, "vkReleaseDisplayEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_direct_mode_display"); return hasExt ? (void*)entry_vkReleaseDisplayEXT : nullptr; } #endif #ifdef VK_EXT_acquire_xlib_display if (!strcmp(name, "vkAcquireXlibDisplayEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display"); return hasExt ? (void*)entry_vkAcquireXlibDisplayEXT : nullptr; } if (!strcmp(name, "vkGetRandROutputDisplayEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_xlib_display"); return hasExt ? (void*)entry_vkGetRandROutputDisplayEXT : nullptr; } #endif #ifdef VK_EXT_display_surface_counter if (!strcmp(name, "vkGetPhysicalDeviceSurfaceCapabilities2EXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_surface_counter"); return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfaceCapabilities2EXT : nullptr; } #endif #ifdef VK_EXT_display_control if (!strcmp(name, "vkDisplayPowerControlEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control"); return hasExt ? (void*)entry_vkDisplayPowerControlEXT : nullptr; } if (!strcmp(name, "vkRegisterDeviceEventEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control"); return hasExt ? (void*)entry_vkRegisterDeviceEventEXT : nullptr; } if (!strcmp(name, "vkRegisterDisplayEventEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control"); return hasExt ? (void*)entry_vkRegisterDisplayEventEXT : nullptr; } if (!strcmp(name, "vkGetSwapchainCounterEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_display_control"); return hasExt ? (void*)entry_vkGetSwapchainCounterEXT : nullptr; } #endif #ifdef VK_GOOGLE_display_timing if (!strcmp(name, "vkGetRefreshCycleDurationGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"); return hasExt ? (void*)entry_vkGetRefreshCycleDurationGOOGLE : nullptr; } if (!strcmp(name, "vkGetPastPresentationTimingGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_display_timing"); return hasExt ? (void*)entry_vkGetPastPresentationTimingGOOGLE : nullptr; } #endif #ifdef VK_EXT_discard_rectangles if (!strcmp(name, "vkCmdSetDiscardRectangleEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles"); return hasExt ? (void*)entry_vkCmdSetDiscardRectangleEXT : nullptr; } #endif #ifdef VK_EXT_hdr_metadata if (!strcmp(name, "vkSetHdrMetadataEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_hdr_metadata"); return hasExt ? (void*)entry_vkSetHdrMetadataEXT : nullptr; } #endif #ifdef VK_MVK_ios_surface if (!strcmp(name, "vkCreateIOSSurfaceMVK")) { bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_ios_surface"); return hasExt ? (void*)entry_vkCreateIOSSurfaceMVK : nullptr; } #endif #ifdef VK_MVK_macos_surface if (!strcmp(name, "vkCreateMacOSSurfaceMVK")) { bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_macos_surface"); return hasExt ? (void*)entry_vkCreateMacOSSurfaceMVK : nullptr; } #endif #ifdef VK_EXT_debug_utils if (!strcmp(name, "vkSetDebugUtilsObjectNameEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkSetDebugUtilsObjectNameEXT : nullptr; } if (!strcmp(name, "vkSetDebugUtilsObjectTagEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkSetDebugUtilsObjectTagEXT : nullptr; } if (!strcmp(name, "vkQueueBeginDebugUtilsLabelEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkQueueBeginDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkQueueEndDebugUtilsLabelEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkQueueEndDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkQueueInsertDebugUtilsLabelEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkQueueInsertDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCmdBeginDebugUtilsLabelEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCmdBeginDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCmdEndDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCmdInsertDebugUtilsLabelEXT : nullptr; } if (!strcmp(name, "vkCreateDebugUtilsMessengerEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkCreateDebugUtilsMessengerEXT : nullptr; } if (!strcmp(name, "vkDestroyDebugUtilsMessengerEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkDestroyDebugUtilsMessengerEXT : nullptr; } if (!strcmp(name, "vkSubmitDebugUtilsMessageEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_debug_utils"); return hasExt ? (void*)entry_vkSubmitDebugUtilsMessageEXT : nullptr; } #endif #ifdef VK_ANDROID_external_memory_android_hardware_buffer if (!strcmp(name, "vkGetAndroidHardwareBufferPropertiesANDROID")) { bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"); return hasExt ? (void*)entry_vkGetAndroidHardwareBufferPropertiesANDROID : nullptr; } if (!strcmp(name, "vkGetMemoryAndroidHardwareBufferANDROID")) { bool hasExt = resources->hasDeviceExtension(device, "VK_ANDROID_external_memory_android_hardware_buffer"); return hasExt ? (void*)entry_vkGetMemoryAndroidHardwareBufferANDROID : nullptr; } #endif #ifdef VK_EXT_sample_locations if (!strcmp(name, "vkCmdSetSampleLocationsEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations"); return hasExt ? (void*)entry_vkCmdSetSampleLocationsEXT : nullptr; } if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_sample_locations"); return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr; } #endif #ifdef VK_EXT_validation_cache if (!strcmp(name, "vkCreateValidationCacheEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache"); return hasExt ? (void*)entry_vkCreateValidationCacheEXT : nullptr; } if (!strcmp(name, "vkDestroyValidationCacheEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache"); return hasExt ? (void*)entry_vkDestroyValidationCacheEXT : nullptr; } if (!strcmp(name, "vkMergeValidationCachesEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache"); return hasExt ? (void*)entry_vkMergeValidationCachesEXT : nullptr; } if (!strcmp(name, "vkGetValidationCacheDataEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_validation_cache"); return hasExt ? (void*)entry_vkGetValidationCacheDataEXT : nullptr; } #endif #ifdef VK_EXT_external_memory_host if (!strcmp(name, "vkGetMemoryHostPointerPropertiesEXT")) { bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_external_memory_host"); return hasExt ? (void*)entry_vkGetMemoryHostPointerPropertiesEXT : nullptr; } #endif #ifdef VK_AMD_buffer_marker if (!strcmp(name, "vkCmdWriteBufferMarkerAMD")) { bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_buffer_marker"); return hasExt ? (void*)entry_vkCmdWriteBufferMarkerAMD : nullptr; } #endif #ifdef VK_NV_device_diagnostic_checkpoints if (!strcmp(name, "vkCmdSetCheckpointNV")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints"); return hasExt ? (void*)entry_vkCmdSetCheckpointNV : nullptr; } if (!strcmp(name, "vkGetQueueCheckpointDataNV")) { bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints"); return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr; } #endif #ifdef VK_GOOGLE_address_space if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space"); return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_color_buffer if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"); return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr; } if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_color_buffer"); return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_sized_descriptor_update_template if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_sized_descriptor_update_template"); return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_async_command_buffers if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_command_buffers"); return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_create_resources_with_requirements if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"); return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr; } if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_create_resources_with_requirements"); return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_address_space_info if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_address_space_info"); return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_free_memory_sync if (!strcmp(name, "vkFreeMemorySyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_free_memory_sync"); return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr; } #endif #ifdef VK_GOOGLE_async_queue_submit if (!strcmp(name, "vkQueueHostSyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr; } if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr; } if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE")) { bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_async_queue_submit"); return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr; } #endif return nullptr; } } // namespace goldfish_vk