18517 lines
733 KiB
C++
18517 lines
733 KiB
C++
// 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 registry/vulkan/scripts/genvk.py -registry registry/vulkan/xml/vk.xml cereal -o ../qemu/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
|
|
// Please do not modify directly;
|
|
// re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
|
|
// or directly from Python by defining:
|
|
// VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
|
|
// VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
|
|
// CEREAL_OUTPUT_DIR: Where to put the generated sources.
|
|
// python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
|
|
|
|
#include "func_table.h"
|
|
|
|
|
|
#include "VkEncoder.h"
|
|
#include "../OpenglSystemCommon/HostConnection.h"
|
|
#include "ResourceTracker.h"
|
|
|
|
#include "goldfish_vk_private_defs.h"
|
|
|
|
#include <log/log.h>
|
|
#include <cstring>
|
|
|
|
// 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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateInstance_VkResult_return = (VkResult)0;
|
|
vkCreateInstance_VkResult_return = vkEnc->vkCreateInstance(pCreateInfo, pAllocator, pInstance, true /* do lock */);
|
|
return vkCreateInstance_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyInstance(
|
|
VkInstance instance,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyInstance");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyInstance(instance, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkEnumeratePhysicalDevices(
|
|
VkInstance instance,
|
|
uint32_t* pPhysicalDeviceCount,
|
|
VkPhysicalDevice* pPhysicalDevices)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceFormatProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkFormat format,
|
|
VkFormatProperties* pFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceImageFormatProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkFormat format,
|
|
VkImageType type,
|
|
VkImageTiling tiling,
|
|
VkImageUsageFlags usage,
|
|
VkImageCreateFlags flags,
|
|
VkImageFormatProperties* pImageFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceImageFormatProperties_VkResult_return = vkEnc->vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
|
|
}
|
|
static void entry_vkGetPhysicalDeviceProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceProperties* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceProperties(physicalDevice, pProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceQueueFamilyProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pQueueFamilyPropertyCount,
|
|
VkQueueFamilyProperties* pQueueFamilyProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceMemoryProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceMemoryProperties* pMemoryProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, true /* do lock */);
|
|
}
|
|
static PFN_vkVoidFunction entry_vkGetInstanceProcAddr(
|
|
VkInstance instance,
|
|
const char* pName)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetInstanceProcAddr");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
|
|
vkGetInstanceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetInstanceProcAddr(instance, pName, true /* do lock */);
|
|
return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
|
|
}
|
|
static PFN_vkVoidFunction entry_vkGetDeviceProcAddr(
|
|
VkDevice device,
|
|
const char* pName)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceProcAddr");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
|
|
vkGetDeviceProcAddr_PFN_vkVoidFunction_return = vkEnc->vkGetDeviceProcAddr(device, pName, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDevice_VkResult_return = (VkResult)0;
|
|
vkCreateDevice_VkResult_return = vkEnc->vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, true /* do lock */);
|
|
return vkCreateDevice_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyDevice(
|
|
VkDevice device,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyDevice");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDevice(device, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkEnumerateInstanceExtensionProperties(
|
|
const char* pLayerName,
|
|
uint32_t* pPropertyCount,
|
|
VkExtensionProperties* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
|
|
vkEnumerateInstanceLayerProperties_VkResult_return = vkEnc->vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, true /* do lock */);
|
|
return vkEnumerateInstanceLayerProperties_VkResult_return;
|
|
}
|
|
static VkResult entry_vkEnumerateDeviceLayerProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pPropertyCount,
|
|
VkLayerProperties* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
|
|
vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkEnumerateDeviceLayerProperties_VkResult_return;
|
|
}
|
|
static void entry_vkGetDeviceQueue(
|
|
VkDevice device,
|
|
uint32_t queueFamilyIndex,
|
|
uint32_t queueIndex,
|
|
VkQueue* pQueue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceQueue");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkQueueSubmit(
|
|
VkQueue queue,
|
|
uint32_t submitCount,
|
|
const VkSubmitInfo* pSubmits,
|
|
VkFence fence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueSubmit");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
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 = ResourceTracker::getQueueEncoder(queue);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
|
|
vkDeviceWaitIdle_VkResult_return = vkEnc->vkDeviceWaitIdle(device, true /* do lock */);
|
|
return vkDeviceWaitIdle_VkResult_return;
|
|
}
|
|
static VkResult entry_vkAllocateMemory(
|
|
VkDevice device,
|
|
const VkMemoryAllocateInfo* pAllocateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkDeviceMemory* pMemory)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAllocateMemory");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkMapMemory_VkResult_return = (VkResult)0;
|
|
vkMapMemory_VkResult_return = vkEnc->vkMapMemory(device, memory, offset, size, flags, ppData, true /* do lock */);
|
|
return vkMapMemory_VkResult_return;
|
|
}
|
|
static void entry_vkUnmapMemory(
|
|
VkDevice device,
|
|
VkDeviceMemory memory)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkUnmapMemory");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUnmapMemory(device, memory, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkFlushMappedMemoryRanges(
|
|
VkDevice device,
|
|
uint32_t memoryRangeCount,
|
|
const VkMappedMemoryRange* pMemoryRanges)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
|
|
vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
|
|
return vkFlushMappedMemoryRanges_VkResult_return;
|
|
}
|
|
static VkResult entry_vkInvalidateMappedMemoryRanges(
|
|
VkDevice device,
|
|
uint32_t memoryRangeCount,
|
|
const VkMappedMemoryRange* pMemoryRanges)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
|
|
vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, true /* do lock */);
|
|
return vkInvalidateMappedMemoryRanges_VkResult_return;
|
|
}
|
|
static void entry_vkGetDeviceMemoryCommitment(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
VkDeviceSize* pCommittedMemoryInBytes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkBindBufferMemory(
|
|
VkDevice device,
|
|
VkBuffer buffer,
|
|
VkDeviceMemory memory,
|
|
VkDeviceSize memoryOffset)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBindBufferMemory");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkQueueBindSparse(
|
|
VkQueue queue,
|
|
uint32_t bindInfoCount,
|
|
const VkBindSparseInfo* pBindInfo,
|
|
VkFence fence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueBindSparse");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
|
|
vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
|
|
return vkQueueBindSparse_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateFence(
|
|
VkDevice device,
|
|
const VkFenceCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkFence* pFence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateFence");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyFence(device, fence, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkResetFences(
|
|
VkDevice device,
|
|
uint32_t fenceCount,
|
|
const VkFence* pFences)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkResetFences");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
|
|
vkGetFenceStatus_VkResult_return = vkEnc->vkGetFenceStatus(device, fence, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateEvent_VkResult_return = (VkResult)0;
|
|
vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, true /* do lock */);
|
|
return vkCreateEvent_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyEvent(
|
|
VkDevice device,
|
|
VkEvent event,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyEvent");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyEvent(device, event, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetEventStatus(
|
|
VkDevice device,
|
|
VkEvent event)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetEventStatus");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
|
|
vkGetEventStatus_VkResult_return = vkEnc->vkGetEventStatus(device, event, true /* do lock */);
|
|
return vkGetEventStatus_VkResult_return;
|
|
}
|
|
static VkResult entry_vkSetEvent(
|
|
VkDevice device,
|
|
VkEvent event)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetEvent");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetEvent_VkResult_return = (VkResult)0;
|
|
vkSetEvent_VkResult_return = vkEnc->vkSetEvent(device, event, true /* do lock */);
|
|
return vkSetEvent_VkResult_return;
|
|
}
|
|
static VkResult entry_vkResetEvent(
|
|
VkDevice device,
|
|
VkEvent event)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkResetEvent");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkResetEvent_VkResult_return = (VkResult)0;
|
|
vkResetEvent_VkResult_return = vkEnc->vkResetEvent(device, event, true /* do lock */);
|
|
return vkResetEvent_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateQueryPool(
|
|
VkDevice device,
|
|
const VkQueryPoolCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkQueryPool* pQueryPool)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateQueryPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
|
|
vkCreateQueryPool_VkResult_return = vkEnc->vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, true /* do lock */);
|
|
return vkCreateQueryPool_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyQueryPool(
|
|
VkDevice device,
|
|
VkQueryPool queryPool,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyQueryPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyQueryPool(device, queryPool, pAllocator, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
|
|
vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, true /* do lock */);
|
|
return vkGetQueryPoolResults_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateBuffer(
|
|
VkDevice device,
|
|
const VkBufferCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkBuffer* pBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateBuffer");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
|
|
vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(device, pCreateInfo, pAllocator, pView, true /* do lock */);
|
|
return vkCreateBufferView_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyBufferView(
|
|
VkDevice device,
|
|
VkBufferView bufferView,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyBufferView");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyBufferView(device, bufferView, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateImage(
|
|
VkDevice device,
|
|
const VkImageCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkImage* pImage)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateImage");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateImageView(
|
|
VkDevice device,
|
|
const VkImageViewCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkImageView* pView)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateImageView");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyImageView(device, imageView, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateShaderModule(
|
|
VkDevice device,
|
|
const VkShaderModuleCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkShaderModule* pShaderModule)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateShaderModule");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
|
|
vkCreateShaderModule_VkResult_return = vkEnc->vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, true /* do lock */);
|
|
return vkCreateShaderModule_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyShaderModule(
|
|
VkDevice device,
|
|
VkShaderModule shaderModule,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyShaderModule");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyShaderModule(device, shaderModule, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreatePipelineCache(
|
|
VkDevice device,
|
|
const VkPipelineCacheCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPipelineCache* pPipelineCache)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreatePipelineCache");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
|
|
vkCreatePipelineCache_VkResult_return = vkEnc->vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, true /* do lock */);
|
|
return vkCreatePipelineCache_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyPipelineCache(
|
|
VkDevice device,
|
|
VkPipelineCache pipelineCache,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyPipelineCache");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyPipelineCache(device, pipelineCache, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetPipelineCacheData(
|
|
VkDevice device,
|
|
VkPipelineCache pipelineCache,
|
|
size_t* pDataSize,
|
|
void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPipelineCacheData");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
|
|
vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, true /* do lock */);
|
|
return vkGetPipelineCacheData_VkResult_return;
|
|
}
|
|
static VkResult entry_vkMergePipelineCaches(
|
|
VkDevice device,
|
|
VkPipelineCache dstCache,
|
|
uint32_t srcCacheCount,
|
|
const VkPipelineCache* pSrcCaches)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkMergePipelineCaches");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
|
|
vkMergePipelineCaches_VkResult_return = vkEnc->vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
|
|
auto resources = ResourceTracker::get();
|
|
vkCreateGraphicsPipelines_VkResult_return = resources->on_vkCreateGraphicsPipelines(vkEnc, VK_SUCCESS, 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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
|
|
vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
|
|
return vkCreateComputePipelines_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyPipeline(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyPipeline");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyPipeline(device, pipeline, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreatePipelineLayout(
|
|
VkDevice device,
|
|
const VkPipelineLayoutCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPipelineLayout* pPipelineLayout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreatePipelineLayout");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
|
|
vkCreatePipelineLayout_VkResult_return = vkEnc->vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, true /* do lock */);
|
|
return vkCreatePipelineLayout_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyPipelineLayout(
|
|
VkDevice device,
|
|
VkPipelineLayout pipelineLayout,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyPipelineLayout");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateSampler(
|
|
VkDevice device,
|
|
const VkSamplerCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSampler* pSampler)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateSampler");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroySampler(device, sampler, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateDescriptorSetLayout(
|
|
VkDevice device,
|
|
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkDescriptorSetLayout* pSetLayout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
auto resources = ResourceTracker::get();
|
|
resources->on_vkDestroyDescriptorSetLayout(vkEnc, device, descriptorSetLayout, pAllocator);
|
|
}
|
|
static VkResult entry_vkCreateDescriptorPool(
|
|
VkDevice device,
|
|
const VkDescriptorPoolCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkDescriptorPool* pDescriptorPool)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateDescriptorPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
|
|
vkCreateFramebuffer_VkResult_return = vkEnc->vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, true /* do lock */);
|
|
return vkCreateFramebuffer_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyFramebuffer(
|
|
VkDevice device,
|
|
VkFramebuffer framebuffer,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyFramebuffer");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyFramebuffer(device, framebuffer, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateRenderPass(
|
|
VkDevice device,
|
|
const VkRenderPassCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkRenderPass* pRenderPass)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateRenderPass");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
|
|
vkCreateRenderPass_VkResult_return = vkEnc->vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
|
|
return vkCreateRenderPass_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyRenderPass(
|
|
VkDevice device,
|
|
VkRenderPass renderPass,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyRenderPass");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyRenderPass(device, renderPass, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkGetRenderAreaGranularity(
|
|
VkDevice device,
|
|
VkRenderPass renderPass,
|
|
VkExtent2D* pGranularity)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetRenderAreaGranularity(device, renderPass, pGranularity, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateCommandPool(
|
|
VkDevice device,
|
|
const VkCommandPoolCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkCommandPool* pCommandPool)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateCommandPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
|
|
vkCreateCommandPool_VkResult_return = vkEnc->vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, true /* do lock */);
|
|
return vkCreateCommandPool_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyCommandPool(
|
|
VkDevice device,
|
|
VkCommandPool commandPool,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyCommandPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyCommandPool(device, commandPool, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkResetCommandPool(
|
|
VkDevice device,
|
|
VkCommandPool commandPool,
|
|
VkCommandPoolResetFlags flags)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkResetCommandPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
|
|
vkResetCommandPool_VkResult_return = vkEnc->vkResetCommandPool(device, commandPool, flags, true /* do lock */);
|
|
if (vkResetCommandPool_VkResult_return == VK_SUCCESS) {
|
|
ResourceTracker::get()->resetCommandPoolStagingInfo(commandPool);
|
|
}
|
|
return vkResetCommandPool_VkResult_return;
|
|
}
|
|
static VkResult entry_vkAllocateCommandBuffers(
|
|
VkDevice device,
|
|
const VkCommandBufferAllocateInfo* pAllocateInfo,
|
|
VkCommandBuffer* pCommandBuffers)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAllocateCommandBuffers");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
|
|
auto resources = ResourceTracker::get();
|
|
vkAllocateCommandBuffers_VkResult_return = resources->on_vkAllocateCommandBuffers(vkEnc, VK_SUCCESS, device, pAllocateInfo, pCommandBuffers);
|
|
if (vkAllocateCommandBuffers_VkResult_return == VK_SUCCESS) {
|
|
ResourceTracker::get()->addToCommandPool(pAllocateInfo->commandPool, pAllocateInfo->commandBufferCount, 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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkBeginCommandBuffer(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCommandBufferBeginInfo* pBeginInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBeginCommandBuffer");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetViewport(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstViewport,
|
|
uint32_t viewportCount,
|
|
const VkViewport* pViewports)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetViewport");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetScissor(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstScissor,
|
|
uint32_t scissorCount,
|
|
const VkRect2D* pScissors)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetScissor");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetLineWidth(
|
|
VkCommandBuffer commandBuffer,
|
|
float lineWidth)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetLineWidth");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetLineWidth(commandBuffer, lineWidth, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthBias(
|
|
VkCommandBuffer commandBuffer,
|
|
float depthBiasConstantFactor,
|
|
float depthBiasClamp,
|
|
float depthBiasSlopeFactor)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthBias");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetBlendConstants(
|
|
VkCommandBuffer commandBuffer,
|
|
const float blendConstants[4])
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetBlendConstants");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetBlendConstants(commandBuffer, blendConstants, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthBounds(
|
|
VkCommandBuffer commandBuffer,
|
|
float minDepthBounds,
|
|
float maxDepthBounds)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthBounds");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetStencilCompareMask(
|
|
VkCommandBuffer commandBuffer,
|
|
VkStencilFaceFlags faceMask,
|
|
uint32_t compareMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetStencilWriteMask(
|
|
VkCommandBuffer commandBuffer,
|
|
VkStencilFaceFlags faceMask,
|
|
uint32_t writeMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetStencilReference(
|
|
VkCommandBuffer commandBuffer,
|
|
VkStencilFaceFlags faceMask,
|
|
uint32_t reference)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilReference");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilReference(commandBuffer, faceMask, reference, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
auto resources = ResourceTracker::get();
|
|
resources->on_vkCmdBindDescriptorSets(vkEnc, 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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBindVertexBuffers(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstBinding,
|
|
uint32_t bindingCount,
|
|
const VkBuffer* pBuffers,
|
|
const VkDeviceSize* pOffsets)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDraw(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t vertexCount,
|
|
uint32_t instanceCount,
|
|
uint32_t firstVertex,
|
|
uint32_t firstInstance)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDraw");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawIndirect(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
uint32_t drawCount,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirect");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawIndexedIndirect(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
uint32_t drawCount,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDispatch(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t groupCountX,
|
|
uint32_t groupCountY,
|
|
uint32_t groupCountZ)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDispatch");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDispatchIndirect(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDispatchIndirect");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDispatchIndirect(commandBuffer, buffer, offset, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyBuffer(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer srcBuffer,
|
|
VkBuffer dstBuffer,
|
|
uint32_t regionCount,
|
|
const VkBufferCopy* pRegions)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyBuffer");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyBufferToImage(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer srcBuffer,
|
|
VkImage dstImage,
|
|
VkImageLayout dstImageLayout,
|
|
uint32_t regionCount,
|
|
const VkBufferImageCopy* pRegions)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyImageToBuffer(
|
|
VkCommandBuffer commandBuffer,
|
|
VkImage srcImage,
|
|
VkImageLayout srcImageLayout,
|
|
VkBuffer dstBuffer,
|
|
uint32_t regionCount,
|
|
const VkBufferImageCopy* pRegions)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdUpdateBuffer(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer dstBuffer,
|
|
VkDeviceSize dstOffset,
|
|
VkDeviceSize dataSize,
|
|
const void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdUpdateBuffer");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdFillBuffer(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer dstBuffer,
|
|
VkDeviceSize dstOffset,
|
|
VkDeviceSize size,
|
|
uint32_t data)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdFillBuffer");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdClearAttachments(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t attachmentCount,
|
|
const VkClearAttachment* pAttachments,
|
|
uint32_t rectCount,
|
|
const VkClearRect* pRects)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdClearAttachments");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetEvent(
|
|
VkCommandBuffer commandBuffer,
|
|
VkEvent event,
|
|
VkPipelineStageFlags stageMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetEvent");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetEvent(commandBuffer, event, stageMask, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdResetEvent(
|
|
VkCommandBuffer commandBuffer,
|
|
VkEvent event,
|
|
VkPipelineStageFlags stageMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdResetEvent");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResetEvent(commandBuffer, event, stageMask, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBeginQuery(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t query,
|
|
VkQueryControlFlags flags)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginQuery");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginQuery(commandBuffer, queryPool, query, flags, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndQuery(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t query)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndQuery");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndQuery(commandBuffer, queryPool, query, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdResetQueryPool(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery,
|
|
uint32_t queryCount)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdResetQueryPool");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdWriteTimestamp(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineStageFlagBits pipelineStage,
|
|
VkQueryPool queryPool,
|
|
uint32_t query)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdWriteTimestamp");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBeginRenderPass(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderPassBeginInfo* pRenderPassBegin,
|
|
VkSubpassContents contents)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderPass");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdNextSubpass(
|
|
VkCommandBuffer commandBuffer,
|
|
VkSubpassContents contents)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdNextSubpass");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdNextSubpass(commandBuffer, contents, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndRenderPass(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderPass");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderPass(commandBuffer, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdExecuteCommands(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t commandBufferCount,
|
|
const VkCommandBuffer* pCommandBuffers)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdExecuteCommands");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
auto resources = ResourceTracker::get();
|
|
resources->on_vkCmdExecuteCommands(vkEnc, commandBuffer, commandBufferCount, pCommandBuffers);
|
|
}
|
|
#endif
|
|
#ifdef VK_VERSION_1_1
|
|
static VkResult entry_vkEnumerateInstanceVersion(
|
|
uint32_t* pApiVersion)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
|
|
vkEnumerateInstanceVersion_VkResult_return = vkEnc->vkEnumerateInstanceVersion(pApiVersion, true /* do lock */);
|
|
return vkEnumerateInstanceVersion_VkResult_return;
|
|
}
|
|
static VkResult entry_vkBindBufferMemory2(
|
|
VkDevice device,
|
|
uint32_t bindInfoCount,
|
|
const VkBindBufferMemoryInfo* pBindInfos)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBindBufferMemory2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDeviceMask(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t deviceMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDeviceMask(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t deviceMask)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);
|
|
if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDeviceMask", "VK_VERSION_1_1");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDeviceMask");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDeviceMask(commandBuffer, deviceMask, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDispatchBase(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t baseGroupX,
|
|
uint32_t baseGroupY,
|
|
uint32_t baseGroupZ,
|
|
uint32_t groupCountX,
|
|
uint32_t groupCountY,
|
|
uint32_t groupCountZ)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);
|
|
if (resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1)
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDispatchBase", "VK_VERSION_1_1");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDispatchBase");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkEnumeratePhysicalDeviceGroups(
|
|
VkInstance instance,
|
|
uint32_t* pPhysicalDeviceGroupCount,
|
|
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
|
|
vkEnumeratePhysicalDeviceGroups_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
|
|
return vkEnumeratePhysicalDeviceGroups_VkResult_return;
|
|
}
|
|
static void entry_vkGetImageMemoryRequirements2(
|
|
VkDevice device,
|
|
const VkImageMemoryRequirementsInfo2* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
resources->on_vkGetImageMemoryRequirements2(vkEnc, device, pInfo, pMemoryRequirements);
|
|
}
|
|
static void entry_vkGetBufferMemoryRequirements2(
|
|
VkDevice device,
|
|
const VkBufferMemoryRequirementsInfo2* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceFeatures2(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceFeatures2* pFeatures)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceProperties2(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceProperties2* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceFormatProperties2(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkFormat format,
|
|
VkFormatProperties2* pFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
|
|
VkImageFormatProperties2* pImageFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceMemoryProperties2(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
|
|
uint32_t* pPropertyCount,
|
|
VkSparseImageFormatProperties2* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkTrimCommandPool(
|
|
VkDevice device,
|
|
VkCommandPool commandPool,
|
|
VkCommandPoolTrimFlags flags)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkTrimCommandPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkTrimCommandPool(device, commandPool, flags, true /* do lock */);
|
|
}
|
|
static void entry_vkGetDeviceQueue2(
|
|
VkDevice device,
|
|
const VkDeviceQueueInfo2* pQueueInfo,
|
|
VkQueue* pQueue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceQueue2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceQueue2(device, pQueueInfo, pQueue, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateSamplerYcbcrConversion(
|
|
VkDevice device,
|
|
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSamplerYcbcrConversion* pYcbcrConversion)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
|
|
vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
|
|
vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
|
|
return vkCreateDescriptorUpdateTemplate_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyDescriptorUpdateTemplate(
|
|
VkDevice device,
|
|
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkUpdateDescriptorSetWithTemplate(
|
|
VkDevice device,
|
|
VkDescriptorSet descriptorSet,
|
|
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
|
|
const void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceExternalFenceProperties(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
|
|
VkExternalFenceProperties* pExternalFenceProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetDescriptorSetLayoutSupport(
|
|
VkDevice device,
|
|
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
|
|
VkDescriptorSetLayoutSupport* pSupport)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_VERSION_1_2
|
|
static void entry_vkCmdDrawIndirectCount(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndirectCount(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCount", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirectCount");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawIndexedIndirectCount(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndexedIndirectCount(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCount", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCount");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateRenderPass2(
|
|
VkDevice device,
|
|
const VkRenderPassCreateInfo2* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkRenderPass* pRenderPass)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateRenderPass2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
|
|
vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
|
|
return vkCreateRenderPass2_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateRenderPass2(
|
|
VkDevice device,
|
|
const VkRenderPassCreateInfo2* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkRenderPass* pRenderPass)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateRenderPass2", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateRenderPass2");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
|
|
vkCreateRenderPass2_VkResult_return = vkEnc->vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
|
|
return vkCreateRenderPass2_VkResult_return;
|
|
}
|
|
static void entry_vkCmdBeginRenderPass2(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderPassBeginInfo* pRenderPassBegin,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginRenderPass2(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderPassBeginInfo* pRenderPassBegin,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderPass2", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdNextSubpass2(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdNextSubpass2(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdNextSubpass2", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdNextSubpass2");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndRenderPass2(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndRenderPass2(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderPass2", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderPass2");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkResetQueryPool(
|
|
VkDevice device,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery,
|
|
uint32_t queryCount)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkResetQueryPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkResetQueryPool(
|
|
VkDevice device,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery,
|
|
uint32_t queryCount)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkResetQueryPool", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkResetQueryPool");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkResetQueryPool(device, queryPool, firstQuery, queryCount, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetSemaphoreCounterValue(
|
|
VkDevice device,
|
|
VkSemaphore semaphore,
|
|
uint64_t* pValue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
|
|
return vkGetSemaphoreCounterValue_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetSemaphoreCounterValue(
|
|
VkDevice device,
|
|
VkSemaphore semaphore,
|
|
uint64_t* pValue)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValue", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValue");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(device, semaphore, pValue, true /* do lock */);
|
|
return vkGetSemaphoreCounterValue_VkResult_return;
|
|
}
|
|
static VkResult entry_vkWaitSemaphores(
|
|
VkDevice device,
|
|
const VkSemaphoreWaitInfo* pWaitInfo,
|
|
uint64_t timeout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkWaitSemaphores");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
|
|
vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
|
|
return vkWaitSemaphores_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkWaitSemaphores(
|
|
VkDevice device,
|
|
const VkSemaphoreWaitInfo* pWaitInfo,
|
|
uint64_t timeout)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkWaitSemaphores", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkWaitSemaphores");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
|
|
vkWaitSemaphores_VkResult_return = vkEnc->vkWaitSemaphores(device, pWaitInfo, timeout, true /* do lock */);
|
|
return vkWaitSemaphores_VkResult_return;
|
|
}
|
|
static VkResult entry_vkSignalSemaphore(
|
|
VkDevice device,
|
|
const VkSemaphoreSignalInfo* pSignalInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSignalSemaphore");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
|
|
vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
|
|
return vkSignalSemaphore_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkSignalSemaphore(
|
|
VkDevice device,
|
|
const VkSemaphoreSignalInfo* pSignalInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSignalSemaphore", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSignalSemaphore");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
|
|
vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(device, pSignalInfo, true /* do lock */);
|
|
return vkSignalSemaphore_VkResult_return;
|
|
}
|
|
static VkDeviceAddress entry_vkGetBufferDeviceAddress(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
|
|
return vkGetBufferDeviceAddress_VkDeviceAddress_return;
|
|
}
|
|
static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddress(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddress", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetBufferDeviceAddress");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(device, pInfo, true /* do lock */);
|
|
return vkGetBufferDeviceAddress_VkDeviceAddress_return;
|
|
}
|
|
static uint64_t entry_vkGetBufferOpaqueCaptureAddress(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
|
|
vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
|
|
return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
|
|
}
|
|
static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddress(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddress", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddress");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
|
|
vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(device, pInfo, true /* do lock */);
|
|
return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
|
|
}
|
|
static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddress(
|
|
VkDevice device,
|
|
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
|
|
vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
|
|
return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
|
|
}
|
|
static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress(
|
|
VkDevice device,
|
|
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_VERSION_1_2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddress", "VK_VERSION_1_2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddress");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
|
|
vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, true /* do lock */);
|
|
return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_surface
|
|
static void entry_vkDestroySurfaceKHR(
|
|
VkInstance instance,
|
|
VkSurfaceKHR surface,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroySurfaceKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroySurfaceKHR(instance, surface, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceSurfaceSupportKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex,
|
|
VkSurfaceKHR surface,
|
|
VkBool32* pSupported)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, true /* do lock */);
|
|
return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkSurfaceKHR surface,
|
|
VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
|
|
return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceSurfaceFormatsKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkSurfaceKHR surface,
|
|
uint32_t* pSurfaceFormatCount,
|
|
VkSurfaceFormatKHR* pSurfaceFormats)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
|
|
return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceSurfacePresentModesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkSurfaceKHR surface,
|
|
uint32_t* pPresentModeCount,
|
|
VkPresentModeKHR* pPresentModes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
|
|
vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
|
|
vkCreateSwapchainKHR_VkResult_return = vkEnc->vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, true /* do lock */);
|
|
return vkCreateSwapchainKHR_VkResult_return;
|
|
}
|
|
static void entry_vkDestroySwapchainKHR(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroySwapchainKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroySwapchainKHR(device, swapchain, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetSwapchainImagesKHR(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain,
|
|
uint32_t* pSwapchainImageCount,
|
|
VkImage* pSwapchainImages)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainImagesKHR_VkResult_return = vkEnc->vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
|
|
vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
|
|
vkAcquireNextImageKHR_VkResult_return = vkEnc->vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, true /* do lock */);
|
|
return vkAcquireNextImageKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkQueuePresentKHR(
|
|
VkQueue queue,
|
|
const VkPresentInfoKHR* pPresentInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueuePresentKHR");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
|
|
vkQueuePresentKHR_VkResult_return = vkEnc->vkQueuePresentKHR(queue, pPresentInfo, true /* do lock */);
|
|
return vkQueuePresentKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDeviceGroupPresentCapabilitiesKHR(
|
|
VkDevice device,
|
|
VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = vkEnc->vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, true /* do lock */);
|
|
return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDeviceGroupSurfacePresentModesKHR(
|
|
VkDevice device,
|
|
VkSurfaceKHR surface,
|
|
VkDeviceGroupPresentModeFlagsKHR* pModes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
|
|
vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
|
|
vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, true /* do lock */);
|
|
return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDevicePresentRectanglesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkSurfaceKHR surface,
|
|
uint32_t* pRectCount,
|
|
VkRect2D* pRects)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = vkEnc->vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, true /* do lock */);
|
|
return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkAcquireNextImage2KHR(
|
|
VkDevice device,
|
|
const VkAcquireNextImageInfoKHR* pAcquireInfo,
|
|
uint32_t* pImageIndex)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
|
|
vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
|
|
vkAcquireNextImage2KHR_VkResult_return = vkEnc->vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pPropertyCount,
|
|
VkDisplayPlanePropertiesKHR* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDisplayPlaneSupportedDisplaysKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t planeIndex,
|
|
uint32_t* pDisplayCount,
|
|
VkDisplayKHR* pDisplays)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
|
|
vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = vkEnc->vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, true /* do lock */);
|
|
return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDisplayModePropertiesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkDisplayKHR display,
|
|
uint32_t* pPropertyCount,
|
|
VkDisplayModePropertiesKHR* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetDisplayModePropertiesKHR_VkResult_return = vkEnc->vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
|
|
vkCreateDisplayModeKHR_VkResult_return = vkEnc->vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, true /* do lock */);
|
|
return vkCreateDisplayModeKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDisplayPlaneCapabilitiesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkDisplayModeKHR mode,
|
|
uint32_t planeIndex,
|
|
VkDisplayPlaneCapabilitiesKHR* pCapabilities)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, true /* do lock */);
|
|
return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateDisplayPlaneSurfaceKHR(
|
|
VkInstance instance,
|
|
const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
|
|
vkCreateDisplayPlaneSurfaceKHR_VkResult_return = vkEnc->vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
|
|
vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
|
|
vkCreateSharedSwapchainsKHR_VkResult_return = vkEnc->vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
|
|
vkCreateXlibSurfaceKHR_VkResult_return = vkEnc->vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateXlibSurfaceKHR_VkResult_return;
|
|
}
|
|
static VkBool32 entry_vkGetPhysicalDeviceXlibPresentationSupportKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex,
|
|
Display* dpy,
|
|
VisualID visualID)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
|
|
vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
|
|
vkCreateXcbSurfaceKHR_VkResult_return = vkEnc->vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
|
|
vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
|
|
vkCreateWaylandSurfaceKHR_VkResult_return = vkEnc->vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateWaylandSurfaceKHR_VkResult_return;
|
|
}
|
|
static VkBool32 entry_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex,
|
|
wl_display* display)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
|
|
vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, true /* do lock */);
|
|
return vkGetPhysicalDeviceWaylandPresentationSupportKHR_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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
|
|
vkCreateAndroidSurfaceKHR_VkResult_return = vkEnc->vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
|
|
vkCreateWin32SurfaceKHR_VkResult_return = vkEnc->vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateWin32SurfaceKHR_VkResult_return;
|
|
}
|
|
static VkBool32 entry_vkGetPhysicalDeviceWin32PresentationSupportKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
|
|
vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = vkEnc->vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, true /* do lock */);
|
|
return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
|
|
#endif
|
|
#ifdef VK_KHR_video_queue
|
|
static VkResult entry_vkGetPhysicalDeviceVideoCapabilitiesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkVideoProfileKHR* pVideoProfile,
|
|
VkVideoCapabilitiesKHR* pCapabilities)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoCapabilitiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, true /* do lock */);
|
|
return vkGetPhysicalDeviceVideoCapabilitiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
|
|
uint32_t* pVideoFormatPropertyCount,
|
|
VkVideoFormatPropertiesKHR* pVideoFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceVideoFormatPropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceVideoFormatPropertiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateVideoSessionKHR(
|
|
VkDevice device,
|
|
const VkVideoSessionCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkVideoSessionKHR* pVideoSession)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
|
|
vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
|
|
return vkCreateVideoSessionKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateVideoSessionKHR(
|
|
VkDevice device,
|
|
const VkVideoSessionCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkVideoSessionKHR* pVideoSession)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateVideoSessionKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateVideoSessionKHR_VkResult_return = (VkResult)0;
|
|
vkCreateVideoSessionKHR_VkResult_return = vkEnc->vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, true /* do lock */);
|
|
return vkCreateVideoSessionKHR_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyVideoSessionKHR(
|
|
VkDevice device,
|
|
VkVideoSessionKHR videoSession,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyVideoSessionKHR(
|
|
VkDevice device,
|
|
VkVideoSessionKHR videoSession,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyVideoSessionKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyVideoSessionKHR(device, videoSession, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetVideoSessionMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
VkVideoSessionKHR videoSession,
|
|
uint32_t* pVideoSessionMemoryRequirementsCount,
|
|
VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
|
|
vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
|
|
return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
VkVideoSessionKHR videoSession,
|
|
uint32_t* pVideoSessionMemoryRequirementsCount,
|
|
VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetVideoSessionMemoryRequirementsKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetVideoSessionMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = (VkResult)0;
|
|
vkGetVideoSessionMemoryRequirementsKHR_VkResult_return = vkEnc->vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, true /* do lock */);
|
|
return vkGetVideoSessionMemoryRequirementsKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkBindVideoSessionMemoryKHR(
|
|
VkDevice device,
|
|
VkVideoSessionKHR videoSession,
|
|
uint32_t videoSessionBindMemoryCount,
|
|
const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
|
|
vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
|
|
return vkBindVideoSessionMemoryKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkBindVideoSessionMemoryKHR(
|
|
VkDevice device,
|
|
VkVideoSessionKHR videoSession,
|
|
uint32_t videoSessionBindMemoryCount,
|
|
const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkBindVideoSessionMemoryKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkBindVideoSessionMemoryKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkBindVideoSessionMemoryKHR_VkResult_return = (VkResult)0;
|
|
vkBindVideoSessionMemoryKHR_VkResult_return = vkEnc->vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, true /* do lock */);
|
|
return vkBindVideoSessionMemoryKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateVideoSessionParametersKHR(
|
|
VkDevice device,
|
|
const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkVideoSessionParametersKHR* pVideoSessionParameters)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
|
|
vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
|
|
return vkCreateVideoSessionParametersKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateVideoSessionParametersKHR(
|
|
VkDevice device,
|
|
const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkVideoSessionParametersKHR* pVideoSessionParameters)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateVideoSessionParametersKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateVideoSessionParametersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
|
|
vkCreateVideoSessionParametersKHR_VkResult_return = vkEnc->vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, true /* do lock */);
|
|
return vkCreateVideoSessionParametersKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkUpdateVideoSessionParametersKHR(
|
|
VkDevice device,
|
|
VkVideoSessionParametersKHR videoSessionParameters,
|
|
const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
|
|
vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
|
|
return vkUpdateVideoSessionParametersKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkUpdateVideoSessionParametersKHR(
|
|
VkDevice device,
|
|
VkVideoSessionParametersKHR videoSessionParameters,
|
|
const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkUpdateVideoSessionParametersKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkUpdateVideoSessionParametersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkUpdateVideoSessionParametersKHR_VkResult_return = (VkResult)0;
|
|
vkUpdateVideoSessionParametersKHR_VkResult_return = vkEnc->vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, true /* do lock */);
|
|
return vkUpdateVideoSessionParametersKHR_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyVideoSessionParametersKHR(
|
|
VkDevice device,
|
|
VkVideoSessionParametersKHR videoSessionParameters,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyVideoSessionParametersKHR(
|
|
VkDevice device,
|
|
VkVideoSessionParametersKHR videoSessionParameters,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyVideoSessionParametersKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyVideoSessionParametersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBeginVideoCodingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoBeginCodingInfoKHR* pBeginInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginVideoCodingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoBeginCodingInfoKHR* pBeginInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginVideoCodingKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginVideoCodingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndVideoCodingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoEndCodingInfoKHR* pEndCodingInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndVideoCodingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoEndCodingInfoKHR* pEndCodingInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndVideoCodingKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndVideoCodingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdControlVideoCodingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoCodingControlInfoKHR* pCodingControlInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdControlVideoCodingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoCodingControlInfoKHR* pCodingControlInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdControlVideoCodingKHR", "VK_KHR_video_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdControlVideoCodingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_decode_queue
|
|
static void entry_vkCmdDecodeVideoKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoDecodeInfoKHR* pFrameInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDecodeVideoKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoDecodeInfoKHR* pFrameInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDecodeVideoKHR", "VK_KHR_video_decode_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDecodeVideoKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_dynamic_rendering
|
|
static void entry_vkCmdBeginRenderingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderingInfoKHR* pRenderingInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginRenderingKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderingInfoKHR* pRenderingInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderingKHR", "VK_KHR_dynamic_rendering");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderingKHR(commandBuffer, pRenderingInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndRenderingKHR(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndRenderingKHR(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderingKHR", "VK_KHR_dynamic_rendering");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderingKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderingKHR(commandBuffer, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceProperties2* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceFormatProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkFormat format,
|
|
VkFormatProperties2* pFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceImageFormatProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
|
|
VkImageFormatProperties2* pImageFormatProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceMemoryProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
|
|
uint32_t* pPropertyCount,
|
|
VkSparseImageFormatProperties2* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDeviceMaskKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t deviceMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDeviceMaskKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t deviceMask)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDeviceMaskKHR", "VK_KHR_device_group");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDispatchBaseKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t baseGroupX,
|
|
uint32_t baseGroupY,
|
|
uint32_t baseGroupZ,
|
|
uint32_t groupCountX,
|
|
uint32_t groupCountY,
|
|
uint32_t groupCountZ)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_device_group"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDispatchBaseKHR", "VK_KHR_device_group");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkTrimCommandPoolKHR(device, commandPool, flags, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_device_group_creation
|
|
static VkResult entry_vkEnumeratePhysicalDeviceGroupsKHR(
|
|
VkInstance instance,
|
|
uint32_t* pPhysicalDeviceGroupCount,
|
|
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
|
|
vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryWin32HandleKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
|
|
return vkGetMemoryWin32HandleKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetMemoryWin32HandlePropertiesKHR(
|
|
VkDevice device,
|
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
|
HANDLE handle,
|
|
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = vkEnc->vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryFdKHR_VkResult_return = vkEnc->vkGetMemoryFdKHR(device, pGetFdInfo, pFd, true /* do lock */);
|
|
return vkGetMemoryFdKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetMemoryFdPropertiesKHR(
|
|
VkDevice device,
|
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
|
int fd,
|
|
VkMemoryFdPropertiesKHR* pMemoryFdProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetMemoryFdPropertiesKHR_VkResult_return = vkEnc->vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkImportSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, true /* do lock */);
|
|
return vkImportSemaphoreWin32HandleKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetSemaphoreWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
|
HANDLE* pHandle)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreWin32HandleKHR_VkResult_return = vkEnc->vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdPushDescriptorSetKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineBindPoint pipelineBindPoint,
|
|
VkPipelineLayout layout,
|
|
uint32_t set,
|
|
uint32_t descriptorWriteCount,
|
|
const VkWriteDescriptorSet* pDescriptorWrites)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_push_descriptor"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdPushDescriptorSetKHR", "VK_KHR_push_descriptor");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdPushDescriptorSetWithTemplateKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
|
|
VkPipelineLayout layout,
|
|
uint32_t set,
|
|
const void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
|
|
VkPipelineLayout layout,
|
|
uint32_t set,
|
|
const void* pData)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_push_descriptor"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdPushDescriptorSetWithTemplateKHR", "VK_KHR_push_descriptor");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_shader_float16_int8
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
|
|
vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
|
|
vkCreateDescriptorUpdateTemplateKHR_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, true /* do lock */);
|
|
return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyDescriptorUpdateTemplateKHR(
|
|
VkDevice device,
|
|
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkUpdateDescriptorSetWithTemplateKHR(
|
|
VkDevice device,
|
|
VkDescriptorSet descriptorSet,
|
|
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
|
|
const void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_imageless_framebuffer
|
|
#endif
|
|
#ifdef VK_KHR_create_renderpass2
|
|
static VkResult entry_vkCreateRenderPass2KHR(
|
|
VkDevice device,
|
|
const VkRenderPassCreateInfo2* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkRenderPass* pRenderPass)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
|
|
vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
|
|
return vkCreateRenderPass2KHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateRenderPass2KHR(
|
|
VkDevice device,
|
|
const VkRenderPassCreateInfo2* 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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
|
|
vkCreateRenderPass2KHR_VkResult_return = vkEnc->vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, true /* do lock */);
|
|
return vkCreateRenderPass2KHR_VkResult_return;
|
|
}
|
|
static void entry_vkCmdBeginRenderPass2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderPassBeginInfo* pRenderPassBegin,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginRenderPass2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkRenderPassBeginInfo* pRenderPassBegin,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginRenderPass2KHR", "VK_KHR_create_renderpass2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdNextSubpass2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdNextSubpass2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassBeginInfo* pSubpassBeginInfo,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdNextSubpass2KHR", "VK_KHR_create_renderpass2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndRenderPass2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndRenderPass2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSubpassEndInfo* pSubpassEndInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_create_renderpass2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndRenderPass2KHR", "VK_KHR_create_renderpass2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_shared_presentable_image
|
|
static VkResult entry_vkGetSwapchainStatusKHR(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainStatusKHR_VkResult_return = vkEnc->vkGetSwapchainStatusKHR(device, swapchain, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkImportFenceWin32HandleKHR_VkResult_return = vkEnc->vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, true /* do lock */);
|
|
return vkImportFenceWin32HandleKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetFenceWin32HandleKHR(
|
|
VkDevice device,
|
|
const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
|
|
HANDLE* pHandle)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
|
|
vkGetFenceWin32HandleKHR_VkResult_return = vkEnc->vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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_performance_query
|
|
static VkResult entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex,
|
|
uint32_t* pCounterCount,
|
|
VkPerformanceCounterKHR* pCounters,
|
|
VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = (VkResult)0;
|
|
vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return = vkEnc->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, true /* do lock */);
|
|
return vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR_VkResult_return;
|
|
}
|
|
static void entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
|
|
uint32_t* pNumPasses)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkAcquireProfilingLockKHR(
|
|
VkDevice device,
|
|
const VkAcquireProfilingLockInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
|
|
vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
|
|
return vkAcquireProfilingLockKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkAcquireProfilingLockKHR(
|
|
VkDevice device,
|
|
const VkAcquireProfilingLockInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkAcquireProfilingLockKHR", "VK_KHR_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkAcquireProfilingLockKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireProfilingLockKHR_VkResult_return = (VkResult)0;
|
|
vkAcquireProfilingLockKHR_VkResult_return = vkEnc->vkAcquireProfilingLockKHR(device, pInfo, true /* do lock */);
|
|
return vkAcquireProfilingLockKHR_VkResult_return;
|
|
}
|
|
static void entry_vkReleaseProfilingLockKHR(
|
|
VkDevice device)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkReleaseProfilingLockKHR(
|
|
VkDevice device)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkReleaseProfilingLockKHR", "VK_KHR_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkReleaseProfilingLockKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkReleaseProfilingLockKHR(device, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, true /* do lock */);
|
|
return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceSurfaceFormats2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
uint32_t* pSurfaceFormatCount,
|
|
VkSurfaceFormat2KHR* pSurfaceFormats)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pPropertyCount,
|
|
VkDisplayPlaneProperties2KHR* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = vkEnc->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDisplayModeProperties2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkDisplayKHR display,
|
|
uint32_t* pPropertyCount,
|
|
VkDisplayModeProperties2KHR* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
|
|
vkGetDisplayModeProperties2KHR_VkResult_return = vkEnc->vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkGetDisplayModeProperties2KHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDisplayPlaneCapabilities2KHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
|
|
VkDisplayPlaneCapabilities2KHR* pCapabilities)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
|
|
vkGetDisplayPlaneCapabilities2KHR_VkResult_return = vkEnc->vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, device, pInfo, pMemoryRequirements);
|
|
}
|
|
static void entry_vkGetBufferMemoryRequirements2KHR(
|
|
VkDevice device,
|
|
const VkBufferMemoryRequirementsInfo2* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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_portability_subset
|
|
#endif
|
|
#ifdef VK_KHR_maintenance3
|
|
static void entry_vkGetDescriptorSetLayoutSupportKHR(
|
|
VkDevice device,
|
|
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
|
|
VkDescriptorSetLayoutSupport* pSupport)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndirectCountKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCountKHR", "VK_KHR_draw_indirect_count");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_draw_indirect_count"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCountKHR", "VK_KHR_draw_indirect_count");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_shader_subgroup_extended_types
|
|
#endif
|
|
#ifdef VK_KHR_8bit_storage
|
|
#endif
|
|
#ifdef VK_KHR_shader_atomic_int64
|
|
#endif
|
|
#ifdef VK_KHR_shader_clock
|
|
#endif
|
|
#ifdef VK_KHR_driver_properties
|
|
#endif
|
|
#ifdef VK_KHR_shader_float_controls
|
|
#endif
|
|
#ifdef VK_KHR_depth_stencil_resolve
|
|
#endif
|
|
#ifdef VK_KHR_swapchain_mutable_format
|
|
#endif
|
|
#ifdef VK_KHR_timeline_semaphore
|
|
static VkResult entry_vkGetSemaphoreCounterValueKHR(
|
|
VkDevice device,
|
|
VkSemaphore semaphore,
|
|
uint64_t* pValue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
|
|
return vkGetSemaphoreCounterValueKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetSemaphoreCounterValueKHR(
|
|
VkDevice device,
|
|
VkSemaphore semaphore,
|
|
uint64_t* pValue)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreCounterValueKHR", "VK_KHR_timeline_semaphore");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreCounterValueKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreCounterValueKHR_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreCounterValueKHR_VkResult_return = vkEnc->vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, true /* do lock */);
|
|
return vkGetSemaphoreCounterValueKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkWaitSemaphoresKHR(
|
|
VkDevice device,
|
|
const VkSemaphoreWaitInfo* pWaitInfo,
|
|
uint64_t timeout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
|
|
vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
|
|
return vkWaitSemaphoresKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkWaitSemaphoresKHR(
|
|
VkDevice device,
|
|
const VkSemaphoreWaitInfo* pWaitInfo,
|
|
uint64_t timeout)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkWaitSemaphoresKHR", "VK_KHR_timeline_semaphore");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkWaitSemaphoresKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWaitSemaphoresKHR_VkResult_return = (VkResult)0;
|
|
vkWaitSemaphoresKHR_VkResult_return = vkEnc->vkWaitSemaphoresKHR(device, pWaitInfo, timeout, true /* do lock */);
|
|
return vkWaitSemaphoresKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkSignalSemaphoreKHR(
|
|
VkDevice device,
|
|
const VkSemaphoreSignalInfo* pSignalInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
|
|
vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
|
|
return vkSignalSemaphoreKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkSignalSemaphoreKHR(
|
|
VkDevice device,
|
|
const VkSemaphoreSignalInfo* pSignalInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSignalSemaphoreKHR", "VK_KHR_timeline_semaphore");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSignalSemaphoreKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSignalSemaphoreKHR_VkResult_return = (VkResult)0;
|
|
vkSignalSemaphoreKHR_VkResult_return = vkEnc->vkSignalSemaphoreKHR(device, pSignalInfo, true /* do lock */);
|
|
return vkSignalSemaphoreKHR_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_vulkan_memory_model
|
|
#endif
|
|
#ifdef VK_KHR_shader_terminate_invocation
|
|
#endif
|
|
#ifdef VK_KHR_fragment_shading_rate
|
|
static VkResult entry_vkGetPhysicalDeviceFragmentShadingRatesKHR(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pFragmentShadingRateCount,
|
|
VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFragmentShadingRatesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return = vkEnc->vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, true /* do lock */);
|
|
return vkGetPhysicalDeviceFragmentShadingRatesKHR_VkResult_return;
|
|
}
|
|
static void entry_vkCmdSetFragmentShadingRateKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkExtent2D* pFragmentSize,
|
|
const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetFragmentShadingRateKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkExtent2D* pFragmentSize,
|
|
const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetFragmentShadingRateKHR", "VK_KHR_fragment_shading_rate");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_spirv_1_4
|
|
#endif
|
|
#ifdef VK_KHR_surface_protected_capabilities
|
|
#endif
|
|
#ifdef VK_KHR_separate_depth_stencil_layouts
|
|
#endif
|
|
#ifdef VK_KHR_present_wait
|
|
static VkResult entry_vkWaitForPresentKHR(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain,
|
|
uint64_t presentId,
|
|
uint64_t timeout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
|
|
vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
|
|
return vkWaitForPresentKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkWaitForPresentKHR(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain,
|
|
uint64_t presentId,
|
|
uint64_t timeout)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_present_wait"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkWaitForPresentKHR", "VK_KHR_present_wait");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkWaitForPresentKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWaitForPresentKHR_VkResult_return = (VkResult)0;
|
|
vkWaitForPresentKHR_VkResult_return = vkEnc->vkWaitForPresentKHR(device, swapchain, presentId, timeout, true /* do lock */);
|
|
return vkWaitForPresentKHR_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_uniform_buffer_standard_layout
|
|
#endif
|
|
#ifdef VK_KHR_buffer_device_address
|
|
static VkDeviceAddress entry_vkGetBufferDeviceAddressKHR(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
|
|
}
|
|
static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressKHR(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressKHR", "VK_KHR_buffer_device_address");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
|
|
}
|
|
static uint64_t entry_vkGetBufferOpaqueCaptureAddressKHR(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
|
|
vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
|
|
}
|
|
static uint64_t dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetBufferOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetBufferOpaqueCaptureAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
|
|
vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
|
|
}
|
|
static uint64_t entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
|
|
VkDevice device,
|
|
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
|
|
vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
|
|
}
|
|
static uint64_t dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
|
|
VkDevice device,
|
|
const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceMemoryOpaqueCaptureAddressKHR", "VK_KHR_buffer_device_address");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
|
|
vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_deferred_host_operations
|
|
static VkResult entry_vkCreateDeferredOperationKHR(
|
|
VkDevice device,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkDeferredOperationKHR* pDeferredOperation)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
|
|
vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
|
|
return vkCreateDeferredOperationKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateDeferredOperationKHR(
|
|
VkDevice device,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkDeferredOperationKHR* pDeferredOperation)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateDeferredOperationKHR", "VK_KHR_deferred_host_operations");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateDeferredOperationKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDeferredOperationKHR_VkResult_return = (VkResult)0;
|
|
vkCreateDeferredOperationKHR_VkResult_return = vkEnc->vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, true /* do lock */);
|
|
return vkCreateDeferredOperationKHR_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyDeferredOperationKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyDeferredOperationKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyDeferredOperationKHR", "VK_KHR_deferred_host_operations");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyDeferredOperationKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDeferredOperationKHR(device, operation, pAllocator, true /* do lock */);
|
|
}
|
|
static uint32_t entry_vkGetDeferredOperationMaxConcurrencyKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
|
|
vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
|
|
return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
|
|
}
|
|
static uint32_t dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationMaxConcurrencyKHR", "VK_KHR_deferred_host_operations");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeferredOperationMaxConcurrencyKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint32_t vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = (uint32_t)0;
|
|
vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return = vkEnc->vkGetDeferredOperationMaxConcurrencyKHR(device, operation, true /* do lock */);
|
|
return vkGetDeferredOperationMaxConcurrencyKHR_uint32_t_return;
|
|
}
|
|
static VkResult entry_vkGetDeferredOperationResultKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
|
|
vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
|
|
return vkGetDeferredOperationResultKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetDeferredOperationResultKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeferredOperationResultKHR", "VK_KHR_deferred_host_operations");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeferredOperationResultKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeferredOperationResultKHR_VkResult_return = (VkResult)0;
|
|
vkGetDeferredOperationResultKHR_VkResult_return = vkEnc->vkGetDeferredOperationResultKHR(device, operation, true /* do lock */);
|
|
return vkGetDeferredOperationResultKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkDeferredOperationJoinKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
|
|
vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
|
|
return vkDeferredOperationJoinKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkDeferredOperationJoinKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR operation)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDeferredOperationJoinKHR", "VK_KHR_deferred_host_operations");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDeferredOperationJoinKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDeferredOperationJoinKHR_VkResult_return = (VkResult)0;
|
|
vkDeferredOperationJoinKHR_VkResult_return = vkEnc->vkDeferredOperationJoinKHR(device, operation, true /* do lock */);
|
|
return vkDeferredOperationJoinKHR_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_pipeline_executable_properties
|
|
static VkResult entry_vkGetPipelineExecutablePropertiesKHR(
|
|
VkDevice device,
|
|
const VkPipelineInfoKHR* pPipelineInfo,
|
|
uint32_t* pExecutableCount,
|
|
VkPipelineExecutablePropertiesKHR* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
|
|
return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetPipelineExecutablePropertiesKHR(
|
|
VkDevice device,
|
|
const VkPipelineInfoKHR* pPipelineInfo,
|
|
uint32_t* pExecutableCount,
|
|
VkPipelineExecutablePropertiesKHR* pProperties)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutablePropertiesKHR", "VK_KHR_pipeline_executable_properties");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetPipelineExecutablePropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkGetPipelineExecutablePropertiesKHR_VkResult_return = vkEnc->vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, true /* do lock */);
|
|
return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPipelineExecutableStatisticsKHR(
|
|
VkDevice device,
|
|
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
|
uint32_t* pStatisticCount,
|
|
VkPipelineExecutableStatisticKHR* pStatistics)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
|
|
vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
|
|
return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetPipelineExecutableStatisticsKHR(
|
|
VkDevice device,
|
|
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
|
uint32_t* pStatisticCount,
|
|
VkPipelineExecutableStatisticKHR* pStatistics)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableStatisticsKHR", "VK_KHR_pipeline_executable_properties");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetPipelineExecutableStatisticsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
|
|
vkGetPipelineExecutableStatisticsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, true /* do lock */);
|
|
return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPipelineExecutableInternalRepresentationsKHR(
|
|
VkDevice device,
|
|
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
|
uint32_t* pInternalRepresentationCount,
|
|
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
|
|
vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
|
|
return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR(
|
|
VkDevice device,
|
|
const VkPipelineExecutableInfoKHR* pExecutableInfo,
|
|
uint32_t* pInternalRepresentationCount,
|
|
VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetPipelineExecutableInternalRepresentationsKHR", "VK_KHR_pipeline_executable_properties");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetPipelineExecutableInternalRepresentationsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
|
|
vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, true /* do lock */);
|
|
return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_shader_integer_dot_product
|
|
#endif
|
|
#ifdef VK_KHR_pipeline_library
|
|
#endif
|
|
#ifdef VK_KHR_shader_non_semantic_info
|
|
#endif
|
|
#ifdef VK_KHR_present_id
|
|
#endif
|
|
#ifdef VK_KHR_video_encode_queue
|
|
static void entry_vkCmdEncodeVideoKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoEncodeInfoKHR* pEncodeInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEncodeVideoKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkVideoEncodeInfoKHR* pEncodeInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEncodeVideoKHR", "VK_KHR_video_encode_queue");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEncodeVideoKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_synchronization2
|
|
static void entry_vkCmdSetEvent2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkEvent event,
|
|
const VkDependencyInfoKHR* pDependencyInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetEvent2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkEvent event,
|
|
const VkDependencyInfoKHR* pDependencyInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetEvent2KHR", "VK_KHR_synchronization2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetEvent2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdResetEvent2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkEvent event,
|
|
VkPipelineStageFlags2KHR stageMask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdResetEvent2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkEvent event,
|
|
VkPipelineStageFlags2KHR stageMask)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdResetEvent2KHR", "VK_KHR_synchronization2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdResetEvent2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResetEvent2KHR(commandBuffer, event, stageMask, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdWaitEvents2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t eventCount,
|
|
const VkEvent* pEvents,
|
|
const VkDependencyInfoKHR* pDependencyInfos)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdWaitEvents2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t eventCount,
|
|
const VkEvent* pEvents,
|
|
const VkDependencyInfoKHR* pDependencyInfos)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdWaitEvents2KHR", "VK_KHR_synchronization2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdWaitEvents2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdPipelineBarrier2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDependencyInfoKHR* pDependencyInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdPipelineBarrier2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDependencyInfoKHR* pDependencyInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdPipelineBarrier2KHR", "VK_KHR_synchronization2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdPipelineBarrier2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdWriteTimestamp2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineStageFlags2KHR stage,
|
|
VkQueryPool queryPool,
|
|
uint32_t query)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdWriteTimestamp2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineStageFlags2KHR stage,
|
|
VkQueryPool queryPool,
|
|
uint32_t query)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdWriteTimestamp2KHR", "VK_KHR_synchronization2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdWriteTimestamp2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkQueueSubmit2KHR(
|
|
VkQueue queue,
|
|
uint32_t submitCount,
|
|
const VkSubmitInfo2KHR* pSubmits,
|
|
VkFence fence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueSubmit2KHR");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
|
|
vkQueueSubmit2KHR_VkResult_return = vkEnc->vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, true /* do lock */);
|
|
return vkQueueSubmit2KHR_VkResult_return;
|
|
}
|
|
static void entry_vkCmdWriteBufferMarker2AMD(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineStageFlags2KHR stage,
|
|
VkBuffer dstBuffer,
|
|
VkDeviceSize dstOffset,
|
|
uint32_t marker)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdWriteBufferMarker2AMD(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineStageFlags2KHR stage,
|
|
VkBuffer dstBuffer,
|
|
VkDeviceSize dstOffset,
|
|
uint32_t marker)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_synchronization2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdWriteBufferMarker2AMD", "VK_KHR_synchronization2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdWriteBufferMarker2AMD");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, true /* do lock */);
|
|
}
|
|
static void entry_vkGetQueueCheckpointData2NV(
|
|
VkQueue queue,
|
|
uint32_t* pCheckpointDataCount,
|
|
VkCheckpointData2NV* pCheckpointData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetQueueCheckpointData2NV");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_shader_subgroup_uniform_control_flow
|
|
#endif
|
|
#ifdef VK_KHR_zero_initialize_workgroup_memory
|
|
#endif
|
|
#ifdef VK_KHR_workgroup_memory_explicit_layout
|
|
#endif
|
|
#ifdef VK_KHR_copy_commands2
|
|
static void entry_vkCmdCopyBuffer2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyBufferInfo2KHR* pCopyBufferInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyBuffer2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyBufferInfo2KHR* pCopyBufferInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyBuffer2KHR", "VK_KHR_copy_commands2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyBuffer2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyImageInfo2KHR* pCopyImageInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyImageInfo2KHR* pCopyImageInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyImage2KHR", "VK_KHR_copy_commands2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyBufferToImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyBufferToImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyBufferToImage2KHR", "VK_KHR_copy_commands2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyImageToBuffer2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyImageToBuffer2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyImageToBuffer2KHR", "VK_KHR_copy_commands2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBlitImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkBlitImageInfo2KHR* pBlitImageInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBlitImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkBlitImageInfo2KHR* pBlitImageInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBlitImage2KHR", "VK_KHR_copy_commands2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBlitImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdResolveImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkResolveImageInfo2KHR* pResolveImageInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdResolveImage2KHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkResolveImageInfo2KHR* pResolveImageInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_copy_commands2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdResolveImage2KHR", "VK_KHR_copy_commands2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdResolveImage2KHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_format_feature_flags2
|
|
#endif
|
|
#ifdef VK_KHR_maintenance4
|
|
static void entry_vkGetDeviceBufferMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
const VkDeviceBufferMemoryRequirementsKHR* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
const VkDeviceBufferMemoryRequirementsKHR* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceBufferMemoryRequirementsKHR", "VK_KHR_maintenance4");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceBufferMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void entry_vkGetDeviceImageMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
const VkDeviceImageMemoryRequirementsKHR* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
const VkDeviceImageMemoryRequirementsKHR* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageMemoryRequirementsKHR", "VK_KHR_maintenance4");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceImageMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
const VkDeviceImageMemoryRequirementsKHR* pInfo,
|
|
uint32_t* pSparseMemoryRequirementCount,
|
|
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR(
|
|
VkDevice device,
|
|
const VkDeviceImageMemoryRequirementsKHR* pInfo,
|
|
uint32_t* pSparseMemoryRequirementCount,
|
|
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_maintenance4"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceImageSparseMemoryRequirementsKHR", "VK_KHR_maintenance4");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceImageSparseMemoryRequirementsKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_ANDROID_native_buffer
|
|
static VkResult entry_vkGetSwapchainGrallocUsageANDROID(
|
|
VkDevice device,
|
|
VkFormat format,
|
|
VkImageUsageFlags imageUsage,
|
|
int* grallocUsage)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainGrallocUsageANDROID_VkResult_return = vkEnc->vkGetSwapchainGrallocUsageANDROID(device, format, imageUsage, grallocUsage, true /* do lock */);
|
|
return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
|
|
}
|
|
static VkResult entry_vkAcquireImageANDROID(
|
|
VkDevice device,
|
|
VkImage image,
|
|
int nativeFenceFd,
|
|
VkSemaphore semaphore,
|
|
VkFence fence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquireImageANDROID");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
|
|
vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
|
|
vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(device, image, nativeFenceFd, semaphore, fence, true /* do lock */);
|
|
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 = ResourceTracker::getQueueEncoder(queue);
|
|
VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
|
|
auto resources = ResourceTracker::get();
|
|
vkQueueSignalReleaseImageANDROID_VkResult_return = resources->on_vkQueueSignalReleaseImageANDROID(vkEnc, VK_SUCCESS, 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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
|
|
vkCreateDebugReportCallbackEXT_VkResult_return = vkEnc->vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, true /* do lock */);
|
|
return vkCreateDebugReportCallbackEXT_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyDebugReportCallbackEXT(
|
|
VkInstance instance,
|
|
VkDebugReportCallbackEXT callback,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
|
|
vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
|
|
vkDebugMarkerSetObjectTagEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectTagEXT(device, pTagInfo, true /* do lock */);
|
|
return vkDebugMarkerSetObjectTagEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkDebugMarkerSetObjectNameEXT(
|
|
VkDevice device,
|
|
const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
|
|
vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
|
|
vkDebugMarkerSetObjectNameEXT_VkResult_return = vkEnc->vkDebugMarkerSetObjectNameEXT(device, pNameInfo, true /* do lock */);
|
|
return vkDebugMarkerSetObjectNameEXT_VkResult_return;
|
|
}
|
|
static void entry_vkCmdDebugMarkerBeginEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDebugMarkerBeginEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerBeginEXT", "VK_EXT_debug_marker");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDebugMarkerEndEXT(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDebugMarkerEndEXT(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerEndEXT", "VK_EXT_debug_marker");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDebugMarkerEndEXT(commandBuffer, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDebugMarkerInsertEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDebugMarkerInsertEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_debug_marker"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDebugMarkerInsertEXT", "VK_EXT_debug_marker");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_gcn_shader
|
|
#endif
|
|
#ifdef VK_NV_dedicated_allocation
|
|
#endif
|
|
#ifdef VK_EXT_transform_feedback
|
|
static void entry_vkCmdBindTransformFeedbackBuffersEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstBinding,
|
|
uint32_t bindingCount,
|
|
const VkBuffer* pBuffers,
|
|
const VkDeviceSize* pOffsets,
|
|
const VkDeviceSize* pSizes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstBinding,
|
|
uint32_t bindingCount,
|
|
const VkBuffer* pBuffers,
|
|
const VkDeviceSize* pOffsets,
|
|
const VkDeviceSize* pSizes)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBindTransformFeedbackBuffersEXT", "VK_EXT_transform_feedback");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBindTransformFeedbackBuffersEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBeginTransformFeedbackEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstCounterBuffer,
|
|
uint32_t counterBufferCount,
|
|
const VkBuffer* pCounterBuffers,
|
|
const VkDeviceSize* pCounterBufferOffsets)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginTransformFeedbackEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstCounterBuffer,
|
|
uint32_t counterBufferCount,
|
|
const VkBuffer* pCounterBuffers,
|
|
const VkDeviceSize* pCounterBufferOffsets)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginTransformFeedbackEXT", "VK_EXT_transform_feedback");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginTransformFeedbackEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndTransformFeedbackEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstCounterBuffer,
|
|
uint32_t counterBufferCount,
|
|
const VkBuffer* pCounterBuffers,
|
|
const VkDeviceSize* pCounterBufferOffsets)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndTransformFeedbackEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstCounterBuffer,
|
|
uint32_t counterBufferCount,
|
|
const VkBuffer* pCounterBuffers,
|
|
const VkDeviceSize* pCounterBufferOffsets)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndTransformFeedbackEXT", "VK_EXT_transform_feedback");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndTransformFeedbackEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBeginQueryIndexedEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t query,
|
|
VkQueryControlFlags flags,
|
|
uint32_t index)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginQueryIndexedEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t query,
|
|
VkQueryControlFlags flags,
|
|
uint32_t index)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginQueryIndexedEXT", "VK_EXT_transform_feedback");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginQueryIndexedEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndQueryIndexedEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t query,
|
|
uint32_t index)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndQueryIndexedEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkQueryPool queryPool,
|
|
uint32_t query,
|
|
uint32_t index)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndQueryIndexedEXT", "VK_EXT_transform_feedback");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndQueryIndexedEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawIndirectByteCountEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t instanceCount,
|
|
uint32_t firstInstance,
|
|
VkBuffer counterBuffer,
|
|
VkDeviceSize counterBufferOffset,
|
|
uint32_t counterOffset,
|
|
uint32_t vertexStride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndirectByteCountEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t instanceCount,
|
|
uint32_t firstInstance,
|
|
VkBuffer counterBuffer,
|
|
VkDeviceSize counterBufferOffset,
|
|
uint32_t counterOffset,
|
|
uint32_t vertexStride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_transform_feedback"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectByteCountEXT", "VK_EXT_transform_feedback");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirectByteCountEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_binary_import
|
|
static VkResult entry_vkCreateCuModuleNVX(
|
|
VkDevice device,
|
|
const VkCuModuleCreateInfoNVX* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkCuModuleNVX* pModule)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
|
|
vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
|
|
return vkCreateCuModuleNVX_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateCuModuleNVX(
|
|
VkDevice device,
|
|
const VkCuModuleCreateInfoNVX* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkCuModuleNVX* pModule)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateCuModuleNVX", "VK_NVX_binary_import");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateCuModuleNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateCuModuleNVX_VkResult_return = (VkResult)0;
|
|
vkCreateCuModuleNVX_VkResult_return = vkEnc->vkCreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule, true /* do lock */);
|
|
return vkCreateCuModuleNVX_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCreateCuFunctionNVX(
|
|
VkDevice device,
|
|
const VkCuFunctionCreateInfoNVX* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkCuFunctionNVX* pFunction)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
|
|
vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
|
|
return vkCreateCuFunctionNVX_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateCuFunctionNVX(
|
|
VkDevice device,
|
|
const VkCuFunctionCreateInfoNVX* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkCuFunctionNVX* pFunction)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateCuFunctionNVX", "VK_NVX_binary_import");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateCuFunctionNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateCuFunctionNVX_VkResult_return = (VkResult)0;
|
|
vkCreateCuFunctionNVX_VkResult_return = vkEnc->vkCreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction, true /* do lock */);
|
|
return vkCreateCuFunctionNVX_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyCuModuleNVX(
|
|
VkDevice device,
|
|
VkCuModuleNVX module,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyCuModuleNVX(
|
|
VkDevice device,
|
|
VkCuModuleNVX module,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyCuModuleNVX", "VK_NVX_binary_import");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyCuModuleNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyCuModuleNVX(device, module, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkDestroyCuFunctionNVX(
|
|
VkDevice device,
|
|
VkCuFunctionNVX function,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyCuFunctionNVX(
|
|
VkDevice device,
|
|
VkCuFunctionNVX function,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyCuFunctionNVX", "VK_NVX_binary_import");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyCuFunctionNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyCuFunctionNVX(device, function, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCuLaunchKernelNVX(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCuLaunchInfoNVX* pLaunchInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCuLaunchKernelNVX(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCuLaunchInfoNVX* pLaunchInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_binary_import"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCuLaunchKernelNVX", "VK_NVX_binary_import");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCuLaunchKernelNVX");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_image_view_handle
|
|
static uint32_t entry_vkGetImageViewHandleNVX(
|
|
VkDevice device,
|
|
const VkImageViewHandleInfoNVX* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
|
|
vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
|
|
return vkGetImageViewHandleNVX_uint32_t_return;
|
|
}
|
|
static uint32_t dynCheck_entry_vkGetImageViewHandleNVX(
|
|
VkDevice device,
|
|
const VkImageViewHandleInfoNVX* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetImageViewHandleNVX", "VK_NVX_image_view_handle");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetImageViewHandleNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
uint32_t vkGetImageViewHandleNVX_uint32_t_return = (uint32_t)0;
|
|
vkGetImageViewHandleNVX_uint32_t_return = vkEnc->vkGetImageViewHandleNVX(device, pInfo, true /* do lock */);
|
|
return vkGetImageViewHandleNVX_uint32_t_return;
|
|
}
|
|
static VkResult entry_vkGetImageViewAddressNVX(
|
|
VkDevice device,
|
|
VkImageView imageView,
|
|
VkImageViewAddressPropertiesNVX* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
|
|
vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
|
|
return vkGetImageViewAddressNVX_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetImageViewAddressNVX(
|
|
VkDevice device,
|
|
VkImageView imageView,
|
|
VkImageViewAddressPropertiesNVX* pProperties)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NVX_image_view_handle"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetImageViewAddressNVX", "VK_NVX_image_view_handle");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetImageViewAddressNVX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetImageViewAddressNVX_VkResult_return = (VkResult)0;
|
|
vkGetImageViewAddressNVX_VkResult_return = vkEnc->vkGetImageViewAddressNVX(device, imageView, pProperties, true /* do lock */);
|
|
return vkGetImageViewAddressNVX_VkResult_return;
|
|
}
|
|
#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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndirectCountAMD(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndirectCountAMD", "VK_AMD_draw_indirect_count");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_AMD_draw_indirect_count"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawIndexedIndirectCountAMD", "VK_AMD_draw_indirect_count");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_negative_viewport_height
|
|
#endif
|
|
#ifdef VK_AMD_gpu_shader_half_float
|
|
#endif
|
|
#ifdef VK_AMD_shader_ballot
|
|
#endif
|
|
#ifdef VK_EXT_video_encode_h264
|
|
#endif
|
|
#ifdef VK_EXT_video_encode_h265
|
|
#endif
|
|
#ifdef VK_EXT_video_decode_h264
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
|
|
vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
|
|
vkGetShaderInfoAMD_VkResult_return = vkEnc->vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, true /* do lock */);
|
|
return vkGetShaderInfoAMD_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_shader_image_load_store_lod
|
|
#endif
|
|
#ifdef VK_GGP_stream_descriptor_surface
|
|
static VkResult entry_vkCreateStreamDescriptorSurfaceGGP(
|
|
VkInstance instance,
|
|
const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateStreamDescriptorSurfaceGGP");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateStreamDescriptorSurfaceGGP_VkResult_return = (VkResult)0;
|
|
vkCreateStreamDescriptorSurfaceGGP_VkResult_return = vkEnc->vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateStreamDescriptorSurfaceGGP_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_corner_sampled_image
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
|
|
vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
|
|
vkGetMemoryWin32HandleNV_VkResult_return = vkEnc->vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
|
|
vkCreateViSurfaceNN_VkResult_return = vkEnc->vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateViSurfaceNN_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_shader_subgroup_ballot
|
|
#endif
|
|
#ifdef VK_EXT_shader_subgroup_vote
|
|
#endif
|
|
#ifdef VK_EXT_texture_compression_astc_hdr
|
|
#endif
|
|
#ifdef VK_EXT_astc_decode_mode
|
|
#endif
|
|
#ifdef VK_EXT_conditional_rendering
|
|
static void entry_vkCmdBeginConditionalRenderingEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginConditionalRenderingEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginConditionalRenderingEXT", "VK_EXT_conditional_rendering");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndConditionalRenderingEXT(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndConditionalRenderingEXT(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_conditional_rendering"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndConditionalRenderingEXT", "VK_EXT_conditional_rendering");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndConditionalRenderingEXT(commandBuffer, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetViewportWScalingNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstViewport,
|
|
uint32_t viewportCount,
|
|
const VkViewportWScalingNV* pViewportWScalings)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_clip_space_w_scaling"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWScalingNV", "VK_NV_clip_space_w_scaling");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_direct_mode_display
|
|
static VkResult entry_vkReleaseDisplayEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkDisplayKHR display)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkReleaseDisplayEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
|
|
vkReleaseDisplayEXT_VkResult_return = vkEnc->vkReleaseDisplayEXT(physicalDevice, display, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
|
|
vkAcquireXlibDisplayEXT_VkResult_return = vkEnc->vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, true /* do lock */);
|
|
return vkAcquireXlibDisplayEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetRandROutputDisplayEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
Display* dpy,
|
|
RROutput rrOutput,
|
|
VkDisplayKHR* pDisplay)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
|
|
vkGetRandROutputDisplayEXT_VkResult_return = vkEnc->vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
|
|
vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
|
|
vkDisplayPowerControlEXT_VkResult_return = vkEnc->vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, true /* do lock */);
|
|
return vkDisplayPowerControlEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkRegisterDeviceEventEXT(
|
|
VkDevice device,
|
|
const VkDeviceEventInfoEXT* pDeviceEventInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkFence* pFence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
|
|
vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
|
|
vkRegisterDeviceEventEXT_VkResult_return = vkEnc->vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
|
|
vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
|
|
vkRegisterDisplayEventEXT_VkResult_return = vkEnc->vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, true /* do lock */);
|
|
return vkRegisterDisplayEventEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetSwapchainCounterEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain,
|
|
VkSurfaceCounterFlagBitsEXT counter,
|
|
uint64_t* pCounterValue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
|
|
vkGetSwapchainCounterEXT_VkResult_return = vkEnc->vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
|
|
vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
|
|
vkGetRefreshCycleDurationGOOGLE_VkResult_return = vkEnc->vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, true /* do lock */);
|
|
return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPastPresentationTimingGOOGLE(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain,
|
|
uint32_t* pPresentationTimingCount,
|
|
VkPastPresentationTimingGOOGLE* pPresentationTimings)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
|
|
vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
|
|
vkGetPastPresentationTimingGOOGLE_VkResult_return = vkEnc->vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, true /* do lock */);
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDiscardRectangleEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstDiscardRectangle,
|
|
uint32_t discardRectangleCount,
|
|
const VkRect2D* pDiscardRectangles)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_discard_rectangles"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDiscardRectangleEXT", "VK_EXT_discard_rectangles");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_conservative_rasterization
|
|
#endif
|
|
#ifdef VK_EXT_depth_clip_enable
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
|
|
vkCreateIOSSurfaceMVK_VkResult_return = vkEnc->vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
|
|
vkCreateMacOSSurfaceMVK_VkResult_return = vkEnc->vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateMacOSSurfaceMVK_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_MVK_moltenvk
|
|
static void entry_vkGetMTLDeviceMVK(
|
|
VkPhysicalDevice physicalDevice,
|
|
void** pMTLDevice)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMTLDeviceMVK");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetMTLDeviceMVK(physicalDevice, pMTLDevice, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkSetMTLTextureMVK(
|
|
VkImage image,
|
|
void* mtlTexture)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetMTLTextureMVK");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetMTLTextureMVK_VkResult_return = (VkResult)0;
|
|
vkSetMTLTextureMVK_VkResult_return = vkEnc->vkSetMTLTextureMVK(image, mtlTexture, true /* do lock */);
|
|
return vkSetMTLTextureMVK_VkResult_return;
|
|
}
|
|
static void entry_vkGetMTLTextureMVK(
|
|
VkImage image,
|
|
void** pMTLTexture)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMTLTextureMVK");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetMTLTextureMVK(image, pMTLTexture, true /* do lock */);
|
|
}
|
|
static void entry_vkGetMTLBufferMVK(
|
|
VkBuffer buffer,
|
|
void** pMTLBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMTLBufferMVK");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetMTLBufferMVK(buffer, pMTLBuffer, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkUseIOSurfaceMVK(
|
|
VkImage image,
|
|
void* ioSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkUseIOSurfaceMVK");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkUseIOSurfaceMVK_VkResult_return = (VkResult)0;
|
|
vkUseIOSurfaceMVK_VkResult_return = vkEnc->vkUseIOSurfaceMVK(image, ioSurface, true /* do lock */);
|
|
return vkUseIOSurfaceMVK_VkResult_return;
|
|
}
|
|
static void entry_vkGetIOSurfaceMVK(
|
|
VkImage image,
|
|
void** pIOSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetIOSurfaceMVK");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetIOSurfaceMVK(image, pIOSurface, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
|
|
vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
|
|
vkSetDebugUtilsObjectNameEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectNameEXT(device, pNameInfo, true /* do lock */);
|
|
return vkSetDebugUtilsObjectNameEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkSetDebugUtilsObjectTagEXT(
|
|
VkDevice device,
|
|
const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
|
|
vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
|
|
vkSetDebugUtilsObjectTagEXT_VkResult_return = vkEnc->vkSetDebugUtilsObjectTagEXT(device, pTagInfo, true /* do lock */);
|
|
return vkSetDebugUtilsObjectTagEXT_VkResult_return;
|
|
}
|
|
static void entry_vkQueueBeginDebugUtilsLabelEXT(
|
|
VkQueue queue,
|
|
const VkDebugUtilsLabelEXT* pLabelInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueEndDebugUtilsLabelEXT(
|
|
VkQueue queue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueEndDebugUtilsLabelEXT(queue, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueInsertDebugUtilsLabelEXT(
|
|
VkQueue queue,
|
|
const VkDebugUtilsLabelEXT* pLabelInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBeginDebugUtilsLabelEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugUtilsLabelEXT* pLabelInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBeginDebugUtilsLabelEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugUtilsLabelEXT* pLabelInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBeginDebugUtilsLabelEXT", "VK_EXT_debug_utils");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdEndDebugUtilsLabelEXT(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdEndDebugUtilsLabelEXT(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdEndDebugUtilsLabelEXT", "VK_EXT_debug_utils");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdEndDebugUtilsLabelEXT(commandBuffer, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdInsertDebugUtilsLabelEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugUtilsLabelEXT* pLabelInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdInsertDebugUtilsLabelEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkDebugUtilsLabelEXT* pLabelInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_debug_utils"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdInsertDebugUtilsLabelEXT", "VK_EXT_debug_utils");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateDebugUtilsMessengerEXT(
|
|
VkInstance instance,
|
|
const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkDebugUtilsMessengerEXT* pMessenger)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
|
|
vkCreateDebugUtilsMessengerEXT_VkResult_return = vkEnc->vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, true /* do lock */);
|
|
return vkCreateDebugUtilsMessengerEXT_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyDebugUtilsMessengerEXT(
|
|
VkInstance instance,
|
|
VkDebugUtilsMessengerEXT messenger,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkSubmitDebugUtilsMessageEXT(
|
|
VkInstance instance,
|
|
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
|
|
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
|
|
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, true /* do lock */);
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
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_inline_uniform_block
|
|
#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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetSampleLocationsEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_sample_locations"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetSampleLocationsEXT", "VK_EXT_sample_locations");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkGetPhysicalDeviceMultisamplePropertiesEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkSampleCountFlagBits samples,
|
|
VkMultisamplePropertiesEXT* pMultisampleProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, true /* do lock */);
|
|
}
|
|
#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_NV_shader_sm_builtins
|
|
#endif
|
|
#ifdef VK_EXT_post_depth_coverage
|
|
#endif
|
|
#ifdef VK_EXT_image_drm_format_modifier
|
|
static VkResult entry_vkGetImageDrmFormatModifierPropertiesEXT(
|
|
VkDevice device,
|
|
VkImage image,
|
|
VkImageDrmFormatModifierPropertiesEXT* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
|
|
vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
|
|
return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT(
|
|
VkDevice device,
|
|
VkImage image,
|
|
VkImageDrmFormatModifierPropertiesEXT* pProperties)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetImageDrmFormatModifierPropertiesEXT", "VK_EXT_image_drm_format_modifier");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetImageDrmFormatModifierPropertiesEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
|
|
vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, true /* do lock */);
|
|
return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
|
|
}
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
|
|
vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
|
|
vkCreateValidationCacheEXT_VkResult_return = vkEnc->vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, true /* do lock */);
|
|
return vkCreateValidationCacheEXT_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyValidationCacheEXT(
|
|
VkDevice device,
|
|
VkValidationCacheEXT validationCache,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyValidationCacheEXT(device, validationCache, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkMergeValidationCachesEXT(
|
|
VkDevice device,
|
|
VkValidationCacheEXT dstCache,
|
|
uint32_t srcCacheCount,
|
|
const VkValidationCacheEXT* pSrcCaches)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
|
|
vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
|
|
vkMergeValidationCachesEXT_VkResult_return = vkEnc->vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, true /* do lock */);
|
|
return vkMergeValidationCachesEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetValidationCacheDataEXT(
|
|
VkDevice device,
|
|
VkValidationCacheEXT validationCache,
|
|
size_t* pDataSize,
|
|
void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
|
|
vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
|
|
vkGetValidationCacheDataEXT_VkResult_return = vkEnc->vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, true /* do lock */);
|
|
return vkGetValidationCacheDataEXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_descriptor_indexing
|
|
#endif
|
|
#ifdef VK_EXT_shader_viewport_index_layer
|
|
#endif
|
|
#ifdef VK_NV_shading_rate_image
|
|
static void entry_vkCmdBindShadingRateImageNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkImageView imageView,
|
|
VkImageLayout imageLayout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBindShadingRateImageNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkImageView imageView,
|
|
VkImageLayout imageLayout)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBindShadingRateImageNV", "VK_NV_shading_rate_image");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBindShadingRateImageNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetViewportShadingRatePaletteNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstViewport,
|
|
uint32_t viewportCount,
|
|
const VkShadingRatePaletteNV* pShadingRatePalettes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstViewport,
|
|
uint32_t viewportCount,
|
|
const VkShadingRatePaletteNV* pShadingRatePalettes)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportShadingRatePaletteNV", "VK_NV_shading_rate_image");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetViewportShadingRatePaletteNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetCoarseSampleOrderNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCoarseSampleOrderTypeNV sampleOrderType,
|
|
uint32_t customSampleOrderCount,
|
|
const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetCoarseSampleOrderNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCoarseSampleOrderTypeNV sampleOrderType,
|
|
uint32_t customSampleOrderCount,
|
|
const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_shading_rate_image"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetCoarseSampleOrderNV", "VK_NV_shading_rate_image");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetCoarseSampleOrderNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_ray_tracing
|
|
static VkResult entry_vkCreateAccelerationStructureNV(
|
|
VkDevice device,
|
|
const VkAccelerationStructureCreateInfoNV* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkAccelerationStructureNV* pAccelerationStructure)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
|
|
vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
|
|
return vkCreateAccelerationStructureNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateAccelerationStructureNV(
|
|
VkDevice device,
|
|
const VkAccelerationStructureCreateInfoNV* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkAccelerationStructureNV* pAccelerationStructure)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateAccelerationStructureNV_VkResult_return = (VkResult)0;
|
|
vkCreateAccelerationStructureNV_VkResult_return = vkEnc->vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
|
|
return vkCreateAccelerationStructureNV_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyAccelerationStructureNV(
|
|
VkDevice device,
|
|
VkAccelerationStructureNV accelerationStructure,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyAccelerationStructureNV(
|
|
VkDevice device,
|
|
VkAccelerationStructureNV accelerationStructure,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkGetAccelerationStructureMemoryRequirementsNV(
|
|
VkDevice device,
|
|
const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
|
|
VkMemoryRequirements2KHR* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV(
|
|
VkDevice device,
|
|
const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
|
|
VkMemoryRequirements2KHR* pMemoryRequirements)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureMemoryRequirementsNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureMemoryRequirementsNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkBindAccelerationStructureMemoryNV(
|
|
VkDevice device,
|
|
uint32_t bindInfoCount,
|
|
const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
|
|
vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
|
|
return vkBindAccelerationStructureMemoryNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkBindAccelerationStructureMemoryNV(
|
|
VkDevice device,
|
|
uint32_t bindInfoCount,
|
|
const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkBindAccelerationStructureMemoryNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkBindAccelerationStructureMemoryNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkBindAccelerationStructureMemoryNV_VkResult_return = (VkResult)0;
|
|
vkBindAccelerationStructureMemoryNV_VkResult_return = vkEnc->vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, true /* do lock */);
|
|
return vkBindAccelerationStructureMemoryNV_VkResult_return;
|
|
}
|
|
static void entry_vkCmdBuildAccelerationStructureNV(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkAccelerationStructureInfoNV* pInfo,
|
|
VkBuffer instanceData,
|
|
VkDeviceSize instanceOffset,
|
|
VkBool32 update,
|
|
VkAccelerationStructureNV dst,
|
|
VkAccelerationStructureNV src,
|
|
VkBuffer scratch,
|
|
VkDeviceSize scratchOffset)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBuildAccelerationStructureNV(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkAccelerationStructureInfoNV* pInfo,
|
|
VkBuffer instanceData,
|
|
VkDeviceSize instanceOffset,
|
|
VkBool32 update,
|
|
VkAccelerationStructureNV dst,
|
|
VkAccelerationStructureNV src,
|
|
VkBuffer scratch,
|
|
VkDeviceSize scratchOffset)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructureNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyAccelerationStructureNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkAccelerationStructureNV dst,
|
|
VkAccelerationStructureNV src,
|
|
VkCopyAccelerationStructureModeKHR mode)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyAccelerationStructureNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkAccelerationStructureNV dst,
|
|
VkAccelerationStructureNV src,
|
|
VkCopyAccelerationStructureModeKHR mode)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdTraceRaysNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer raygenShaderBindingTableBuffer,
|
|
VkDeviceSize raygenShaderBindingOffset,
|
|
VkBuffer missShaderBindingTableBuffer,
|
|
VkDeviceSize missShaderBindingOffset,
|
|
VkDeviceSize missShaderBindingStride,
|
|
VkBuffer hitShaderBindingTableBuffer,
|
|
VkDeviceSize hitShaderBindingOffset,
|
|
VkDeviceSize hitShaderBindingStride,
|
|
VkBuffer callableShaderBindingTableBuffer,
|
|
VkDeviceSize callableShaderBindingOffset,
|
|
VkDeviceSize callableShaderBindingStride,
|
|
uint32_t width,
|
|
uint32_t height,
|
|
uint32_t depth)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdTraceRaysNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer raygenShaderBindingTableBuffer,
|
|
VkDeviceSize raygenShaderBindingOffset,
|
|
VkBuffer missShaderBindingTableBuffer,
|
|
VkDeviceSize missShaderBindingOffset,
|
|
VkDeviceSize missShaderBindingStride,
|
|
VkBuffer hitShaderBindingTableBuffer,
|
|
VkDeviceSize hitShaderBindingOffset,
|
|
VkDeviceSize hitShaderBindingStride,
|
|
VkBuffer callableShaderBindingTableBuffer,
|
|
VkDeviceSize callableShaderBindingOffset,
|
|
VkDeviceSize callableShaderBindingStride,
|
|
uint32_t width,
|
|
uint32_t height,
|
|
uint32_t depth)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdTraceRaysNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateRayTracingPipelinesNV(
|
|
VkDevice device,
|
|
VkPipelineCache pipelineCache,
|
|
uint32_t createInfoCount,
|
|
const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPipeline* pPipelines)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
|
|
vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
|
|
return vkCreateRayTracingPipelinesNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateRayTracingPipelinesNV(
|
|
VkDevice device,
|
|
VkPipelineCache pipelineCache,
|
|
uint32_t createInfoCount,
|
|
const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPipeline* pPipelines)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRayTracingPipelinesNV_VkResult_return = (VkResult)0;
|
|
vkCreateRayTracingPipelinesNV_VkResult_return = vkEnc->vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
|
|
return vkCreateRayTracingPipelinesNV_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetRayTracingShaderGroupHandlesKHR(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t firstGroup,
|
|
uint32_t groupCount,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
|
|
vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
|
|
return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t firstGroup,
|
|
uint32_t groupCount,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesKHR", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
|
|
vkGetRayTracingShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
|
|
return vkGetRayTracingShaderGroupHandlesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetRayTracingShaderGroupHandlesNV(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t firstGroup,
|
|
uint32_t groupCount,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
|
|
vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
|
|
return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t firstGroup,
|
|
uint32_t groupCount,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupHandlesNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupHandlesNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRayTracingShaderGroupHandlesNV_VkResult_return = (VkResult)0;
|
|
vkGetRayTracingShaderGroupHandlesNV_VkResult_return = vkEnc->vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
|
|
return vkGetRayTracingShaderGroupHandlesNV_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetAccelerationStructureHandleNV(
|
|
VkDevice device,
|
|
VkAccelerationStructureNV accelerationStructure,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
|
|
vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
|
|
return vkGetAccelerationStructureHandleNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetAccelerationStructureHandleNV(
|
|
VkDevice device,
|
|
VkAccelerationStructureNV accelerationStructure,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureHandleNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureHandleNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetAccelerationStructureHandleNV_VkResult_return = (VkResult)0;
|
|
vkGetAccelerationStructureHandleNV_VkResult_return = vkEnc->vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, true /* do lock */);
|
|
return vkGetAccelerationStructureHandleNV_VkResult_return;
|
|
}
|
|
static void entry_vkCmdWriteAccelerationStructuresPropertiesNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t accelerationStructureCount,
|
|
const VkAccelerationStructureNV* pAccelerationStructures,
|
|
VkQueryType queryType,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t accelerationStructureCount,
|
|
const VkAccelerationStructureNV* pAccelerationStructures,
|
|
VkQueryType queryType,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdWriteAccelerationStructuresPropertiesNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCompileDeferredNV(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t shader)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCompileDeferredNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
|
|
vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
|
|
return vkCompileDeferredNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCompileDeferredNV(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t shader)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_ray_tracing"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCompileDeferredNV", "VK_NV_ray_tracing");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCompileDeferredNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCompileDeferredNV_VkResult_return = (VkResult)0;
|
|
vkCompileDeferredNV_VkResult_return = vkEnc->vkCompileDeferredNV(device, pipeline, shader, true /* do lock */);
|
|
return vkCompileDeferredNV_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_representative_fragment_test
|
|
#endif
|
|
#ifdef VK_EXT_filter_cubic
|
|
#endif
|
|
#ifdef VK_QCOM_render_pass_shader_resolve
|
|
#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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
|
|
vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
|
|
vkGetMemoryHostPointerPropertiesEXT_VkResult_return = vkEnc->vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, true /* do lock */);
|
|
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 = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdWriteBufferMarkerAMD(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineStageFlagBits pipelineStage,
|
|
VkBuffer dstBuffer,
|
|
VkDeviceSize dstOffset,
|
|
uint32_t marker)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_AMD_buffer_marker"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdWriteBufferMarkerAMD", "VK_AMD_buffer_marker");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_pipeline_compiler_control
|
|
#endif
|
|
#ifdef VK_EXT_calibrated_timestamps
|
|
static VkResult entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pTimeDomainCount,
|
|
VkTimeDomainEXT* pTimeDomains)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, true /* do lock */);
|
|
return vkGetPhysicalDeviceCalibrateableTimeDomainsEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetCalibratedTimestampsEXT(
|
|
VkDevice device,
|
|
uint32_t timestampCount,
|
|
const VkCalibratedTimestampInfoEXT* pTimestampInfos,
|
|
uint64_t* pTimestamps,
|
|
uint64_t* pMaxDeviation)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
|
|
vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
|
|
return vkGetCalibratedTimestampsEXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetCalibratedTimestampsEXT(
|
|
VkDevice device,
|
|
uint32_t timestampCount,
|
|
const VkCalibratedTimestampInfoEXT* pTimestampInfos,
|
|
uint64_t* pTimestamps,
|
|
uint64_t* pMaxDeviation)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetCalibratedTimestampsEXT", "VK_EXT_calibrated_timestamps");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetCalibratedTimestampsEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetCalibratedTimestampsEXT_VkResult_return = (VkResult)0;
|
|
vkGetCalibratedTimestampsEXT_VkResult_return = vkEnc->vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, true /* do lock */);
|
|
return vkGetCalibratedTimestampsEXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_shader_core_properties
|
|
#endif
|
|
#ifdef VK_EXT_video_decode_h265
|
|
#endif
|
|
#ifdef VK_AMD_memory_overallocation_behavior
|
|
#endif
|
|
#ifdef VK_EXT_vertex_attribute_divisor
|
|
#endif
|
|
#ifdef VK_GGP_frame_token
|
|
#endif
|
|
#ifdef VK_EXT_pipeline_creation_feedback
|
|
#endif
|
|
#ifdef VK_NV_shader_subgroup_partitioned
|
|
#endif
|
|
#ifdef VK_NV_compute_shader_derivatives
|
|
#endif
|
|
#ifdef VK_NV_mesh_shader
|
|
static void entry_vkCmdDrawMeshTasksNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t taskCount,
|
|
uint32_t firstTask)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawMeshTasksNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t taskCount,
|
|
uint32_t firstTask)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksNV", "VK_NV_mesh_shader");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawMeshTasksIndirectNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
uint32_t drawCount,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawMeshTasksIndirectNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
uint32_t drawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectNV", "VK_NV_mesh_shader");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawMeshTasksIndirectCountNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBuffer buffer,
|
|
VkDeviceSize offset,
|
|
VkBuffer countBuffer,
|
|
VkDeviceSize countBufferOffset,
|
|
uint32_t maxDrawCount,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_mesh_shader"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawMeshTasksIndirectCountNV", "VK_NV_mesh_shader");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMeshTasksIndirectCountNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_fragment_shader_barycentric
|
|
#endif
|
|
#ifdef VK_NV_shader_image_footprint
|
|
#endif
|
|
#ifdef VK_NV_scissor_exclusive
|
|
static void entry_vkCmdSetExclusiveScissorNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstExclusiveScissor,
|
|
uint32_t exclusiveScissorCount,
|
|
const VkRect2D* pExclusiveScissors)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetExclusiveScissorNV(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstExclusiveScissor,
|
|
uint32_t exclusiveScissorCount,
|
|
const VkRect2D* pExclusiveScissors)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetExclusiveScissorNV", "VK_NV_scissor_exclusive");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetExclusiveScissorNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_device_diagnostic_checkpoints
|
|
static void entry_vkCmdSetCheckpointNV(
|
|
VkCommandBuffer commandBuffer,
|
|
const void* pCheckpointMarker)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetCheckpointNV(
|
|
VkCommandBuffer commandBuffer,
|
|
const void* pCheckpointMarker)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_diagnostic_checkpoints"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetCheckpointNV", "VK_NV_device_diagnostic_checkpoints");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, true /* do lock */);
|
|
}
|
|
static void entry_vkGetQueueCheckpointDataNV(
|
|
VkQueue queue,
|
|
uint32_t* pCheckpointDataCount,
|
|
VkCheckpointDataNV* pCheckpointData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_INTEL_shader_integer_functions2
|
|
#endif
|
|
#ifdef VK_INTEL_performance_query
|
|
static VkResult entry_vkInitializePerformanceApiINTEL(
|
|
VkDevice device,
|
|
const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
|
|
vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
|
|
return vkInitializePerformanceApiINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkInitializePerformanceApiINTEL(
|
|
VkDevice device,
|
|
const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkInitializePerformanceApiINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkInitializePerformanceApiINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkInitializePerformanceApiINTEL_VkResult_return = (VkResult)0;
|
|
vkInitializePerformanceApiINTEL_VkResult_return = vkEnc->vkInitializePerformanceApiINTEL(device, pInitializeInfo, true /* do lock */);
|
|
return vkInitializePerformanceApiINTEL_VkResult_return;
|
|
}
|
|
static void entry_vkUninitializePerformanceApiINTEL(
|
|
VkDevice device)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkUninitializePerformanceApiINTEL(
|
|
VkDevice device)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkUninitializePerformanceApiINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkUninitializePerformanceApiINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUninitializePerformanceApiINTEL(device, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCmdSetPerformanceMarkerINTEL(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
|
|
vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCmdSetPerformanceMarkerINTEL(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceMarkerINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetPerformanceMarkerINTEL");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
VkResult vkCmdSetPerformanceMarkerINTEL_VkResult_return = (VkResult)0;
|
|
vkCmdSetPerformanceMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
return vkCmdSetPerformanceMarkerINTEL_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCmdSetPerformanceStreamMarkerINTEL(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
|
|
vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceStreamMarkerINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetPerformanceStreamMarkerINTEL");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
VkResult vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = (VkResult)0;
|
|
vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, true /* do lock */);
|
|
return vkCmdSetPerformanceStreamMarkerINTEL_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCmdSetPerformanceOverrideINTEL(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
|
|
vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
|
|
return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCmdSetPerformanceOverrideINTEL(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetPerformanceOverrideINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetPerformanceOverrideINTEL");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
VkResult vkCmdSetPerformanceOverrideINTEL_VkResult_return = (VkResult)0;
|
|
vkCmdSetPerformanceOverrideINTEL_VkResult_return = vkEnc->vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, true /* do lock */);
|
|
return vkCmdSetPerformanceOverrideINTEL_VkResult_return;
|
|
}
|
|
static VkResult entry_vkAcquirePerformanceConfigurationINTEL(
|
|
VkDevice device,
|
|
const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
|
|
VkPerformanceConfigurationINTEL* pConfiguration)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
|
|
vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
|
|
return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkAcquirePerformanceConfigurationINTEL(
|
|
VkDevice device,
|
|
const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
|
|
VkPerformanceConfigurationINTEL* pConfiguration)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkAcquirePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkAcquirePerformanceConfigurationINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquirePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
|
|
vkAcquirePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, true /* do lock */);
|
|
return vkAcquirePerformanceConfigurationINTEL_VkResult_return;
|
|
}
|
|
static VkResult entry_vkReleasePerformanceConfigurationINTEL(
|
|
VkDevice device,
|
|
VkPerformanceConfigurationINTEL configuration)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
|
|
vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
|
|
return vkReleasePerformanceConfigurationINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkReleasePerformanceConfigurationINTEL(
|
|
VkDevice device,
|
|
VkPerformanceConfigurationINTEL configuration)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkReleasePerformanceConfigurationINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkReleasePerformanceConfigurationINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkReleasePerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
|
|
vkReleasePerformanceConfigurationINTEL_VkResult_return = vkEnc->vkReleasePerformanceConfigurationINTEL(device, configuration, true /* do lock */);
|
|
return vkReleasePerformanceConfigurationINTEL_VkResult_return;
|
|
}
|
|
static VkResult entry_vkQueueSetPerformanceConfigurationINTEL(
|
|
VkQueue queue,
|
|
VkPerformanceConfigurationINTEL configuration)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueSetPerformanceConfigurationINTEL");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
VkResult vkQueueSetPerformanceConfigurationINTEL_VkResult_return = (VkResult)0;
|
|
vkQueueSetPerformanceConfigurationINTEL_VkResult_return = vkEnc->vkQueueSetPerformanceConfigurationINTEL(queue, configuration, true /* do lock */);
|
|
return vkQueueSetPerformanceConfigurationINTEL_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetPerformanceParameterINTEL(
|
|
VkDevice device,
|
|
VkPerformanceParameterTypeINTEL parameter,
|
|
VkPerformanceValueINTEL* pValue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
|
|
vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
|
|
return vkGetPerformanceParameterINTEL_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetPerformanceParameterINTEL(
|
|
VkDevice device,
|
|
VkPerformanceParameterTypeINTEL parameter,
|
|
VkPerformanceValueINTEL* pValue)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_INTEL_performance_query"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetPerformanceParameterINTEL", "VK_INTEL_performance_query");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetPerformanceParameterINTEL");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPerformanceParameterINTEL_VkResult_return = (VkResult)0;
|
|
vkGetPerformanceParameterINTEL_VkResult_return = vkEnc->vkGetPerformanceParameterINTEL(device, parameter, pValue, true /* do lock */);
|
|
return vkGetPerformanceParameterINTEL_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_pci_bus_info
|
|
#endif
|
|
#ifdef VK_AMD_display_native_hdr
|
|
static void entry_vkSetLocalDimmingAMD(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapChain,
|
|
VkBool32 localDimmingEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkSetLocalDimmingAMD(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapChain,
|
|
VkBool32 localDimmingEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSetLocalDimmingAMD", "VK_AMD_display_native_hdr");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSetLocalDimmingAMD");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_imagepipe_surface
|
|
static VkResult entry_vkCreateImagePipeSurfaceFUCHSIA(
|
|
VkInstance instance,
|
|
const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateImagePipeSurfaceFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkCreateImagePipeSurfaceFUCHSIA_VkResult_return = vkEnc->vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateImagePipeSurfaceFUCHSIA_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_metal_surface
|
|
static VkResult entry_vkCreateMetalSurfaceEXT(
|
|
VkInstance instance,
|
|
const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateMetalSurfaceEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateMetalSurfaceEXT_VkResult_return = (VkResult)0;
|
|
vkCreateMetalSurfaceEXT_VkResult_return = vkEnc->vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateMetalSurfaceEXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_fragment_density_map
|
|
#endif
|
|
#ifdef VK_EXT_scalar_block_layout
|
|
#endif
|
|
#ifdef VK_GOOGLE_hlsl_functionality1
|
|
#endif
|
|
#ifdef VK_GOOGLE_decorate_string
|
|
#endif
|
|
#ifdef VK_EXT_subgroup_size_control
|
|
#endif
|
|
#ifdef VK_AMD_shader_core_properties2
|
|
#endif
|
|
#ifdef VK_AMD_device_coherent_memory
|
|
#endif
|
|
#ifdef VK_EXT_shader_image_atomic_int64
|
|
#endif
|
|
#ifdef VK_EXT_memory_budget
|
|
#endif
|
|
#ifdef VK_EXT_memory_priority
|
|
#endif
|
|
#ifdef VK_NV_dedicated_allocation_image_aliasing
|
|
#endif
|
|
#ifdef VK_EXT_buffer_device_address
|
|
static VkDeviceAddress entry_vkGetBufferDeviceAddressEXT(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
|
|
return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
|
|
}
|
|
static VkDeviceAddress dynCheck_entry_vkGetBufferDeviceAddressEXT(
|
|
VkDevice device,
|
|
const VkBufferDeviceAddressInfo* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetBufferDeviceAddressEXT", "VK_EXT_buffer_device_address");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetBufferDeviceAddressEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetBufferDeviceAddressEXT_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressEXT(device, pInfo, true /* do lock */);
|
|
return vkGetBufferDeviceAddressEXT_VkDeviceAddress_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_tooling_info
|
|
static VkResult entry_vkGetPhysicalDeviceToolPropertiesEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pToolCount,
|
|
VkPhysicalDeviceToolPropertiesEXT* pToolProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceToolPropertiesEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_separate_stencil_usage
|
|
#endif
|
|
#ifdef VK_EXT_validation_features
|
|
#endif
|
|
#ifdef VK_NV_cooperative_matrix
|
|
static VkResult entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pPropertyCount,
|
|
VkCooperativeMatrixPropertiesNV* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return = vkEnc->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, true /* do lock */);
|
|
return vkGetPhysicalDeviceCooperativeMatrixPropertiesNV_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_coverage_reduction_mode
|
|
static VkResult entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t* pCombinationCount,
|
|
VkFramebufferMixedSamplesCombinationNV* pCombinations)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return = vkEnc->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, true /* do lock */);
|
|
return vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_fragment_shader_interlock
|
|
#endif
|
|
#ifdef VK_EXT_ycbcr_image_arrays
|
|
#endif
|
|
#ifdef VK_EXT_provoking_vertex
|
|
#endif
|
|
#ifdef VK_EXT_full_screen_exclusive
|
|
static VkResult entry_vkGetPhysicalDeviceSurfacePresentModes2EXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
uint32_t* pPresentModeCount,
|
|
VkPresentModeKHR* pPresentModes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModes2EXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
|
|
vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, true /* do lock */);
|
|
return vkGetPhysicalDeviceSurfacePresentModes2EXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkAcquireFullScreenExclusiveModeEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
|
|
vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
|
|
return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkAcquireFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkAcquireFullScreenExclusiveModeEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
|
|
vkAcquireFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkAcquireFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
|
|
return vkAcquireFullScreenExclusiveModeEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkReleaseFullScreenExclusiveModeEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
|
|
vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
|
|
return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT(
|
|
VkDevice device,
|
|
VkSwapchainKHR swapchain)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkReleaseFullScreenExclusiveModeEXT", "VK_EXT_full_screen_exclusive");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkReleaseFullScreenExclusiveModeEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkReleaseFullScreenExclusiveModeEXT_VkResult_return = (VkResult)0;
|
|
vkReleaseFullScreenExclusiveModeEXT_VkResult_return = vkEnc->vkReleaseFullScreenExclusiveModeEXT(device, swapchain, true /* do lock */);
|
|
return vkReleaseFullScreenExclusiveModeEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDeviceGroupSurfacePresentModes2EXT(
|
|
VkDevice device,
|
|
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
VkDeviceGroupPresentModeFlagsKHR* pModes)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
|
|
vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
|
|
return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT(
|
|
VkDevice device,
|
|
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
|
|
VkDeviceGroupPresentModeFlagsKHR* pModes)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceGroupSurfacePresentModes2EXT", "VK_EXT_full_screen_exclusive");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModes2EXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = (VkResult)0;
|
|
vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return = vkEnc->vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, true /* do lock */);
|
|
return vkGetDeviceGroupSurfacePresentModes2EXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_headless_surface
|
|
static VkResult entry_vkCreateHeadlessSurfaceEXT(
|
|
VkInstance instance,
|
|
const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateHeadlessSurfaceEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateHeadlessSurfaceEXT_VkResult_return = (VkResult)0;
|
|
vkCreateHeadlessSurfaceEXT_VkResult_return = vkEnc->vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateHeadlessSurfaceEXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_line_rasterization
|
|
static void entry_vkCmdSetLineStippleEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t lineStippleFactor,
|
|
uint16_t lineStipplePattern)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetLineStippleEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t lineStippleFactor,
|
|
uint16_t lineStipplePattern)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_line_rasterization"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetLineStippleEXT", "VK_EXT_line_rasterization");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetLineStippleEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_shader_atomic_float
|
|
#endif
|
|
#ifdef VK_EXT_host_query_reset
|
|
static void entry_vkResetQueryPoolEXT(
|
|
VkDevice device,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery,
|
|
uint32_t queryCount)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkResetQueryPoolEXT(
|
|
VkDevice device,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery,
|
|
uint32_t queryCount)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_host_query_reset"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkResetQueryPoolEXT", "VK_EXT_host_query_reset");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkResetQueryPoolEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_index_type_uint8
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state
|
|
static void entry_vkCmdSetCullModeEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCullModeFlags cullMode)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetCullModeEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCullModeFlags cullMode)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetCullModeEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetCullModeEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetCullModeEXT(commandBuffer, cullMode, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetFrontFaceEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkFrontFace frontFace)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetFrontFaceEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkFrontFace frontFace)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetFrontFaceEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetFrontFaceEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetFrontFaceEXT(commandBuffer, frontFace, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetPrimitiveTopologyEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPrimitiveTopology primitiveTopology)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetPrimitiveTopologyEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPrimitiveTopology primitiveTopology)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetPrimitiveTopologyEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetPrimitiveTopologyEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetViewportWithCountEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t viewportCount,
|
|
const VkViewport* pViewports)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetViewportWithCountEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t viewportCount,
|
|
const VkViewport* pViewports)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetViewportWithCountEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetViewportWithCountEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetScissorWithCountEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t scissorCount,
|
|
const VkRect2D* pScissors)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetScissorWithCountEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t scissorCount,
|
|
const VkRect2D* pScissors)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetScissorWithCountEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetScissorWithCountEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBindVertexBuffers2EXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstBinding,
|
|
uint32_t bindingCount,
|
|
const VkBuffer* pBuffers,
|
|
const VkDeviceSize* pOffsets,
|
|
const VkDeviceSize* pSizes,
|
|
const VkDeviceSize* pStrides)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBindVertexBuffers2EXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t firstBinding,
|
|
uint32_t bindingCount,
|
|
const VkBuffer* pBuffers,
|
|
const VkDeviceSize* pOffsets,
|
|
const VkDeviceSize* pSizes,
|
|
const VkDeviceSize* pStrides)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBindVertexBuffers2EXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers2EXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthTestEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthTestEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDepthTestEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthTestEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthTestEnableEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthTestEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthWriteEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthWriteEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDepthWriteEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthWriteEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthWriteEnableEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthWriteEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthCompareOpEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCompareOp depthCompareOp)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDepthCompareOpEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCompareOp depthCompareOp)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthCompareOpEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthCompareOpEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthBoundsTestEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthBoundsTestEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthBoundsTestEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthBoundsTestEnableEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthBoundsTestEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetStencilTestEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 stencilTestEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetStencilTestEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 stencilTestEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetStencilTestEnableEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilTestEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetStencilOpEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkStencilFaceFlags faceMask,
|
|
VkStencilOp failOp,
|
|
VkStencilOp passOp,
|
|
VkStencilOp depthFailOp,
|
|
VkCompareOp compareOp)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetStencilOpEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkStencilFaceFlags faceMask,
|
|
VkStencilOp failOp,
|
|
VkStencilOp passOp,
|
|
VkStencilOp depthFailOp,
|
|
VkCompareOp compareOp)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetStencilOpEXT", "VK_EXT_extended_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetStencilOpEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_shader_atomic_float2
|
|
#endif
|
|
#ifdef VK_EXT_shader_demote_to_helper_invocation
|
|
#endif
|
|
#ifdef VK_NV_device_generated_commands
|
|
static void entry_vkGetGeneratedCommandsMemoryRequirementsNV(
|
|
VkDevice device,
|
|
const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV(
|
|
VkDevice device,
|
|
const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
|
|
VkMemoryRequirements2* pMemoryRequirements)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetGeneratedCommandsMemoryRequirementsNV", "VK_NV_device_generated_commands");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetGeneratedCommandsMemoryRequirementsNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdPreprocessGeneratedCommandsNV(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdPreprocessGeneratedCommandsNV", "VK_NV_device_generated_commands");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdPreprocessGeneratedCommandsNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdExecuteGeneratedCommandsNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 isPreprocessed,
|
|
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdExecuteGeneratedCommandsNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 isPreprocessed,
|
|
const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdExecuteGeneratedCommandsNV", "VK_NV_device_generated_commands");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdExecuteGeneratedCommandsNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBindPipelineShaderGroupNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineBindPoint pipelineBindPoint,
|
|
VkPipeline pipeline,
|
|
uint32_t groupIndex)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBindPipelineShaderGroupNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkPipelineBindPoint pipelineBindPoint,
|
|
VkPipeline pipeline,
|
|
uint32_t groupIndex)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBindPipelineShaderGroupNV", "VK_NV_device_generated_commands");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBindPipelineShaderGroupNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateIndirectCommandsLayoutNV(
|
|
VkDevice device,
|
|
const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
|
|
vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
|
|
return vkCreateIndirectCommandsLayoutNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateIndirectCommandsLayoutNV(
|
|
VkDevice device,
|
|
const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateIndirectCommandsLayoutNV_VkResult_return = (VkResult)0;
|
|
vkCreateIndirectCommandsLayoutNV_VkResult_return = vkEnc->vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, true /* do lock */);
|
|
return vkCreateIndirectCommandsLayoutNV_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyIndirectCommandsLayoutNV(
|
|
VkDevice device,
|
|
VkIndirectCommandsLayoutNV indirectCommandsLayout,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyIndirectCommandsLayoutNV(
|
|
VkDevice device,
|
|
VkIndirectCommandsLayoutNV indirectCommandsLayout,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_device_generated_commands"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyIndirectCommandsLayoutNV", "VK_NV_device_generated_commands");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_inherited_viewport_scissor
|
|
#endif
|
|
#ifdef VK_EXT_texel_buffer_alignment
|
|
#endif
|
|
#ifdef VK_QCOM_render_pass_transform
|
|
#endif
|
|
#ifdef VK_EXT_device_memory_report
|
|
#endif
|
|
#ifdef VK_EXT_acquire_drm_display
|
|
static VkResult entry_vkAcquireDrmDisplayEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
int32_t drmFd,
|
|
VkDisplayKHR display)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquireDrmDisplayEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireDrmDisplayEXT_VkResult_return = (VkResult)0;
|
|
vkAcquireDrmDisplayEXT_VkResult_return = vkEnc->vkAcquireDrmDisplayEXT(physicalDevice, drmFd, display, true /* do lock */);
|
|
return vkAcquireDrmDisplayEXT_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetDrmDisplayEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
int32_t drmFd,
|
|
uint32_t connectorId,
|
|
VkDisplayKHR* display)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDrmDisplayEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDrmDisplayEXT_VkResult_return = (VkResult)0;
|
|
vkGetDrmDisplayEXT_VkResult_return = vkEnc->vkGetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display, true /* do lock */);
|
|
return vkGetDrmDisplayEXT_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_robustness2
|
|
#endif
|
|
#ifdef VK_EXT_custom_border_color
|
|
#endif
|
|
#ifdef VK_GOOGLE_user_type
|
|
#endif
|
|
#ifdef VK_EXT_private_data
|
|
static VkResult entry_vkCreatePrivateDataSlotEXT(
|
|
VkDevice device,
|
|
const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPrivateDataSlotEXT* pPrivateDataSlot)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
|
|
vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
|
|
return vkCreatePrivateDataSlotEXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreatePrivateDataSlotEXT(
|
|
VkDevice device,
|
|
const VkPrivateDataSlotCreateInfoEXT* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPrivateDataSlotEXT* pPrivateDataSlot)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreatePrivateDataSlotEXT", "VK_EXT_private_data");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreatePrivateDataSlotEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
|
|
vkCreatePrivateDataSlotEXT_VkResult_return = vkEnc->vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, true /* do lock */);
|
|
return vkCreatePrivateDataSlotEXT_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyPrivateDataSlotEXT(
|
|
VkDevice device,
|
|
VkPrivateDataSlotEXT privateDataSlot,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyPrivateDataSlotEXT(
|
|
VkDevice device,
|
|
VkPrivateDataSlotEXT privateDataSlot,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyPrivateDataSlotEXT", "VK_EXT_private_data");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyPrivateDataSlotEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkSetPrivateDataEXT(
|
|
VkDevice device,
|
|
VkObjectType objectType,
|
|
uint64_t objectHandle,
|
|
VkPrivateDataSlotEXT privateDataSlot,
|
|
uint64_t data)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
|
|
vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
|
|
return vkSetPrivateDataEXT_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkSetPrivateDataEXT(
|
|
VkDevice device,
|
|
VkObjectType objectType,
|
|
uint64_t objectHandle,
|
|
VkPrivateDataSlotEXT privateDataSlot,
|
|
uint64_t data)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSetPrivateDataEXT", "VK_EXT_private_data");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSetPrivateDataEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
|
|
vkSetPrivateDataEXT_VkResult_return = vkEnc->vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, true /* do lock */);
|
|
return vkSetPrivateDataEXT_VkResult_return;
|
|
}
|
|
static void entry_vkGetPrivateDataEXT(
|
|
VkDevice device,
|
|
VkObjectType objectType,
|
|
uint64_t objectHandle,
|
|
VkPrivateDataSlotEXT privateDataSlot,
|
|
uint64_t* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetPrivateDataEXT(
|
|
VkDevice device,
|
|
VkObjectType objectType,
|
|
uint64_t objectHandle,
|
|
VkPrivateDataSlotEXT privateDataSlot,
|
|
uint64_t* pData)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_private_data"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetPrivateDataEXT", "VK_EXT_private_data");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetPrivateDataEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_pipeline_creation_cache_control
|
|
#endif
|
|
#ifdef VK_NV_device_diagnostics_config
|
|
#endif
|
|
#ifdef VK_QCOM_render_pass_store_ops
|
|
#endif
|
|
#ifdef VK_NV_fragment_shading_rate_enums
|
|
static void entry_vkCmdSetFragmentShadingRateEnumNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkFragmentShadingRateNV shadingRate,
|
|
const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV(
|
|
VkCommandBuffer commandBuffer,
|
|
VkFragmentShadingRateNV shadingRate,
|
|
const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetFragmentShadingRateEnumNV", "VK_NV_fragment_shading_rate_enums");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetFragmentShadingRateEnumNV");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_ray_tracing_motion_blur
|
|
#endif
|
|
#ifdef VK_EXT_ycbcr_2plane_444_formats
|
|
#endif
|
|
#ifdef VK_EXT_fragment_density_map2
|
|
#endif
|
|
#ifdef VK_QCOM_rotated_copy_commands
|
|
#endif
|
|
#ifdef VK_EXT_image_robustness
|
|
#endif
|
|
#ifdef VK_EXT_4444_formats
|
|
#endif
|
|
#ifdef VK_EXT_rgba10x6_formats
|
|
#endif
|
|
#ifdef VK_NV_acquire_winrt_display
|
|
static VkResult entry_vkAcquireWinrtDisplayNV(
|
|
VkPhysicalDevice physicalDevice,
|
|
VkDisplayKHR display)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkAcquireWinrtDisplayNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkAcquireWinrtDisplayNV_VkResult_return = (VkResult)0;
|
|
vkAcquireWinrtDisplayNV_VkResult_return = vkEnc->vkAcquireWinrtDisplayNV(physicalDevice, display, true /* do lock */);
|
|
return vkAcquireWinrtDisplayNV_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetWinrtDisplayNV(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t deviceRelativeId,
|
|
VkDisplayKHR* pDisplay)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetWinrtDisplayNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetWinrtDisplayNV_VkResult_return = (VkResult)0;
|
|
vkGetWinrtDisplayNV_VkResult_return = vkEnc->vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, true /* do lock */);
|
|
return vkGetWinrtDisplayNV_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_directfb_surface
|
|
static VkResult entry_vkCreateDirectFBSurfaceEXT(
|
|
VkInstance instance,
|
|
const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateDirectFBSurfaceEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateDirectFBSurfaceEXT_VkResult_return = (VkResult)0;
|
|
vkCreateDirectFBSurfaceEXT_VkResult_return = vkEnc->vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateDirectFBSurfaceEXT_VkResult_return;
|
|
}
|
|
static VkBool32 entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex,
|
|
IDirectFB* dfb)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = (VkBool32)0;
|
|
vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return = vkEnc->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, true /* do lock */);
|
|
return vkGetPhysicalDeviceDirectFBPresentationSupportEXT_VkBool32_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_VALVE_mutable_descriptor_type
|
|
#endif
|
|
#ifdef VK_EXT_vertex_input_dynamic_state
|
|
static void entry_vkCmdSetVertexInputEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t vertexBindingDescriptionCount,
|
|
const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
|
|
uint32_t vertexAttributeDescriptionCount,
|
|
const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetVertexInputEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t vertexBindingDescriptionCount,
|
|
const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
|
|
uint32_t vertexAttributeDescriptionCount,
|
|
const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetVertexInputEXT", "VK_EXT_vertex_input_dynamic_state");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetVertexInputEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_physical_device_drm
|
|
#endif
|
|
#ifdef VK_EXT_primitive_topology_list_restart
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_memory
|
|
static VkResult entry_vkGetMemoryZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
|
zx_handle_t* pZirconHandle)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
|
|
return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
|
zx_handle_t* pZirconHandle)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandleFUCHSIA", "VK_FUCHSIA_external_memory");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetMemoryZirconHandleFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetMemoryZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
|
|
return vkGetMemoryZirconHandleFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
|
|
VkDevice device,
|
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
|
zx_handle_t zirconHandle,
|
|
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
|
|
return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA(
|
|
VkDevice device,
|
|
VkExternalMemoryHandleTypeFlagBits handleType,
|
|
zx_handle_t zirconHandle,
|
|
VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetMemoryZirconHandlePropertiesFUCHSIA", "VK_FUCHSIA_external_memory");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetMemoryZirconHandlePropertiesFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return = vkEnc->vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, true /* do lock */);
|
|
return vkGetMemoryZirconHandlePropertiesFUCHSIA_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_semaphore
|
|
static VkResult entry_vkImportSemaphoreZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
|
|
return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkImportSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkImportSemaphoreZirconHandleFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, true /* do lock */);
|
|
return vkImportSemaphoreZirconHandleFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetSemaphoreZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
|
zx_handle_t* pZirconHandle)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
|
|
return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA(
|
|
VkDevice device,
|
|
const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
|
|
zx_handle_t* pZirconHandle)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetSemaphoreZirconHandleFUCHSIA", "VK_FUCHSIA_external_semaphore");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetSemaphoreZirconHandleFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return = vkEnc->vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, true /* do lock */);
|
|
return vkGetSemaphoreZirconHandleFUCHSIA_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_buffer_collection
|
|
static VkResult entry_vkCreateBufferCollectionFUCHSIA(
|
|
VkDevice device,
|
|
const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkBufferCollectionFUCHSIA* pCollection)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
|
|
return vkCreateBufferCollectionFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateBufferCollectionFUCHSIA(
|
|
VkDevice device,
|
|
const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkBufferCollectionFUCHSIA* pCollection)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateBufferCollectionFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateBufferCollectionFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkCreateBufferCollectionFUCHSIA_VkResult_return = vkEnc->vkCreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection, true /* do lock */);
|
|
return vkCreateBufferCollectionFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
|
|
return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionImageConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSetBufferCollectionImageConstraintsFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo, true /* do lock */);
|
|
return vkSetBufferCollectionImageConstraintsFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
|
|
return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSetBufferCollectionBufferConstraintsFUCHSIA", "VK_FUCHSIA_buffer_collection");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSetBufferCollectionBufferConstraintsFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return = vkEnc->vkSetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo, true /* do lock */);
|
|
return vkSetBufferCollectionBufferConstraintsFUCHSIA_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyBufferCollectionFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyBufferCollectionFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyBufferCollectionFUCHSIA", "VK_FUCHSIA_buffer_collection");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyBufferCollectionFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyBufferCollectionFUCHSIA(device, collection, pAllocator, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkGetBufferCollectionPropertiesFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
VkBufferCollectionPropertiesFUCHSIA* pProperties)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
|
|
return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA(
|
|
VkDevice device,
|
|
VkBufferCollectionFUCHSIA collection,
|
|
VkBufferCollectionPropertiesFUCHSIA* pProperties)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetBufferCollectionPropertiesFUCHSIA", "VK_FUCHSIA_buffer_collection");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetBufferCollectionPropertiesFUCHSIA");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = (VkResult)0;
|
|
vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return = vkEnc->vkGetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties, true /* do lock */);
|
|
return vkGetBufferCollectionPropertiesFUCHSIA_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_subpass_shading
|
|
static VkResult entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
|
|
VkDevice device,
|
|
VkRenderPass renderpass,
|
|
VkExtent2D* pMaxWorkgroupSize)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
|
|
vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
|
|
return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
|
|
VkDevice device,
|
|
VkRenderPass renderpass,
|
|
VkExtent2D* pMaxWorkgroupSize)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", "VK_HUAWEI_subpass_shading");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = (VkResult)0;
|
|
vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return = vkEnc->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize, true /* do lock */);
|
|
return vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI_VkResult_return;
|
|
}
|
|
static void entry_vkCmdSubpassShadingHUAWEI(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSubpassShadingHUAWEI(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSubpassShadingHUAWEI", "VK_HUAWEI_subpass_shading");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSubpassShadingHUAWEI");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSubpassShadingHUAWEI(commandBuffer, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_invocation_mask
|
|
static void entry_vkCmdBindInvocationMaskHUAWEI(
|
|
VkCommandBuffer commandBuffer,
|
|
VkImageView imageView,
|
|
VkImageLayout imageLayout)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBindInvocationMaskHUAWEI(
|
|
VkCommandBuffer commandBuffer,
|
|
VkImageView imageView,
|
|
VkImageLayout imageLayout)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBindInvocationMaskHUAWEI", "VK_HUAWEI_invocation_mask");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBindInvocationMaskHUAWEI");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_external_memory_rdma
|
|
static VkResult entry_vkGetMemoryRemoteAddressNV(
|
|
VkDevice device,
|
|
const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
|
|
VkRemoteAddressNV* pAddress)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
|
|
vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
|
|
return vkGetMemoryRemoteAddressNV_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetMemoryRemoteAddressNV(
|
|
VkDevice device,
|
|
const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
|
|
VkRemoteAddressNV* pAddress)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetMemoryRemoteAddressNV", "VK_NV_external_memory_rdma");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetMemoryRemoteAddressNV");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryRemoteAddressNV_VkResult_return = (VkResult)0;
|
|
vkGetMemoryRemoteAddressNV_VkResult_return = vkEnc->vkGetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress, true /* do lock */);
|
|
return vkGetMemoryRemoteAddressNV_VkResult_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state2
|
|
static void entry_vkCmdSetPatchControlPointsEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t patchControlPoints)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetPatchControlPointsEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t patchControlPoints)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetPatchControlPointsEXT", "VK_EXT_extended_dynamic_state2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetPatchControlPointsEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetRasterizerDiscardEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 rasterizerDiscardEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 rasterizerDiscardEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetRasterizerDiscardEnableEXT", "VK_EXT_extended_dynamic_state2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetRasterizerDiscardEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetDepthBiasEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthBiasEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetDepthBiasEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 depthBiasEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetDepthBiasEnableEXT", "VK_EXT_extended_dynamic_state2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetDepthBiasEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetLogicOpEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkLogicOp logicOp)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetLogicOpEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkLogicOp logicOp)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetLogicOpEXT", "VK_EXT_extended_dynamic_state2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetLogicOpEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetLogicOpEXT(commandBuffer, logicOp, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdSetPrimitiveRestartEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 primitiveRestartEnable)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
VkBool32 primitiveRestartEnable)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetPrimitiveRestartEnableEXT", "VK_EXT_extended_dynamic_state2");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetPrimitiveRestartEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_QNX_screen_surface
|
|
static VkResult entry_vkCreateScreenSurfaceQNX(
|
|
VkInstance instance,
|
|
const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkSurfaceKHR* pSurface)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateScreenSurfaceQNX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateScreenSurfaceQNX_VkResult_return = (VkResult)0;
|
|
vkCreateScreenSurfaceQNX_VkResult_return = vkEnc->vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface, true /* do lock */);
|
|
return vkCreateScreenSurfaceQNX_VkResult_return;
|
|
}
|
|
static VkBool32 entry_vkGetPhysicalDeviceScreenPresentationSupportQNX(
|
|
VkPhysicalDevice physicalDevice,
|
|
uint32_t queueFamilyIndex,
|
|
_screen_window* window)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetPhysicalDeviceScreenPresentationSupportQNX");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = (VkBool32)0;
|
|
vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return = vkEnc->vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window, true /* do lock */);
|
|
return vkGetPhysicalDeviceScreenPresentationSupportQNX_VkBool32_return;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_color_write_enable
|
|
static void entry_vkCmdSetColorWriteEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t attachmentCount,
|
|
const VkBool32* pColorWriteEnables)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetColorWriteEnableEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t attachmentCount,
|
|
const VkBool32* pColorWriteEnables)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_color_write_enable"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetColorWriteEnableEXT", "VK_EXT_color_write_enable");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetColorWriteEnableEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_GOOGLE_gfxstream
|
|
static VkResult entry_vkRegisterImageColorBufferGOOGLE(
|
|
VkDevice device,
|
|
VkImage image,
|
|
uint32_t colorBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
|
|
vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkRegisterImageColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
|
|
vkRegisterImageColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterImageColorBufferGOOGLE(device, image, colorBuffer, true /* do lock */);
|
|
return vkRegisterImageColorBufferGOOGLE_VkResult_return;
|
|
}
|
|
static VkResult entry_vkRegisterBufferColorBufferGOOGLE(
|
|
VkDevice device,
|
|
VkBuffer buffer,
|
|
uint32_t colorBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
|
|
vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkRegisterBufferColorBufferGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
|
|
vkRegisterBufferColorBufferGOOGLE_VkResult_return = vkEnc->vkRegisterBufferColorBufferGOOGLE(device, buffer, colorBuffer, true /* do lock */);
|
|
return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
|
|
}
|
|
static VkResult entry_vkMapMemoryIntoAddressSpaceGOOGLE(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
uint64_t* pAddress)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
|
|
vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkMapMemoryIntoAddressSpaceGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
|
|
vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(device, memory, pAddress, true /* do lock */);
|
|
return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
|
|
}
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
|
|
}
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkUpdateDescriptorSetWithTemplateSizedGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(device, descriptorSet, descriptorUpdateTemplate, imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos, pBufferInfos, pBufferViews, true /* do lock */);
|
|
}
|
|
static void entry_vkBeginCommandBufferAsyncGOOGLE(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCommandBufferBeginInfo* pBeginInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkBeginCommandBufferAsyncGOOGLE(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCommandBufferBeginInfo* pBeginInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkBeginCommandBufferAsyncGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkBeginCommandBufferAsyncGOOGLE(commandBuffer, pBeginInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkEndCommandBufferAsyncGOOGLE(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkEndCommandBufferAsyncGOOGLE(
|
|
VkCommandBuffer commandBuffer)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkEndCommandBufferAsyncGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkEndCommandBufferAsyncGOOGLE(commandBuffer, true /* do lock */);
|
|
}
|
|
static void entry_vkResetCommandBufferAsyncGOOGLE(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCommandBufferResetFlags flags)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkResetCommandBufferAsyncGOOGLE(
|
|
VkCommandBuffer commandBuffer,
|
|
VkCommandBufferResetFlags flags)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkResetCommandBufferAsyncGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkResetCommandBufferAsyncGOOGLE(commandBuffer, flags, true /* do lock */);
|
|
}
|
|
static void entry_vkCommandBufferHostSyncGOOGLE(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t needHostSync,
|
|
uint32_t sequenceNumber)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCommandBufferHostSyncGOOGLE(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t needHostSync,
|
|
uint32_t sequenceNumber)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCommandBufferHostSyncGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCommandBufferHostSyncGOOGLE(commandBuffer, needHostSync, sequenceNumber, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateImageWithRequirementsGOOGLE(
|
|
VkDevice device,
|
|
const VkImageCreateInfo* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkImage* pImage,
|
|
VkMemoryRequirements* pMemoryRequirements)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
|
|
vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateImageWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
|
|
vkCreateImageWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateImageWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pImage, pMemoryRequirements, true /* do lock */);
|
|
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 = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
|
|
vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateBufferWithRequirementsGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
|
|
vkCreateBufferWithRequirementsGOOGLE_VkResult_return = vkEnc->vkCreateBufferWithRequirementsGOOGLE(device, pCreateInfo, pAllocator, pBuffer, pMemoryRequirements, true /* do lock */);
|
|
return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetMemoryHostAddressInfoGOOGLE(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
uint64_t* pAddress,
|
|
uint64_t* pSize,
|
|
uint64_t* pHostmemId)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
|
|
vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetMemoryHostAddressInfoGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
|
|
vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(device, memory, pAddress, pSize, pHostmemId, true /* do lock */);
|
|
return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
|
|
}
|
|
static VkResult entry_vkFreeMemorySyncGOOGLE(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
|
|
vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
|
|
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_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkFreeMemorySyncGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
|
|
vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(device, memory, pAllocator, true /* do lock */);
|
|
return vkFreeMemorySyncGOOGLE_VkResult_return;
|
|
}
|
|
static void entry_vkQueueHostSyncGOOGLE(
|
|
VkQueue queue,
|
|
uint32_t needHostSync,
|
|
uint32_t sequenceNumber)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueHostSyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueHostSyncGOOGLE(queue, needHostSync, sequenceNumber, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueSubmitAsyncGOOGLE(
|
|
VkQueue queue,
|
|
uint32_t submitCount,
|
|
const VkSubmitInfo* pSubmits,
|
|
VkFence fence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueSubmitAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueSubmitAsyncGOOGLE(queue, submitCount, pSubmits, fence, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueWaitIdleAsyncGOOGLE(
|
|
VkQueue queue)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueWaitIdleAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueWaitIdleAsyncGOOGLE(queue, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueBindSparseAsyncGOOGLE(
|
|
VkQueue queue,
|
|
uint32_t bindInfoCount,
|
|
const VkBindSparseInfo* pBindInfo,
|
|
VkFence fence)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueBindSparseAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueBindSparseAsyncGOOGLE(queue, bindInfoCount, pBindInfo, fence, true /* do lock */);
|
|
}
|
|
static void entry_vkGetLinearImageLayoutGOOGLE(
|
|
VkDevice device,
|
|
VkFormat format,
|
|
VkDeviceSize* pOffset,
|
|
VkDeviceSize* pRowPitchAlignment)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetLinearImageLayoutGOOGLE(
|
|
VkDevice device,
|
|
VkFormat format,
|
|
VkDeviceSize* pOffset,
|
|
VkDeviceSize* pRowPitchAlignment)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayoutGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetLinearImageLayoutGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetLinearImageLayoutGOOGLE(device, format, pOffset, pRowPitchAlignment, true /* do lock */);
|
|
}
|
|
static void entry_vkGetLinearImageLayout2GOOGLE(
|
|
VkDevice device,
|
|
const VkImageCreateInfo* pCreateInfo,
|
|
VkDeviceSize* pOffset,
|
|
VkDeviceSize* pRowPitchAlignment)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetLinearImageLayout2GOOGLE(
|
|
VkDevice device,
|
|
const VkImageCreateInfo* pCreateInfo,
|
|
VkDeviceSize* pOffset,
|
|
VkDeviceSize* pRowPitchAlignment)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetLinearImageLayout2GOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetLinearImageLayout2GOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetLinearImageLayout2GOOGLE(device, pCreateInfo, pOffset, pRowPitchAlignment, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueFlushCommandsGOOGLE(
|
|
VkQueue queue,
|
|
VkCommandBuffer commandBuffer,
|
|
VkDeviceSize dataSize,
|
|
const void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueFlushCommandsGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueFlushCommandsGOOGLE(queue, commandBuffer, dataSize, pData, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueCommitDescriptorSetUpdatesGOOGLE(
|
|
VkQueue queue,
|
|
uint32_t descriptorPoolCount,
|
|
const VkDescriptorPool* pDescriptorPools,
|
|
uint32_t descriptorSetCount,
|
|
const VkDescriptorSetLayout* pSetLayouts,
|
|
const uint64_t* pDescriptorSetPoolIds,
|
|
const uint32_t* pDescriptorSetWhichPool,
|
|
const uint32_t* pDescriptorSetPendingAllocation,
|
|
const uint32_t* pDescriptorWriteStartingIndices,
|
|
uint32_t pendingDescriptorWriteCount,
|
|
const VkWriteDescriptorSet* pPendingDescriptorWrites)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(queue, descriptorPoolCount, pDescriptorPools, descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool, pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices, pendingDescriptorWriteCount, pPendingDescriptorWrites, true /* do lock */);
|
|
}
|
|
static void entry_vkCollectDescriptorPoolIdsGOOGLE(
|
|
VkDevice device,
|
|
VkDescriptorPool descriptorPool,
|
|
uint32_t* pPoolIdCount,
|
|
uint64_t* pPoolIds)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE(
|
|
VkDevice device,
|
|
VkDescriptorPool descriptorPool,
|
|
uint32_t* pPoolIdCount,
|
|
uint64_t* pPoolIds)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCollectDescriptorPoolIdsGOOGLE", "VK_GOOGLE_gfxstream");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCollectDescriptorPoolIdsGOOGLE");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkCollectDescriptorPoolIdsGOOGLE(device, descriptorPool, pPoolIdCount, pPoolIds, true /* do lock */);
|
|
}
|
|
static void entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
|
|
VkQueue queue,
|
|
uint32_t waitSemaphoreCount,
|
|
const VkSemaphore* pWaitSemaphores,
|
|
VkImage image)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
|
|
auto vkEnc = ResourceTracker::getQueueEncoder(queue);
|
|
vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(queue, waitSemaphoreCount, pWaitSemaphores, image, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_global_priority_query
|
|
#endif
|
|
#ifdef VK_EXT_multi_draw
|
|
static void entry_vkCmdDrawMultiEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t drawCount,
|
|
const VkMultiDrawInfoEXT* pVertexInfo,
|
|
uint32_t instanceCount,
|
|
uint32_t firstInstance,
|
|
uint32_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawMultiEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t drawCount,
|
|
const VkMultiDrawInfoEXT* pVertexInfo,
|
|
uint32_t instanceCount,
|
|
uint32_t firstInstance,
|
|
uint32_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_multi_draw"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawMultiEXT", "VK_EXT_multi_draw");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMultiEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdDrawMultiIndexedEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t drawCount,
|
|
const VkMultiDrawIndexedInfoEXT* pIndexInfo,
|
|
uint32_t instanceCount,
|
|
uint32_t firstInstance,
|
|
uint32_t stride,
|
|
const int32_t* pVertexOffset)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdDrawMultiIndexedEXT(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t drawCount,
|
|
const VkMultiDrawIndexedInfoEXT* pIndexInfo,
|
|
uint32_t instanceCount,
|
|
uint32_t firstInstance,
|
|
uint32_t stride,
|
|
const int32_t* pVertexOffset)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_multi_draw"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdDrawMultiIndexedEXT", "VK_EXT_multi_draw");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdDrawMultiIndexedEXT");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_load_store_op_none
|
|
#endif
|
|
#ifdef VK_EXT_border_color_swizzle
|
|
#endif
|
|
#ifdef VK_EXT_pageable_device_local_memory
|
|
static void entry_vkSetDeviceMemoryPriorityEXT(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
float priority)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkSetDeviceMemoryPriorityEXT(
|
|
VkDevice device,
|
|
VkDeviceMemory memory,
|
|
float priority)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkSetDeviceMemoryPriorityEXT", "VK_EXT_pageable_device_local_memory");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkSetDeviceMemoryPriorityEXT");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkSetDeviceMemoryPriorityEXT(device, memory, priority, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_acceleration_structure
|
|
static VkResult entry_vkCreateAccelerationStructureKHR(
|
|
VkDevice device,
|
|
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkAccelerationStructureKHR* pAccelerationStructure)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
|
|
vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
|
|
return vkCreateAccelerationStructureKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateAccelerationStructureKHR(
|
|
VkDevice device,
|
|
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkAccelerationStructureKHR* pAccelerationStructure)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateAccelerationStructureKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateAccelerationStructureKHR_VkResult_return = (VkResult)0;
|
|
vkCreateAccelerationStructureKHR_VkResult_return = vkEnc->vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, true /* do lock */);
|
|
return vkCreateAccelerationStructureKHR_VkResult_return;
|
|
}
|
|
static void entry_vkDestroyAccelerationStructureKHR(
|
|
VkDevice device,
|
|
VkAccelerationStructureKHR accelerationStructure,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkDestroyAccelerationStructureKHR(
|
|
VkDevice device,
|
|
VkAccelerationStructureKHR accelerationStructure,
|
|
const VkAllocationCallbacks* pAllocator)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkDestroyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkDestroyAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBuildAccelerationStructuresKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t infoCount,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
|
|
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBuildAccelerationStructuresKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t infoCount,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
|
|
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdBuildAccelerationStructuresIndirectKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t infoCount,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
|
|
const VkDeviceAddress* pIndirectDeviceAddresses,
|
|
const uint32_t* pIndirectStrides,
|
|
const uint32_t* const* ppMaxPrimitiveCounts)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t infoCount,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
|
|
const VkDeviceAddress* pIndirectDeviceAddresses,
|
|
const uint32_t* pIndirectStrides,
|
|
const uint32_t* const* ppMaxPrimitiveCounts)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdBuildAccelerationStructuresIndirectKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdBuildAccelerationStructuresIndirectKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkBuildAccelerationStructuresKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
uint32_t infoCount,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
|
|
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
|
|
vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
|
|
return vkBuildAccelerationStructuresKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkBuildAccelerationStructuresKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
uint32_t infoCount,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
|
|
const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkBuildAccelerationStructuresKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkBuildAccelerationStructuresKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkBuildAccelerationStructuresKHR_VkResult_return = (VkResult)0;
|
|
vkBuildAccelerationStructuresKHR_VkResult_return = vkEnc->vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, true /* do lock */);
|
|
return vkBuildAccelerationStructuresKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCopyAccelerationStructureKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
const VkCopyAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
|
|
vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
|
|
return vkCopyAccelerationStructureKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCopyAccelerationStructureKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
const VkCopyAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCopyAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCopyAccelerationStructureKHR_VkResult_return = (VkResult)0;
|
|
vkCopyAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
|
|
return vkCopyAccelerationStructureKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCopyAccelerationStructureToMemoryKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
|
|
vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
|
|
return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCopyAccelerationStructureToMemoryKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCopyAccelerationStructureToMemoryKHR_VkResult_return = (VkResult)0;
|
|
vkCopyAccelerationStructureToMemoryKHR_VkResult_return = vkEnc->vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, true /* do lock */);
|
|
return vkCopyAccelerationStructureToMemoryKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkCopyMemoryToAccelerationStructureKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
|
|
vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
|
|
return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCopyMemoryToAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCopyMemoryToAccelerationStructureKHR_VkResult_return = (VkResult)0;
|
|
vkCopyMemoryToAccelerationStructureKHR_VkResult_return = vkEnc->vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, true /* do lock */);
|
|
return vkCopyMemoryToAccelerationStructureKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkWriteAccelerationStructuresPropertiesKHR(
|
|
VkDevice device,
|
|
uint32_t accelerationStructureCount,
|
|
const VkAccelerationStructureKHR* pAccelerationStructures,
|
|
VkQueryType queryType,
|
|
size_t dataSize,
|
|
void* pData,
|
|
size_t stride)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
|
|
return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR(
|
|
VkDevice device,
|
|
uint32_t accelerationStructureCount,
|
|
const VkAccelerationStructureKHR* pAccelerationStructures,
|
|
VkQueryType queryType,
|
|
size_t dataSize,
|
|
void* pData,
|
|
size_t stride)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkWriteAccelerationStructuresPropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = (VkResult)0;
|
|
vkWriteAccelerationStructuresPropertiesKHR_VkResult_return = vkEnc->vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, true /* do lock */);
|
|
return vkWriteAccelerationStructuresPropertiesKHR_VkResult_return;
|
|
}
|
|
static void entry_vkCmdCopyAccelerationStructureKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyAccelerationStructureKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyAccelerationStructureToMemoryKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyAccelerationStructureToMemoryKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyAccelerationStructureToMemoryKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, true /* do lock */);
|
|
}
|
|
static void entry_vkCmdCopyMemoryToAccelerationStructureKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdCopyMemoryToAccelerationStructureKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdCopyMemoryToAccelerationStructureKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, true /* do lock */);
|
|
}
|
|
static VkDeviceAddress entry_vkGetAccelerationStructureDeviceAddressKHR(
|
|
VkDevice device,
|
|
const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
|
|
}
|
|
static VkDeviceAddress dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR(
|
|
VkDevice device,
|
|
const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureDeviceAddressKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureDeviceAddressKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
|
|
vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, true /* do lock */);
|
|
return vkGetAccelerationStructureDeviceAddressKHR_VkDeviceAddress_return;
|
|
}
|
|
static void entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t accelerationStructureCount,
|
|
const VkAccelerationStructureKHR* pAccelerationStructures,
|
|
VkQueryType queryType,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t accelerationStructureCount,
|
|
const VkAccelerationStructureKHR* pAccelerationStructures,
|
|
VkQueryType queryType,
|
|
VkQueryPool queryPool,
|
|
uint32_t firstQuery)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdWriteAccelerationStructuresPropertiesKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdWriteAccelerationStructuresPropertiesKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, true /* do lock */);
|
|
}
|
|
static void entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
|
|
VkDevice device,
|
|
const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
|
|
VkAccelerationStructureCompatibilityKHR* pCompatibility)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR(
|
|
VkDevice device,
|
|
const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
|
|
VkAccelerationStructureCompatibilityKHR* pCompatibility)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetDeviceAccelerationStructureCompatibilityKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetDeviceAccelerationStructureCompatibilityKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, true /* do lock */);
|
|
}
|
|
static void entry_vkGetAccelerationStructureBuildSizesKHR(
|
|
VkDevice device,
|
|
VkAccelerationStructureBuildTypeKHR buildType,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
|
|
const uint32_t* pMaxPrimitiveCounts,
|
|
VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR(
|
|
VkDevice device,
|
|
VkAccelerationStructureBuildTypeKHR buildType,
|
|
const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
|
|
const uint32_t* pMaxPrimitiveCounts,
|
|
VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetAccelerationStructureBuildSizesKHR", "VK_KHR_acceleration_structure");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetAccelerationStructureBuildSizesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
vkEnc->vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_ray_tracing_pipeline
|
|
static void entry_vkCmdTraceRaysKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
|
|
uint32_t width,
|
|
uint32_t height,
|
|
uint32_t depth)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdTraceRaysKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
|
|
uint32_t width,
|
|
uint32_t height,
|
|
uint32_t depth)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysKHR", "VK_KHR_ray_tracing_pipeline");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdTraceRaysKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, true /* do lock */);
|
|
}
|
|
static VkResult entry_vkCreateRayTracingPipelinesKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
VkPipelineCache pipelineCache,
|
|
uint32_t createInfoCount,
|
|
const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPipeline* pPipelines)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
|
|
vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
|
|
return vkCreateRayTracingPipelinesKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkCreateRayTracingPipelinesKHR(
|
|
VkDevice device,
|
|
VkDeferredOperationKHR deferredOperation,
|
|
VkPipelineCache pipelineCache,
|
|
uint32_t createInfoCount,
|
|
const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
|
|
const VkAllocationCallbacks* pAllocator,
|
|
VkPipeline* pPipelines)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCreateRayTracingPipelinesKHR", "VK_KHR_ray_tracing_pipeline");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCreateRayTracingPipelinesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkCreateRayTracingPipelinesKHR_VkResult_return = (VkResult)0;
|
|
vkCreateRayTracingPipelinesKHR_VkResult_return = vkEnc->vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, true /* do lock */);
|
|
return vkCreateRayTracingPipelinesKHR_VkResult_return;
|
|
}
|
|
static VkResult entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t firstGroup,
|
|
uint32_t groupCount,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
|
|
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
|
|
return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
|
|
}
|
|
static VkResult dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t firstGroup,
|
|
uint32_t groupCount,
|
|
size_t dataSize,
|
|
void* pData)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", "VK_KHR_ray_tracing_pipeline");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = (VkResult)0;
|
|
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return = vkEnc->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, true /* do lock */);
|
|
return vkGetRayTracingCaptureReplayShaderGroupHandlesKHR_VkResult_return;
|
|
}
|
|
static void entry_vkCmdTraceRaysIndirectKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
|
|
VkDeviceAddress indirectDeviceAddress)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdTraceRaysIndirectKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
|
|
const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
|
|
VkDeviceAddress indirectDeviceAddress)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdTraceRaysIndirectKHR", "VK_KHR_ray_tracing_pipeline");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdTraceRaysIndirectKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, true /* do lock */);
|
|
}
|
|
static VkDeviceSize entry_vkGetRayTracingShaderGroupStackSizeKHR(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t group,
|
|
VkShaderGroupShaderKHR groupShader)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
|
|
vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
|
|
return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
|
|
}
|
|
static VkDeviceSize dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR(
|
|
VkDevice device,
|
|
VkPipeline pipeline,
|
|
uint32_t group,
|
|
VkShaderGroupShaderKHR groupShader)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkGetRayTracingShaderGroupStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkGetRayTracingShaderGroupStackSizeKHR");
|
|
auto vkEnc = ResourceTracker::getThreadLocalEncoder();
|
|
VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = (VkDeviceSize)0;
|
|
vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return = vkEnc->vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, true /* do lock */);
|
|
return vkGetRayTracingShaderGroupStackSizeKHR_VkDeviceSize_return;
|
|
}
|
|
static void entry_vkCmdSetRayTracingPipelineStackSizeKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t pipelineStackSize)
|
|
{
|
|
AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
|
|
}
|
|
static void dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR(
|
|
VkCommandBuffer commandBuffer,
|
|
uint32_t pipelineStackSize)
|
|
{
|
|
auto resources = ResourceTracker::get();
|
|
VkDevice device = resources->getDevice(commandBuffer);;
|
|
if (!resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline"))
|
|
{
|
|
sOnInvalidDynamicallyCheckedCall("vkCmdSetRayTracingPipelineStackSizeKHR", "VK_KHR_ray_tracing_pipeline");
|
|
}
|
|
AEMU_SCOPED_TRACE("vkCmdSetRayTracingPipelineStackSizeKHR");
|
|
auto vkEnc = ResourceTracker::getCommandBufferEncoder(commandBuffer);
|
|
vkEnc->vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, true /* do lock */);
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_ray_query
|
|
#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_VERSION_1_2
|
|
if (!strcmp(name, "vkCmdDrawIndirectCount"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateRenderPass2"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginRenderPass2"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdNextSubpass2"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderPass2"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkResetQueryPool"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetSemaphoreCounterValue"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkWaitSemaphores"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSignalSemaphore"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferDeviceAddress"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
|
|
{
|
|
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_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_video_queue
|
|
if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateVideoSessionKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyVideoSessionKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_decode_queue
|
|
if (!strcmp(name, "vkCmdDecodeVideoKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_dynamic_rendering
|
|
if (!strcmp(name, "vkCmdBeginRenderingKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderingKHR"))
|
|
{
|
|
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_performance_query
|
|
if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquireProfilingLockKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkReleaseProfilingLockKHR"))
|
|
{
|
|
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_KHR_timeline_semaphore
|
|
if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkWaitSemaphoresKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSignalSemaphoreKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_fragment_shading_rate
|
|
if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_present_wait
|
|
if (!strcmp(name, "vkWaitForPresentKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_buffer_device_address
|
|
if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_deferred_host_operations
|
|
if (!strcmp(name, "vkCreateDeferredOperationKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDeferredOperationJoinKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_pipeline_executable_properties
|
|
if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_encode_queue
|
|
if (!strcmp(name, "vkCmdEncodeVideoKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_synchronization2
|
|
if (!strcmp(name, "vkCmdSetEvent2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdResetEvent2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWaitEvents2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSubmit2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_copy_commands2
|
|
if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyImage2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBlitImage2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdResolveImage2KHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_maintenance4
|
|
if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
|
|
{
|
|
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_EXT_transform_feedback
|
|
if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_binary_import
|
|
if (!strcmp(name, "vkCreateCuModuleNVX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateCuFunctionNVX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyCuModuleNVX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyCuFunctionNVX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_image_view_handle
|
|
if (!strcmp(name, "vkGetImageViewHandleNVX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetImageViewAddressNVX"))
|
|
{
|
|
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_GGP_stream_descriptor_surface
|
|
if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
|
|
{
|
|
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_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_MVK_moltenvk
|
|
if (!strcmp(name, "vkGetMTLDeviceMVK"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetMTLTextureMVK"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMTLTextureMVK"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMTLBufferMVK"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUseIOSurfaceMVK"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetIOSurfaceMVK"))
|
|
{
|
|
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_image_drm_format_modifier
|
|
if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
|
|
{
|
|
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_NV_shading_rate_image
|
|
if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_ray_tracing
|
|
if (!strcmp(name, "vkCreateAccelerationStructureNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdTraceRaysNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCompileDeferredNV"))
|
|
{
|
|
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_EXT_calibrated_timestamps
|
|
if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_mesh_shader
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_scissor_exclusive
|
|
if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_device_diagnostic_checkpoints
|
|
if (!strcmp(name, "vkCmdSetCheckpointNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_INTEL_performance_query
|
|
if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_display_native_hdr
|
|
if (!strcmp(name, "vkSetLocalDimmingAMD"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_imagepipe_surface
|
|
if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_metal_surface
|
|
if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_buffer_device_address
|
|
if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_tooling_info
|
|
if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_cooperative_matrix
|
|
if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_coverage_reduction_mode
|
|
if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_full_screen_exclusive
|
|
if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_headless_surface
|
|
if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_line_rasterization
|
|
if (!strcmp(name, "vkCmdSetLineStippleEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_host_query_reset
|
|
if (!strcmp(name, "vkResetQueryPoolEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state
|
|
if (!strcmp(name, "vkCmdSetCullModeEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetStencilOpEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_device_generated_commands
|
|
if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_acquire_drm_display
|
|
if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDrmDisplayEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_private_data
|
|
if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetPrivateDataEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPrivateDataEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_fragment_shading_rate_enums
|
|
if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_acquire_winrt_display
|
|
if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetWinrtDisplayNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_directfb_surface
|
|
if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_vertex_input_dynamic_state
|
|
if (!strcmp(name, "vkCmdSetVertexInputEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_memory
|
|
if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_semaphore
|
|
if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_buffer_collection
|
|
if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_subpass_shading
|
|
if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_invocation_mask
|
|
if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_external_memory_rdma
|
|
if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state2
|
|
if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetLogicOpEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_QNX_screen_surface
|
|
if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_color_write_enable
|
|
if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_GOOGLE_gfxstream
|
|
if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_multi_draw
|
|
if (!strcmp(name, "vkCmdDrawMultiEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_pageable_device_local_memory
|
|
if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_acceleration_structure
|
|
if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_ray_tracing_pipeline
|
|
if (!strcmp(name, "vkCmdTraceRaysKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
|
|
{
|
|
return nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
|
|
{
|
|
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 (void*)dynCheck_entry_vkCmdSetDeviceMask;
|
|
}
|
|
if (!strcmp(name, "vkCmdDispatchBase"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDispatchBase;
|
|
}
|
|
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_VERSION_1_2
|
|
if (!strcmp(name, "vkCmdDrawIndirectCount"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndirectCount;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCount;
|
|
}
|
|
if (!strcmp(name, "vkCreateRenderPass2"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateRenderPass2;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginRenderPass2"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginRenderPass2;
|
|
}
|
|
if (!strcmp(name, "vkCmdNextSubpass2"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdNextSubpass2;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderPass2"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndRenderPass2;
|
|
}
|
|
if (!strcmp(name, "vkResetQueryPool"))
|
|
{
|
|
return (void*)dynCheck_entry_vkResetQueryPool;
|
|
}
|
|
if (!strcmp(name, "vkGetSemaphoreCounterValue"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetSemaphoreCounterValue;
|
|
}
|
|
if (!strcmp(name, "vkWaitSemaphores"))
|
|
{
|
|
return (void*)dynCheck_entry_vkWaitSemaphores;
|
|
}
|
|
if (!strcmp(name, "vkSignalSemaphore"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSignalSemaphore;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferDeviceAddress"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetBufferDeviceAddress;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddress;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddress;
|
|
}
|
|
#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_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_video_queue
|
|
if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateVideoSessionKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateVideoSessionKHR;
|
|
}
|
|
if (!strcmp(name, "vkDestroyVideoSessionKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyVideoSessionKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetVideoSessionMemoryRequirementsKHR;
|
|
}
|
|
if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkBindVideoSessionMemoryKHR;
|
|
}
|
|
if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateVideoSessionParametersKHR;
|
|
}
|
|
if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkUpdateVideoSessionParametersKHR;
|
|
}
|
|
if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyVideoSessionParametersKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginVideoCodingKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndVideoCodingKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdControlVideoCodingKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_decode_queue
|
|
if (!strcmp(name, "vkCmdDecodeVideoKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDecodeVideoKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_dynamic_rendering
|
|
if (!strcmp(name, "vkCmdBeginRenderingKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginRenderingKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderingKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndRenderingKHR;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDeviceMaskKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdDispatchBaseKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDispatchBaseKHR;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdPushDescriptorSetKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdPushDescriptorSetWithTemplateKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdPushDescriptorSetWithTemplateKHR;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginRenderPass2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdNextSubpass2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdNextSubpass2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderPass2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndRenderPass2KHR;
|
|
}
|
|
#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_performance_query
|
|
if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
|
|
return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_performance_query");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquireProfilingLockKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkAcquireProfilingLockKHR;
|
|
}
|
|
if (!strcmp(name, "vkReleaseProfilingLockKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkReleaseProfilingLockKHR;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndirectCountKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndexedIndirectCountKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCountKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_timeline_semaphore
|
|
if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetSemaphoreCounterValueKHR;
|
|
}
|
|
if (!strcmp(name, "vkWaitSemaphoresKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkWaitSemaphoresKHR;
|
|
}
|
|
if (!strcmp(name, "vkSignalSemaphoreKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSignalSemaphoreKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_fragment_shading_rate
|
|
if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_fragment_shading_rate");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetFragmentShadingRateKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_present_wait
|
|
if (!strcmp(name, "vkWaitForPresentKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkWaitForPresentKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_buffer_device_address
|
|
if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetBufferDeviceAddressKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetBufferOpaqueCaptureAddressKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_deferred_host_operations
|
|
if (!strcmp(name, "vkCreateDeferredOperationKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateDeferredOperationKHR;
|
|
}
|
|
if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyDeferredOperationKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeferredOperationMaxConcurrencyKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeferredOperationResultKHR;
|
|
}
|
|
if (!strcmp(name, "vkDeferredOperationJoinKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDeferredOperationJoinKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_pipeline_executable_properties
|
|
if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetPipelineExecutablePropertiesKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetPipelineExecutableStatisticsKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetPipelineExecutableInternalRepresentationsKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_encode_queue
|
|
if (!strcmp(name, "vkCmdEncodeVideoKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEncodeVideoKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_synchronization2
|
|
if (!strcmp(name, "vkCmdSetEvent2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetEvent2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdResetEvent2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdResetEvent2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdWaitEvents2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdWaitEvents2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdPipelineBarrier2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdWriteTimestamp2KHR;
|
|
}
|
|
if (!strcmp(name, "vkQueueSubmit2KHR"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdWriteBufferMarker2AMD;
|
|
}
|
|
if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_copy_commands2
|
|
if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyBuffer2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyImage2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyImage2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyBufferToImage2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyImageToBuffer2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdBlitImage2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBlitImage2KHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdResolveImage2KHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdResolveImage2KHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_maintenance4
|
|
if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceBufferMemoryRequirementsKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceImageMemoryRequirementsKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceImageSparseMemoryRequirementsKHR;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDebugMarkerBeginEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdDebugMarkerEndEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDebugMarkerEndEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdDebugMarkerInsertEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDebugMarkerInsertEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_transform_feedback
|
|
if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBindTransformFeedbackBuffersEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginTransformFeedbackEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndTransformFeedbackEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginQueryIndexedEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndQueryIndexedEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndirectByteCountEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_binary_import
|
|
if (!strcmp(name, "vkCreateCuModuleNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateCuModuleNVX;
|
|
}
|
|
if (!strcmp(name, "vkCreateCuFunctionNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateCuFunctionNVX;
|
|
}
|
|
if (!strcmp(name, "vkDestroyCuModuleNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyCuModuleNVX;
|
|
}
|
|
if (!strcmp(name, "vkDestroyCuFunctionNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyCuFunctionNVX;
|
|
}
|
|
if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCuLaunchKernelNVX;
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_image_view_handle
|
|
if (!strcmp(name, "vkGetImageViewHandleNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetImageViewHandleNVX;
|
|
}
|
|
if (!strcmp(name, "vkGetImageViewAddressNVX"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetImageViewAddressNVX;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_draw_indirect_count
|
|
if (!strcmp(name, "vkCmdDrawIndirectCountAMD"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndirectCountAMD;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndexedIndirectCountAMD"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawIndexedIndirectCountAMD;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_shader_info
|
|
if (!strcmp(name, "vkGetShaderInfoAMD"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetShaderInfoAMD;
|
|
}
|
|
#endif
|
|
#ifdef VK_GGP_stream_descriptor_surface
|
|
if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GGP_stream_descriptor_surface");
|
|
return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : nullptr;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginConditionalRenderingEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndConditionalRenderingEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndConditionalRenderingEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_clip_space_w_scaling
|
|
if (!strcmp(name, "vkCmdSetViewportWScalingNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetViewportWScalingNV;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDiscardRectangleEXT;
|
|
}
|
|
#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_MVK_moltenvk
|
|
if (!strcmp(name, "vkGetMTLDeviceMVK"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetMTLTextureMVK"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMTLTextureMVK"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMTLBufferMVK"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUseIOSurfaceMVK"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetIOSurfaceMVK"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetIOSurfaceMVK : 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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBeginDebugUtilsLabelEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndDebugUtilsLabelEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdEndDebugUtilsLabelEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdInsertDebugUtilsLabelEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdInsertDebugUtilsLabelEXT;
|
|
}
|
|
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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetSampleLocationsEXT;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceMultisamplePropertiesEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_sample_locations");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceMultisamplePropertiesEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_image_drm_format_modifier
|
|
if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetImageDrmFormatModifierPropertiesEXT;
|
|
}
|
|
#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_NV_shading_rate_image
|
|
if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBindShadingRateImageNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetViewportShadingRatePaletteNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetCoarseSampleOrderNV;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_ray_tracing
|
|
if (!strcmp(name, "vkCreateAccelerationStructureNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateAccelerationStructureNV;
|
|
}
|
|
if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyAccelerationStructureNV;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetAccelerationStructureMemoryRequirementsNV;
|
|
}
|
|
if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkBindAccelerationStructureMemoryNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBuildAccelerationStructureNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdTraceRaysNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdTraceRaysNV;
|
|
}
|
|
if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateRayTracingPipelinesNV;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetRayTracingShaderGroupHandlesNV;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetAccelerationStructureHandleNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesNV;
|
|
}
|
|
if (!strcmp(name, "vkCompileDeferredNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCompileDeferredNV;
|
|
}
|
|
#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"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdWriteBufferMarkerAMD;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_calibrated_timestamps
|
|
if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_calibrated_timestamps");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetCalibratedTimestampsEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_mesh_shader
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawMeshTasksNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawMeshTasksIndirectCountNV;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_scissor_exclusive
|
|
if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetExclusiveScissorNV;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_device_diagnostic_checkpoints
|
|
if (!strcmp(name, "vkCmdSetCheckpointNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetCheckpointNV;
|
|
}
|
|
if (!strcmp(name, "vkGetQueueCheckpointDataNV"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_device_diagnostic_checkpoints");
|
|
return hasExt ? (void*)entry_vkGetQueueCheckpointDataNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_INTEL_performance_query
|
|
if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkInitializePerformanceApiINTEL;
|
|
}
|
|
if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkUninitializePerformanceApiINTEL;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetPerformanceMarkerINTEL;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetPerformanceStreamMarkerINTEL;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetPerformanceOverrideINTEL;
|
|
}
|
|
if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkAcquirePerformanceConfigurationINTEL;
|
|
}
|
|
if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkReleasePerformanceConfigurationINTEL;
|
|
}
|
|
if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetPerformanceParameterINTEL;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_display_native_hdr
|
|
if (!strcmp(name, "vkSetLocalDimmingAMD"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSetLocalDimmingAMD;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_imagepipe_surface
|
|
if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_FUCHSIA_imagepipe_surface");
|
|
return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_metal_surface
|
|
if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_metal_surface");
|
|
return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_buffer_device_address
|
|
if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetBufferDeviceAddressEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_tooling_info
|
|
if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_tooling_info");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_cooperative_matrix
|
|
if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_cooperative_matrix");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_coverage_reduction_mode
|
|
if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_coverage_reduction_mode");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_full_screen_exclusive
|
|
if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_full_screen_exclusive");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkAcquireFullScreenExclusiveModeEXT;
|
|
}
|
|
if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkReleaseFullScreenExclusiveModeEXT;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceGroupSurfacePresentModes2EXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_headless_surface
|
|
if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_headless_surface");
|
|
return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_line_rasterization
|
|
if (!strcmp(name, "vkCmdSetLineStippleEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetLineStippleEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_host_query_reset
|
|
if (!strcmp(name, "vkResetQueryPoolEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkResetQueryPoolEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state
|
|
if (!strcmp(name, "vkCmdSetCullModeEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetCullModeEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetFrontFaceEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetPrimitiveTopologyEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetViewportWithCountEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetScissorWithCountEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBindVertexBuffers2EXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDepthTestEnableEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDepthWriteEnableEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDepthCompareOpEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDepthBoundsTestEnableEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetStencilTestEnableEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetStencilOpEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetStencilOpEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_device_generated_commands
|
|
if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetGeneratedCommandsMemoryRequirementsNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdPreprocessGeneratedCommandsNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdExecuteGeneratedCommandsNV;
|
|
}
|
|
if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBindPipelineShaderGroupNV;
|
|
}
|
|
if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateIndirectCommandsLayoutNV;
|
|
}
|
|
if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyIndirectCommandsLayoutNV;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_acquire_drm_display
|
|
if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
|
|
return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDrmDisplayEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_acquire_drm_display");
|
|
return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_private_data
|
|
if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreatePrivateDataSlotEXT;
|
|
}
|
|
if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyPrivateDataSlotEXT;
|
|
}
|
|
if (!strcmp(name, "vkSetPrivateDataEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSetPrivateDataEXT;
|
|
}
|
|
if (!strcmp(name, "vkGetPrivateDataEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetPrivateDataEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_fragment_shading_rate_enums
|
|
if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetFragmentShadingRateEnumNV;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_acquire_winrt_display
|
|
if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
|
|
return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetWinrtDisplayNV"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_NV_acquire_winrt_display");
|
|
return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_directfb_surface
|
|
if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
|
|
return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_EXT_directfb_surface");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_vertex_input_dynamic_state
|
|
if (!strcmp(name, "vkCmdSetVertexInputEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetVertexInputEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_memory
|
|
if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetMemoryZirconHandleFUCHSIA;
|
|
}
|
|
if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetMemoryZirconHandlePropertiesFUCHSIA;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_semaphore
|
|
if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkImportSemaphoreZirconHandleFUCHSIA;
|
|
}
|
|
if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetSemaphoreZirconHandleFUCHSIA;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_buffer_collection
|
|
if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateBufferCollectionFUCHSIA;
|
|
}
|
|
if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSetBufferCollectionImageConstraintsFUCHSIA;
|
|
}
|
|
if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSetBufferCollectionBufferConstraintsFUCHSIA;
|
|
}
|
|
if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyBufferCollectionFUCHSIA;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetBufferCollectionPropertiesFUCHSIA;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_subpass_shading
|
|
if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
|
|
}
|
|
if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSubpassShadingHUAWEI;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_invocation_mask
|
|
if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBindInvocationMaskHUAWEI;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_external_memory_rdma
|
|
if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetMemoryRemoteAddressNV;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state2
|
|
if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetPatchControlPointsEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetRasterizerDiscardEnableEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetDepthBiasEnableEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetLogicOpEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetLogicOpEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetPrimitiveRestartEnableEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_QNX_screen_surface
|
|
if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
|
|
return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_QNX_screen_surface");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_color_write_enable
|
|
if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetColorWriteEnableEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_GOOGLE_gfxstream
|
|
if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkRegisterImageColorBufferGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkRegisterBufferColorBufferGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkMapMemoryIntoAddressSpaceGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkBeginCommandBufferAsyncGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkEndCommandBufferAsyncGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkResetCommandBufferAsyncGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCommandBufferHostSyncGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateImageWithRequirementsGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateBufferWithRequirementsGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetMemoryHostAddressInfoGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkFreeMemorySyncGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetLinearImageLayoutGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetLinearImageLayout2GOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCollectDescriptorPoolIdsGOOGLE;
|
|
}
|
|
if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasInstanceExtension(instance, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_multi_draw
|
|
if (!strcmp(name, "vkCmdDrawMultiEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawMultiEXT;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdDrawMultiIndexedEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_pageable_device_local_memory
|
|
if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
|
|
{
|
|
return (void*)dynCheck_entry_vkSetDeviceMemoryPriorityEXT;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_acceleration_structure
|
|
if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateAccelerationStructureKHR;
|
|
}
|
|
if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkDestroyAccelerationStructureKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBuildAccelerationStructuresKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdBuildAccelerationStructuresIndirectKHR;
|
|
}
|
|
if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkBuildAccelerationStructuresKHR;
|
|
}
|
|
if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCopyAccelerationStructureKHR;
|
|
}
|
|
if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCopyAccelerationStructureToMemoryKHR;
|
|
}
|
|
if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCopyMemoryToAccelerationStructureKHR;
|
|
}
|
|
if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkWriteAccelerationStructuresPropertiesKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyAccelerationStructureToMemoryKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdCopyMemoryToAccelerationStructureKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetAccelerationStructureDeviceAddressKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdWriteAccelerationStructuresPropertiesKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetDeviceAccelerationStructureCompatibilityKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetAccelerationStructureBuildSizesKHR;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_ray_tracing_pipeline
|
|
if (!strcmp(name, "vkCmdTraceRaysKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdTraceRaysKHR;
|
|
}
|
|
if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCreateRayTracingPipelinesKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdTraceRaysIndirectKHR;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkGetRayTracingShaderGroupStackSizeKHR;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
|
|
{
|
|
return (void*)dynCheck_entry_vkCmdSetRayTracingPipelineStackSizeKHR;
|
|
}
|
|
#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_VERSION_1_2
|
|
if (!strcmp(name, "vkCmdDrawIndirectCount"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkCmdDrawIndirectCount : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndexedIndirectCount"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkCmdDrawIndexedIndirectCount : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateRenderPass2"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkCreateRenderPass2 : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginRenderPass2"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkCmdBeginRenderPass2 : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdNextSubpass2"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkCmdNextSubpass2 : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderPass2"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkCmdEndRenderPass2 : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkResetQueryPool"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkResetQueryPool : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetSemaphoreCounterValue"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkGetSemaphoreCounterValue : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkWaitSemaphores"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkWaitSemaphores : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSignalSemaphore"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkSignalSemaphore : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferDeviceAddress"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkGetBufferDeviceAddress : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferOpaqueCaptureAddress"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddress : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddress"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_VERSION_1_2");
|
|
return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddress : 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_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_video_queue
|
|
if (!strcmp(name, "vkGetPhysicalDeviceVideoCapabilitiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoCapabilitiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceVideoFormatPropertiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceVideoFormatPropertiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateVideoSessionKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkCreateVideoSessionKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyVideoSessionKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkDestroyVideoSessionKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetVideoSessionMemoryRequirementsKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkGetVideoSessionMemoryRequirementsKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBindVideoSessionMemoryKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkBindVideoSessionMemoryKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateVideoSessionParametersKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkCreateVideoSessionParametersKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUpdateVideoSessionParametersKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkUpdateVideoSessionParametersKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyVideoSessionParametersKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkDestroyVideoSessionParametersKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginVideoCodingKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkCmdBeginVideoCodingKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndVideoCodingKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkCmdEndVideoCodingKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdControlVideoCodingKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_queue");
|
|
return hasExt ? (void*)entry_vkCmdControlVideoCodingKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_decode_queue
|
|
if (!strcmp(name, "vkCmdDecodeVideoKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_decode_queue");
|
|
return hasExt ? (void*)entry_vkCmdDecodeVideoKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_dynamic_rendering
|
|
if (!strcmp(name, "vkCmdBeginRenderingKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
|
|
return hasExt ? (void*)entry_vkCmdBeginRenderingKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndRenderingKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_dynamic_rendering");
|
|
return hasExt ? (void*)entry_vkCmdEndRenderingKHR : 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_performance_query
|
|
if (!strcmp(name, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
|
|
return hasExt ? (void*)entry_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquireProfilingLockKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
|
|
return hasExt ? (void*)entry_vkAcquireProfilingLockKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkReleaseProfilingLockKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_performance_query");
|
|
return hasExt ? (void*)entry_vkReleaseProfilingLockKHR : 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_KHR_timeline_semaphore
|
|
if (!strcmp(name, "vkGetSemaphoreCounterValueKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
|
|
return hasExt ? (void*)entry_vkGetSemaphoreCounterValueKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkWaitSemaphoresKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
|
|
return hasExt ? (void*)entry_vkWaitSemaphoresKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSignalSemaphoreKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_timeline_semaphore");
|
|
return hasExt ? (void*)entry_vkSignalSemaphoreKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_fragment_shading_rate
|
|
if (!strcmp(name, "vkGetPhysicalDeviceFragmentShadingRatesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceFragmentShadingRatesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetFragmentShadingRateKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_fragment_shading_rate");
|
|
return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_present_wait
|
|
if (!strcmp(name, "vkWaitForPresentKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_present_wait");
|
|
return hasExt ? (void*)entry_vkWaitForPresentKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_buffer_device_address
|
|
if (!strcmp(name, "vkGetBufferDeviceAddressKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
|
|
return hasExt ? (void*)entry_vkGetBufferDeviceAddressKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferOpaqueCaptureAddressKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
|
|
return hasExt ? (void*)entry_vkGetBufferOpaqueCaptureAddressKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_buffer_device_address");
|
|
return hasExt ? (void*)entry_vkGetDeviceMemoryOpaqueCaptureAddressKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_deferred_host_operations
|
|
if (!strcmp(name, "vkCreateDeferredOperationKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
|
|
return hasExt ? (void*)entry_vkCreateDeferredOperationKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyDeferredOperationKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
|
|
return hasExt ? (void*)entry_vkDestroyDeferredOperationKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeferredOperationMaxConcurrencyKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
|
|
return hasExt ? (void*)entry_vkGetDeferredOperationMaxConcurrencyKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeferredOperationResultKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
|
|
return hasExt ? (void*)entry_vkGetDeferredOperationResultKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDeferredOperationJoinKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_deferred_host_operations");
|
|
return hasExt ? (void*)entry_vkDeferredOperationJoinKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_pipeline_executable_properties
|
|
if (!strcmp(name, "vkGetPipelineExecutablePropertiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
|
|
return hasExt ? (void*)entry_vkGetPipelineExecutablePropertiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPipelineExecutableStatisticsKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
|
|
return hasExt ? (void*)entry_vkGetPipelineExecutableStatisticsKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPipelineExecutableInternalRepresentationsKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_pipeline_executable_properties");
|
|
return hasExt ? (void*)entry_vkGetPipelineExecutableInternalRepresentationsKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_video_encode_queue
|
|
if (!strcmp(name, "vkCmdEncodeVideoKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_video_encode_queue");
|
|
return hasExt ? (void*)entry_vkCmdEncodeVideoKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_synchronization2
|
|
if (!strcmp(name, "vkCmdSetEvent2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkCmdSetEvent2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdResetEvent2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkCmdResetEvent2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWaitEvents2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkCmdWaitEvents2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdPipelineBarrier2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkCmdPipelineBarrier2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteTimestamp2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkCmdWriteTimestamp2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSubmit2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkQueueSubmit2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteBufferMarker2AMD"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkCmdWriteBufferMarker2AMD : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetQueueCheckpointData2NV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_synchronization2");
|
|
return hasExt ? (void*)entry_vkGetQueueCheckpointData2NV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_copy_commands2
|
|
if (!strcmp(name, "vkCmdCopyBuffer2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
|
|
return hasExt ? (void*)entry_vkCmdCopyBuffer2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyImage2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
|
|
return hasExt ? (void*)entry_vkCmdCopyImage2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyBufferToImage2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
|
|
return hasExt ? (void*)entry_vkCmdCopyBufferToImage2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyImageToBuffer2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
|
|
return hasExt ? (void*)entry_vkCmdCopyImageToBuffer2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBlitImage2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
|
|
return hasExt ? (void*)entry_vkCmdBlitImage2KHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdResolveImage2KHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_copy_commands2");
|
|
return hasExt ? (void*)entry_vkCmdResolveImage2KHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_maintenance4
|
|
if (!strcmp(name, "vkGetDeviceBufferMemoryRequirementsKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
|
|
return hasExt ? (void*)entry_vkGetDeviceBufferMemoryRequirementsKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceImageMemoryRequirementsKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
|
|
return hasExt ? (void*)entry_vkGetDeviceImageMemoryRequirementsKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceImageSparseMemoryRequirementsKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_maintenance4");
|
|
return hasExt ? (void*)entry_vkGetDeviceImageSparseMemoryRequirementsKHR : 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_EXT_transform_feedback
|
|
if (!strcmp(name, "vkCmdBindTransformFeedbackBuffersEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
|
|
return hasExt ? (void*)entry_vkCmdBindTransformFeedbackBuffersEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginTransformFeedbackEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
|
|
return hasExt ? (void*)entry_vkCmdBeginTransformFeedbackEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndTransformFeedbackEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
|
|
return hasExt ? (void*)entry_vkCmdEndTransformFeedbackEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBeginQueryIndexedEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
|
|
return hasExt ? (void*)entry_vkCmdBeginQueryIndexedEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdEndQueryIndexedEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
|
|
return hasExt ? (void*)entry_vkCmdEndQueryIndexedEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawIndirectByteCountEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_transform_feedback");
|
|
return hasExt ? (void*)entry_vkCmdDrawIndirectByteCountEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_binary_import
|
|
if (!strcmp(name, "vkCreateCuModuleNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
|
|
return hasExt ? (void*)entry_vkCreateCuModuleNVX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateCuFunctionNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
|
|
return hasExt ? (void*)entry_vkCreateCuFunctionNVX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyCuModuleNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
|
|
return hasExt ? (void*)entry_vkDestroyCuModuleNVX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyCuFunctionNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
|
|
return hasExt ? (void*)entry_vkDestroyCuFunctionNVX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCuLaunchKernelNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_binary_import");
|
|
return hasExt ? (void*)entry_vkCmdCuLaunchKernelNVX : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NVX_image_view_handle
|
|
if (!strcmp(name, "vkGetImageViewHandleNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
|
|
return hasExt ? (void*)entry_vkGetImageViewHandleNVX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetImageViewAddressNVX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NVX_image_view_handle");
|
|
return hasExt ? (void*)entry_vkGetImageViewAddressNVX : 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_GGP_stream_descriptor_surface
|
|
if (!strcmp(name, "vkCreateStreamDescriptorSurfaceGGP"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GGP_stream_descriptor_surface");
|
|
return hasExt ? (void*)entry_vkCreateStreamDescriptorSurfaceGGP : 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_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_MVK_moltenvk
|
|
if (!strcmp(name, "vkGetMTLDeviceMVK"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetMTLDeviceMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetMTLTextureMVK"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkSetMTLTextureMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMTLTextureMVK"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetMTLTextureMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMTLBufferMVK"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetMTLBufferMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUseIOSurfaceMVK"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkUseIOSurfaceMVK : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetIOSurfaceMVK"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_MVK_moltenvk");
|
|
return hasExt ? (void*)entry_vkGetIOSurfaceMVK : 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_image_drm_format_modifier
|
|
if (!strcmp(name, "vkGetImageDrmFormatModifierPropertiesEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_image_drm_format_modifier");
|
|
return hasExt ? (void*)entry_vkGetImageDrmFormatModifierPropertiesEXT : 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_NV_shading_rate_image
|
|
if (!strcmp(name, "vkCmdBindShadingRateImageNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
|
|
return hasExt ? (void*)entry_vkCmdBindShadingRateImageNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetViewportShadingRatePaletteNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
|
|
return hasExt ? (void*)entry_vkCmdSetViewportShadingRatePaletteNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetCoarseSampleOrderNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_shading_rate_image");
|
|
return hasExt ? (void*)entry_vkCmdSetCoarseSampleOrderNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_ray_tracing
|
|
if (!strcmp(name, "vkCreateAccelerationStructureNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCreateAccelerationStructureNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyAccelerationStructureNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkDestroyAccelerationStructureNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureMemoryRequirementsNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkGetAccelerationStructureMemoryRequirementsNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBindAccelerationStructureMemoryNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkBindAccelerationStructureMemoryNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructureNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCmdBuildAccelerationStructureNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdTraceRaysNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCmdTraceRaysNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateRayTracingPipelinesNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCreateRayTracingPipelinesNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupHandlesNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkGetRayTracingShaderGroupHandlesNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureHandleNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkGetAccelerationStructureHandleNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCompileDeferredNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_ray_tracing");
|
|
return hasExt ? (void*)entry_vkCompileDeferredNV : 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_EXT_calibrated_timestamps
|
|
if (!strcmp(name, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetCalibratedTimestampsEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_calibrated_timestamps");
|
|
return hasExt ? (void*)entry_vkGetCalibratedTimestampsEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_mesh_shader
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
|
|
return hasExt ? (void*)entry_vkCmdDrawMeshTasksNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksIndirectNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
|
|
return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMeshTasksIndirectCountNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_mesh_shader");
|
|
return hasExt ? (void*)entry_vkCmdDrawMeshTasksIndirectCountNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_scissor_exclusive
|
|
if (!strcmp(name, "vkCmdSetExclusiveScissorNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_scissor_exclusive");
|
|
return hasExt ? (void*)entry_vkCmdSetExclusiveScissorNV : 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_INTEL_performance_query
|
|
if (!strcmp(name, "vkInitializePerformanceApiINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkInitializePerformanceApiINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUninitializePerformanceApiINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkUninitializePerformanceApiINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceMarkerINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkCmdSetPerformanceMarkerINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceStreamMarkerINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkCmdSetPerformanceStreamMarkerINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPerformanceOverrideINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkCmdSetPerformanceOverrideINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquirePerformanceConfigurationINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkAcquirePerformanceConfigurationINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkReleasePerformanceConfigurationINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkReleasePerformanceConfigurationINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSetPerformanceConfigurationINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkQueueSetPerformanceConfigurationINTEL : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPerformanceParameterINTEL"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_INTEL_performance_query");
|
|
return hasExt ? (void*)entry_vkGetPerformanceParameterINTEL : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_AMD_display_native_hdr
|
|
if (!strcmp(name, "vkSetLocalDimmingAMD"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_AMD_display_native_hdr");
|
|
return hasExt ? (void*)entry_vkSetLocalDimmingAMD : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_imagepipe_surface
|
|
if (!strcmp(name, "vkCreateImagePipeSurfaceFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_imagepipe_surface");
|
|
return hasExt ? (void*)entry_vkCreateImagePipeSurfaceFUCHSIA : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_metal_surface
|
|
if (!strcmp(name, "vkCreateMetalSurfaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_metal_surface");
|
|
return hasExt ? (void*)entry_vkCreateMetalSurfaceEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_buffer_device_address
|
|
if (!strcmp(name, "vkGetBufferDeviceAddressEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_buffer_device_address");
|
|
return hasExt ? (void*)entry_vkGetBufferDeviceAddressEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_tooling_info
|
|
if (!strcmp(name, "vkGetPhysicalDeviceToolPropertiesEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_tooling_info");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceToolPropertiesEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_cooperative_matrix
|
|
if (!strcmp(name, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_cooperative_matrix");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_coverage_reduction_mode
|
|
if (!strcmp(name, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_coverage_reduction_mode");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_full_screen_exclusive
|
|
if (!strcmp(name, "vkGetPhysicalDeviceSurfacePresentModes2EXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceSurfacePresentModes2EXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkAcquireFullScreenExclusiveModeEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
|
|
return hasExt ? (void*)entry_vkAcquireFullScreenExclusiveModeEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkReleaseFullScreenExclusiveModeEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
|
|
return hasExt ? (void*)entry_vkReleaseFullScreenExclusiveModeEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceGroupSurfacePresentModes2EXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_full_screen_exclusive");
|
|
return hasExt ? (void*)entry_vkGetDeviceGroupSurfacePresentModes2EXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_headless_surface
|
|
if (!strcmp(name, "vkCreateHeadlessSurfaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_headless_surface");
|
|
return hasExt ? (void*)entry_vkCreateHeadlessSurfaceEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_line_rasterization
|
|
if (!strcmp(name, "vkCmdSetLineStippleEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_line_rasterization");
|
|
return hasExt ? (void*)entry_vkCmdSetLineStippleEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_host_query_reset
|
|
if (!strcmp(name, "vkResetQueryPoolEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_host_query_reset");
|
|
return hasExt ? (void*)entry_vkResetQueryPoolEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state
|
|
if (!strcmp(name, "vkCmdSetCullModeEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetCullModeEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetFrontFaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetFrontFaceEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPrimitiveTopologyEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetPrimitiveTopologyEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetViewportWithCountEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetViewportWithCountEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetScissorWithCountEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetScissorWithCountEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBindVertexBuffers2EXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdBindVertexBuffers2EXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthTestEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetDepthTestEnableEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthWriteEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetDepthWriteEnableEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthCompareOpEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetDepthCompareOpEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthBoundsTestEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetDepthBoundsTestEnableEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetStencilTestEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetStencilTestEnableEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetStencilOpEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetStencilOpEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_device_generated_commands
|
|
if (!strcmp(name, "vkGetGeneratedCommandsMemoryRequirementsNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
|
|
return hasExt ? (void*)entry_vkGetGeneratedCommandsMemoryRequirementsNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdPreprocessGeneratedCommandsNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
|
|
return hasExt ? (void*)entry_vkCmdPreprocessGeneratedCommandsNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdExecuteGeneratedCommandsNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
|
|
return hasExt ? (void*)entry_vkCmdExecuteGeneratedCommandsNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBindPipelineShaderGroupNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
|
|
return hasExt ? (void*)entry_vkCmdBindPipelineShaderGroupNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateIndirectCommandsLayoutNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
|
|
return hasExt ? (void*)entry_vkCreateIndirectCommandsLayoutNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyIndirectCommandsLayoutNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_device_generated_commands");
|
|
return hasExt ? (void*)entry_vkDestroyIndirectCommandsLayoutNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_acquire_drm_display
|
|
if (!strcmp(name, "vkAcquireDrmDisplayEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
|
|
return hasExt ? (void*)entry_vkAcquireDrmDisplayEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDrmDisplayEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_acquire_drm_display");
|
|
return hasExt ? (void*)entry_vkGetDrmDisplayEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_private_data
|
|
if (!strcmp(name, "vkCreatePrivateDataSlotEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
|
|
return hasExt ? (void*)entry_vkCreatePrivateDataSlotEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyPrivateDataSlotEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
|
|
return hasExt ? (void*)entry_vkDestroyPrivateDataSlotEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetPrivateDataEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
|
|
return hasExt ? (void*)entry_vkSetPrivateDataEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPrivateDataEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_private_data");
|
|
return hasExt ? (void*)entry_vkGetPrivateDataEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_fragment_shading_rate_enums
|
|
if (!strcmp(name, "vkCmdSetFragmentShadingRateEnumNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_fragment_shading_rate_enums");
|
|
return hasExt ? (void*)entry_vkCmdSetFragmentShadingRateEnumNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_acquire_winrt_display
|
|
if (!strcmp(name, "vkAcquireWinrtDisplayNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
|
|
return hasExt ? (void*)entry_vkAcquireWinrtDisplayNV : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetWinrtDisplayNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_acquire_winrt_display");
|
|
return hasExt ? (void*)entry_vkGetWinrtDisplayNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_directfb_surface
|
|
if (!strcmp(name, "vkCreateDirectFBSurfaceEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
|
|
return hasExt ? (void*)entry_vkCreateDirectFBSurfaceEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_directfb_surface");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceDirectFBPresentationSupportEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_vertex_input_dynamic_state
|
|
if (!strcmp(name, "vkCmdSetVertexInputEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_vertex_input_dynamic_state");
|
|
return hasExt ? (void*)entry_vkCmdSetVertexInputEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_memory
|
|
if (!strcmp(name, "vkGetMemoryZirconHandleFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
|
|
return hasExt ? (void*)entry_vkGetMemoryZirconHandleFUCHSIA : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMemoryZirconHandlePropertiesFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_memory");
|
|
return hasExt ? (void*)entry_vkGetMemoryZirconHandlePropertiesFUCHSIA : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_external_semaphore
|
|
if (!strcmp(name, "vkImportSemaphoreZirconHandleFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
|
|
return hasExt ? (void*)entry_vkImportSemaphoreZirconHandleFUCHSIA : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetSemaphoreZirconHandleFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_external_semaphore");
|
|
return hasExt ? (void*)entry_vkGetSemaphoreZirconHandleFUCHSIA : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_FUCHSIA_buffer_collection
|
|
if (!strcmp(name, "vkCreateBufferCollectionFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
|
|
return hasExt ? (void*)entry_vkCreateBufferCollectionFUCHSIA : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetBufferCollectionImageConstraintsFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
|
|
return hasExt ? (void*)entry_vkSetBufferCollectionImageConstraintsFUCHSIA : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkSetBufferCollectionBufferConstraintsFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
|
|
return hasExt ? (void*)entry_vkSetBufferCollectionBufferConstraintsFUCHSIA : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyBufferCollectionFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
|
|
return hasExt ? (void*)entry_vkDestroyBufferCollectionFUCHSIA : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetBufferCollectionPropertiesFUCHSIA"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_FUCHSIA_buffer_collection");
|
|
return hasExt ? (void*)entry_vkGetBufferCollectionPropertiesFUCHSIA : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_subpass_shading
|
|
if (!strcmp(name, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
|
|
return hasExt ? (void*)entry_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSubpassShadingHUAWEI"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_subpass_shading");
|
|
return hasExt ? (void*)entry_vkCmdSubpassShadingHUAWEI : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_HUAWEI_invocation_mask
|
|
if (!strcmp(name, "vkCmdBindInvocationMaskHUAWEI"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_HUAWEI_invocation_mask");
|
|
return hasExt ? (void*)entry_vkCmdBindInvocationMaskHUAWEI : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_NV_external_memory_rdma
|
|
if (!strcmp(name, "vkGetMemoryRemoteAddressNV"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_NV_external_memory_rdma");
|
|
return hasExt ? (void*)entry_vkGetMemoryRemoteAddressNV : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_extended_dynamic_state2
|
|
if (!strcmp(name, "vkCmdSetPatchControlPointsEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
|
|
return hasExt ? (void*)entry_vkCmdSetPatchControlPointsEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetRasterizerDiscardEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
|
|
return hasExt ? (void*)entry_vkCmdSetRasterizerDiscardEnableEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetDepthBiasEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
|
|
return hasExt ? (void*)entry_vkCmdSetDepthBiasEnableEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetLogicOpEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
|
|
return hasExt ? (void*)entry_vkCmdSetLogicOpEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetPrimitiveRestartEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_extended_dynamic_state2");
|
|
return hasExt ? (void*)entry_vkCmdSetPrimitiveRestartEnableEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_QNX_screen_surface
|
|
if (!strcmp(name, "vkCreateScreenSurfaceQNX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
|
|
return hasExt ? (void*)entry_vkCreateScreenSurfaceQNX : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetPhysicalDeviceScreenPresentationSupportQNX"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_QNX_screen_surface");
|
|
return hasExt ? (void*)entry_vkGetPhysicalDeviceScreenPresentationSupportQNX : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_color_write_enable
|
|
if (!strcmp(name, "vkCmdSetColorWriteEnableEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_color_write_enable");
|
|
return hasExt ? (void*)entry_vkCmdSetColorWriteEnableEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_GOOGLE_gfxstream
|
|
if (!strcmp(name, "vkRegisterImageColorBufferGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkRegisterImageColorBufferGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkRegisterBufferColorBufferGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkRegisterBufferColorBufferGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkMapMemoryIntoAddressSpaceGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkMapMemoryIntoAddressSpaceGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkUpdateDescriptorSetWithTemplateSizedGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBeginCommandBufferAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkBeginCommandBufferAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkEndCommandBufferAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkEndCommandBufferAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkResetCommandBufferAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkResetCommandBufferAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCommandBufferHostSyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkCommandBufferHostSyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateImageWithRequirementsGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkCreateImageWithRequirementsGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateBufferWithRequirementsGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkCreateBufferWithRequirementsGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetMemoryHostAddressInfoGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkGetMemoryHostAddressInfoGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkFreeMemorySyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkFreeMemorySyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueHostSyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueHostSyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSubmitAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueSubmitAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueWaitIdleAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueWaitIdleAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueBindSparseAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueBindSparseAsyncGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetLinearImageLayoutGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkGetLinearImageLayoutGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetLinearImageLayout2GOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkGetLinearImageLayout2GOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueFlushCommandsGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueFlushCommandsGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueCommitDescriptorSetUpdatesGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueCommitDescriptorSetUpdatesGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCollectDescriptorPoolIdsGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkCollectDescriptorPoolIdsGOOGLE : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_GOOGLE_gfxstream");
|
|
return hasExt ? (void*)entry_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_multi_draw
|
|
if (!strcmp(name, "vkCmdDrawMultiEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
|
|
return hasExt ? (void*)entry_vkCmdDrawMultiEXT : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdDrawMultiIndexedEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_multi_draw");
|
|
return hasExt ? (void*)entry_vkCmdDrawMultiIndexedEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_EXT_pageable_device_local_memory
|
|
if (!strcmp(name, "vkSetDeviceMemoryPriorityEXT"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_EXT_pageable_device_local_memory");
|
|
return hasExt ? (void*)entry_vkSetDeviceMemoryPriorityEXT : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_acceleration_structure
|
|
if (!strcmp(name, "vkCreateAccelerationStructureKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCreateAccelerationStructureKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkDestroyAccelerationStructureKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkDestroyAccelerationStructureKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructuresKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdBuildAccelerationStructuresIndirectKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCmdBuildAccelerationStructuresIndirectKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkBuildAccelerationStructuresKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkBuildAccelerationStructuresKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCopyAccelerationStructureKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCopyAccelerationStructureKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCopyAccelerationStructureToMemoryKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCopyAccelerationStructureToMemoryKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCopyMemoryToAccelerationStructureKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCopyMemoryToAccelerationStructureKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkWriteAccelerationStructuresPropertiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkWriteAccelerationStructuresPropertiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyAccelerationStructureToMemoryKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCmdCopyAccelerationStructureToMemoryKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdCopyMemoryToAccelerationStructureKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCmdCopyMemoryToAccelerationStructureKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureDeviceAddressKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkGetAccelerationStructureDeviceAddressKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdWriteAccelerationStructuresPropertiesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkCmdWriteAccelerationStructuresPropertiesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetDeviceAccelerationStructureCompatibilityKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkGetDeviceAccelerationStructureCompatibilityKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetAccelerationStructureBuildSizesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_acceleration_structure");
|
|
return hasExt ? (void*)entry_vkGetAccelerationStructureBuildSizesKHR : nullptr;
|
|
}
|
|
#endif
|
|
#ifdef VK_KHR_ray_tracing_pipeline
|
|
if (!strcmp(name, "vkCmdTraceRaysKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
|
|
return hasExt ? (void*)entry_vkCmdTraceRaysKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCreateRayTracingPipelinesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
|
|
return hasExt ? (void*)entry_vkCreateRayTracingPipelinesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
|
|
return hasExt ? (void*)entry_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdTraceRaysIndirectKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
|
|
return hasExt ? (void*)entry_vkCmdTraceRaysIndirectKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkGetRayTracingShaderGroupStackSizeKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
|
|
return hasExt ? (void*)entry_vkGetRayTracingShaderGroupStackSizeKHR : nullptr;
|
|
}
|
|
if (!strcmp(name, "vkCmdSetRayTracingPipelineStackSizeKHR"))
|
|
{
|
|
bool hasExt = resources->hasDeviceExtension(device, "VK_KHR_ray_tracing_pipeline");
|
|
return hasExt ? (void*)entry_vkCmdSetRayTracingPipelineStackSizeKHR : nullptr;
|
|
}
|
|
#endif
|
|
return nullptr;
|
|
}
|
|
|
|
} // namespace goldfish_vk
|