mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2024-10-14 16:32:17 +00:00
Add vk::DynamicLoader and simplify usage of vk::DispatchLoaderDynamic. Update Vulkan-Headers to 1.1.123 (#387)
This commit is contained in:
parent
e2268eadb6
commit
48d540a23d
@ -1 +1 @@
|
|||||||
Subproject commit 4ee33d2fbd1e7a072c4d8a6cf8f01c4f96d7483d
|
Subproject commit ba091ba6a947f79623b28fe8bfccdce1ab9fa467
|
@ -1015,6 +1015,66 @@ void VulkanHppGenerator::appendCommand(std::string & str, std::string const& ind
|
|||||||
|
|
||||||
void VulkanHppGenerator::appendDispatchLoaderDynamic(std::string & str)
|
void VulkanHppGenerator::appendDispatchLoaderDynamic(std::string & str)
|
||||||
{
|
{
|
||||||
|
str += R"(
|
||||||
|
class DynamicLoader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DynamicLoader() : m_success( false )
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
m_library = dlopen( "libvulkan.so", RTLD_NOW | RTLD_LOCAL );
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
m_library = LoadLibrary( "vulkan-1.dll" );
|
||||||
|
#else
|
||||||
|
assert( false && "unsupported platform" );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_success = m_library != 0;
|
||||||
|
#ifndef VULKAN_HPP_NO_EXCEPTIONS
|
||||||
|
if ( !m_success )
|
||||||
|
{
|
||||||
|
// NOTE there should be an InitializationFailedError, but msvc insists on the symbol does not exist within the scope of this function.
|
||||||
|
throw std::runtime_error( "Failed to load vulkan library!" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
~DynamicLoader()
|
||||||
|
{
|
||||||
|
if ( m_library )
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
dlclose( m_library );
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
FreeLibrary( m_library );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
T getProcAddress( const char* function ) const
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
return (T)dlsym( m_library, function );
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
return (T)GetProcAddress( m_library, function );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool success() const { return m_success; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_success;
|
||||||
|
#if defined(__linux__)
|
||||||
|
void *m_library;
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
HMODULE m_library;
|
||||||
|
#else
|
||||||
|
#error unsupported platform
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
)";
|
||||||
str += R"(
|
str += R"(
|
||||||
class DispatchLoaderDynamic
|
class DispatchLoaderDynamic
|
||||||
{
|
{
|
||||||
@ -1052,6 +1112,21 @@ void VulkanHppGenerator::appendDispatchLoaderDynamic(std::string & str)
|
|||||||
}
|
}
|
||||||
#endif // !defined(VK_NO_PROTOTYPES)
|
#endif // !defined(VK_NO_PROTOTYPES)
|
||||||
|
|
||||||
|
DispatchLoaderDynamic(PFN_vkGetInstanceProcAddr getInstanceProcAddr)
|
||||||
|
{
|
||||||
|
init(getInstanceProcAddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void init( PFN_vkGetInstanceProcAddr getInstanceProcAddr )
|
||||||
|
{
|
||||||
|
VULKAN_HPP_ASSERT(getInstanceProcAddr);
|
||||||
|
|
||||||
|
vkGetInstanceProcAddr = getInstanceProcAddr;
|
||||||
|
vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) );
|
||||||
|
vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) );
|
||||||
|
vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( NULL, "vkCreateInstance" ) );
|
||||||
|
}
|
||||||
|
|
||||||
// This interface does not require a linked vulkan library.
|
// This interface does not require a linked vulkan library.
|
||||||
DispatchLoaderDynamic( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
DispatchLoaderDynamic( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
||||||
{
|
{
|
||||||
@ -1062,7 +1137,6 @@ void VulkanHppGenerator::appendDispatchLoaderDynamic(std::string & str)
|
|||||||
void init( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
void init( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
||||||
{
|
{
|
||||||
VULKAN_HPP_ASSERT(instance && getInstanceProcAddr);
|
VULKAN_HPP_ASSERT(instance && getInstanceProcAddr);
|
||||||
VULKAN_HPP_ASSERT(!!device == !!getDeviceProcAddr);
|
|
||||||
vkGetInstanceProcAddr = getInstanceProcAddr;
|
vkGetInstanceProcAddr = getInstanceProcAddr;
|
||||||
vkGetDeviceProcAddr = getDeviceProcAddr ? getDeviceProcAddr : PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr") );
|
vkGetDeviceProcAddr = getDeviceProcAddr ? getDeviceProcAddr : PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr") );
|
||||||
)";
|
)";
|
||||||
@ -4991,6 +5065,10 @@ static const std::string constExpressionArrayCopy = R"(
|
|||||||
# include <cassert>
|
# include <cassert>
|
||||||
# define VULKAN_HPP_ASSERT assert
|
# define VULKAN_HPP_ASSERT assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__linux__)
|
||||||
|
# include <dlfcn.h>
|
||||||
|
#endif
|
||||||
)";
|
)";
|
||||||
|
|
||||||
static const std::string is_error_code_enum = R"(
|
static const std::string is_error_code_enum = R"(
|
||||||
|
@ -20,10 +20,10 @@ project(Vulkan-Hpp_Tests)
|
|||||||
|
|
||||||
option (TESTS_BUILD_WITH_LOCAL_VULKAN_HPP OFF)
|
option (TESTS_BUILD_WITH_LOCAL_VULKAN_HPP OFF)
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
|
if (WIN32)
|
||||||
add_definitions(-DNOMINMAX -DVK_USE_PLATFORM_WIN32_KHR)
|
add_definitions(-DNOMINMAX -DVK_USE_PLATFORM_WIN32_KHR)
|
||||||
else()
|
elseif(UNIX)
|
||||||
error("unhandled platform !")
|
add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
FILE (GLOB linkunits ${CMAKE_CURRENT_SOURCE_DIR}/*)
|
FILE (GLOB linkunits ${CMAKE_CURRENT_SOURCE_DIR}/*)
|
||||||
|
@ -29,6 +29,10 @@ source_group(sources FILES ${SOURCES})
|
|||||||
add_executable(DispatchLoaderDynamic
|
add_executable(DispatchLoaderDynamic
|
||||||
${HEADERS}
|
${HEADERS}
|
||||||
${SOURCES}
|
${SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (UNIX)
|
||||||
|
target_link_libraries(DispatchLoaderDynamic "-ldl")
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_properties(DispatchLoaderDynamic PROPERTIES FOLDER "Tests")
|
set_target_properties(DispatchLoaderDynamic PROPERTIES FOLDER "Tests")
|
||||||
|
@ -26,75 +26,36 @@ int main(int /*argc*/, char ** /*argv*/)
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// empty DispatchLoaderDynamic, used for init calls later on
|
|
||||||
vk::DispatchLoaderDynamic dld0;
|
vk::DispatchLoaderDynamic dld0;
|
||||||
|
vk::DynamicLoader dl;
|
||||||
|
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = dl.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr");
|
||||||
|
|
||||||
HMODULE vulkanDll = LoadLibrary("C:/Windows/System32/vulkan-1.dll");
|
// empty DispatchLoaderDynamic, used for init calls later on
|
||||||
if (vulkanDll)
|
vk::DispatchLoaderDynamic dld_boot(vkGetInstanceProcAddr);
|
||||||
{
|
vk::Instance instance = vk::createInstance({}, nullptr, dld_boot);
|
||||||
// create a dispatcher, based on vkInstance/vkGetInstanceProcAddr only
|
|
||||||
PFN_vkCreateInstance vkCreateInstance = PFN_vkCreateInstance(GetProcAddress(vulkanDll, "vkCreateInstance"));
|
|
||||||
assert(vkCreateInstance);
|
|
||||||
|
|
||||||
VkInstanceCreateInfo vkInstanceCreateInfo = {};
|
vk::DispatchLoaderDynamic dld1(instance, vkGetInstanceProcAddr);
|
||||||
vkInstanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
|
||||||
VkInstance vkInstance;
|
|
||||||
VkResult vkResult = vkCreateInstance(&vkInstanceCreateInfo, nullptr, &vkInstance);
|
|
||||||
assert(vkResult == VK_SUCCESS);
|
|
||||||
|
|
||||||
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr(GetProcAddress(vulkanDll, "vkGetInstanceProcAddr"));
|
// compare to the empty dispatcher, and init the empty dispatcher the same way
|
||||||
assert(vkGetInstanceProcAddr);
|
assert(memcmp(&dld0, &dld1, sizeof(vk::DispatchLoaderDynamic)) != 0);
|
||||||
|
dld0.init(instance, vkGetInstanceProcAddr);
|
||||||
|
assert(memcmp(&dld0, &dld1, sizeof(vk::DispatchLoaderDynamic)) == 0);
|
||||||
|
|
||||||
vk::DispatchLoaderDynamic dld1(vkInstance, vkGetInstanceProcAddr);
|
// create a dispatcher, based on additional vkDevice/vkGetDeviceProcAddr
|
||||||
|
std::vector<vk::PhysicalDevice> physicalDevices = instance.enumeratePhysicalDevices(dld1);
|
||||||
|
|
||||||
// compare to the empty dispatcher, and init the empty dispatcher the same way
|
assert(!physicalDevices.empty());
|
||||||
assert(memcmp(&dld0, &dld1, sizeof(vk::DispatchLoaderDynamic)) != 0);
|
|
||||||
dld0.init(vkInstance, vkGetInstanceProcAddr);
|
vk::Device device = physicalDevices[0].createDevice({}, nullptr, dld1);
|
||||||
assert(memcmp(&dld0, &dld1, sizeof(vk::DispatchLoaderDynamic)) == 0);
|
|
||||||
|
// device specialization functions
|
||||||
|
vk::DispatchLoaderDynamic dld2(instance, vkGetInstanceProcAddr, device);
|
||||||
|
|
||||||
|
|
||||||
// create a dispatcher, based on additional vkDevice/vkGetDeviceProcAddr
|
// compare to "simpler" dispatcher and make them equal
|
||||||
PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices(GetProcAddress(vulkanDll, "vkEnumeratePhysicalDevices"));
|
assert(memcmp(&dld0, &dld2, sizeof(vk::DispatchLoaderDynamic)) != 0);
|
||||||
assert(vkEnumeratePhysicalDevices);
|
dld0.init(instance, vkGetInstanceProcAddr, device);
|
||||||
|
assert(memcmp(&dld0, &dld2, sizeof(vk::DispatchLoaderDynamic)) == 0);
|
||||||
std::vector<VkPhysicalDevice> physicalDevices;
|
|
||||||
uint32_t physicalDeviceCount;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
vkResult = vkEnumeratePhysicalDevices(vkInstance, &physicalDeviceCount, nullptr);
|
|
||||||
if ((vkResult == VK_SUCCESS) && physicalDeviceCount)
|
|
||||||
{
|
|
||||||
physicalDevices.resize(physicalDeviceCount);
|
|
||||||
vkResult = vkEnumeratePhysicalDevices(vkInstance, &physicalDeviceCount, physicalDevices.data());
|
|
||||||
}
|
|
||||||
} while (vkResult != VK_SUCCESS);
|
|
||||||
assert(vkResult == VK_SUCCESS);
|
|
||||||
assert(physicalDeviceCount <= physicalDevices.size());
|
|
||||||
if (physicalDeviceCount < physicalDevices.size())
|
|
||||||
{
|
|
||||||
physicalDevices.resize(physicalDeviceCount);
|
|
||||||
}
|
|
||||||
assert(!physicalDevices.empty());
|
|
||||||
|
|
||||||
PFN_vkCreateDevice vkCreateDevice = PFN_vkCreateDevice(GetProcAddress(vulkanDll, "vkCreateDevice"));
|
|
||||||
assert(vkCreateDevice);
|
|
||||||
|
|
||||||
VkDeviceCreateInfo vkDeviceCreateInfo = {};
|
|
||||||
vkDeviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
|
||||||
VkDevice vkDevice;
|
|
||||||
vkResult = vkCreateDevice(physicalDevices[0], &vkDeviceCreateInfo, nullptr, &vkDevice);
|
|
||||||
assert(vkResult == VK_SUCCESS);
|
|
||||||
|
|
||||||
PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr(GetProcAddress(vulkanDll, "vkGetDeviceProcAddr"));
|
|
||||||
vk::DispatchLoaderDynamic dld2(vkInstance, vkGetInstanceProcAddr, vkDevice, vkGetDeviceProcAddr);
|
|
||||||
|
|
||||||
// compare to "simpler" dispatcher and make them equal
|
|
||||||
assert(memcmp(&dld0, &dld2, sizeof(vk::DispatchLoaderDynamic)) != 0);
|
|
||||||
dld0.init(vkInstance, vkGetInstanceProcAddr, vkDevice, vkGetDeviceProcAddr);
|
|
||||||
assert(memcmp(&dld0, &dld2, sizeof(vk::DispatchLoaderDynamic)) == 0);
|
|
||||||
|
|
||||||
FreeLibrary(vulkanDll);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (vk::SystemError err)
|
catch (vk::SystemError err)
|
||||||
{
|
{
|
||||||
|
@ -56,7 +56,11 @@
|
|||||||
# define VULKAN_HPP_ASSERT assert
|
# define VULKAN_HPP_ASSERT assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static_assert( VK_HEADER_VERSION == 120 , "Wrong VK_HEADER_VERSION!" );
|
#if defined(__linux__)
|
||||||
|
# include <dlfcn.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static_assert( VK_HEADER_VERSION == 123 , "Wrong VK_HEADER_VERSION!" );
|
||||||
|
|
||||||
// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
|
// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
|
||||||
// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
|
// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
|
||||||
@ -4850,7 +4854,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
|
eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
|
||||||
eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||||
eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
|
eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
|
||||||
eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
|
eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
|
||||||
|
eMirrorClampToEdgeKHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR
|
||||||
};
|
};
|
||||||
|
|
||||||
VULKAN_HPP_INLINE std::string to_string( SamplerAddressMode value )
|
VULKAN_HPP_INLINE std::string to_string( SamplerAddressMode value )
|
||||||
@ -5370,6 +5375,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
ePhysicalDeviceImageViewImageFormatInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
|
ePhysicalDeviceImageViewImageFormatInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
|
||||||
eFilterCubicImageViewImageFormatPropertiesEXT = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
|
eFilterCubicImageViewImageFormatPropertiesEXT = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
|
||||||
eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
|
eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
|
||||||
|
ePhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR,
|
||||||
ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR,
|
ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR,
|
||||||
eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
|
eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
|
||||||
eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
|
eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
|
||||||
@ -5418,6 +5424,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,
|
ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,
|
||||||
ePhysicalDeviceSubgroupSizeControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,
|
ePhysicalDeviceSubgroupSizeControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,
|
||||||
ePhysicalDeviceShaderCoreProperties2AMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
|
ePhysicalDeviceShaderCoreProperties2AMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,
|
||||||
|
ePhysicalDeviceCoherentMemoryFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,
|
||||||
ePhysicalDeviceMemoryBudgetPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
|
ePhysicalDeviceMemoryBudgetPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,
|
||||||
ePhysicalDeviceMemoryPriorityFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
|
ePhysicalDeviceMemoryPriorityFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,
|
||||||
eMemoryPriorityAllocateInfoEXT = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
|
eMemoryPriorityAllocateInfoEXT = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT,
|
||||||
@ -5813,6 +5820,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
case StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT : return "PhysicalDeviceImageViewImageFormatInfoEXT";
|
case StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT : return "PhysicalDeviceImageViewImageFormatInfoEXT";
|
||||||
case StructureType::eFilterCubicImageViewImageFormatPropertiesEXT : return "FilterCubicImageViewImageFormatPropertiesEXT";
|
case StructureType::eFilterCubicImageViewImageFormatPropertiesEXT : return "FilterCubicImageViewImageFormatPropertiesEXT";
|
||||||
case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT : return "DeviceQueueGlobalPriorityCreateInfoEXT";
|
case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT : return "DeviceQueueGlobalPriorityCreateInfoEXT";
|
||||||
|
case StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR : return "PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR";
|
||||||
case StructureType::ePhysicalDevice8BitStorageFeaturesKHR : return "PhysicalDevice8BitStorageFeaturesKHR";
|
case StructureType::ePhysicalDevice8BitStorageFeaturesKHR : return "PhysicalDevice8BitStorageFeaturesKHR";
|
||||||
case StructureType::eImportMemoryHostPointerInfoEXT : return "ImportMemoryHostPointerInfoEXT";
|
case StructureType::eImportMemoryHostPointerInfoEXT : return "ImportMemoryHostPointerInfoEXT";
|
||||||
case StructureType::eMemoryHostPointerPropertiesEXT : return "MemoryHostPointerPropertiesEXT";
|
case StructureType::eMemoryHostPointerPropertiesEXT : return "MemoryHostPointerPropertiesEXT";
|
||||||
@ -5861,6 +5869,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
case StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT : return "PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT";
|
case StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT : return "PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT";
|
||||||
case StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT : return "PhysicalDeviceSubgroupSizeControlFeaturesEXT";
|
case StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT : return "PhysicalDeviceSubgroupSizeControlFeaturesEXT";
|
||||||
case StructureType::ePhysicalDeviceShaderCoreProperties2AMD : return "PhysicalDeviceShaderCoreProperties2AMD";
|
case StructureType::ePhysicalDeviceShaderCoreProperties2AMD : return "PhysicalDeviceShaderCoreProperties2AMD";
|
||||||
|
case StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD : return "PhysicalDeviceCoherentMemoryFeaturesAMD";
|
||||||
case StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT : return "PhysicalDeviceMemoryBudgetPropertiesEXT";
|
case StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT : return "PhysicalDeviceMemoryBudgetPropertiesEXT";
|
||||||
case StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT : return "PhysicalDeviceMemoryPriorityFeaturesEXT";
|
case StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT : return "PhysicalDeviceMemoryPriorityFeaturesEXT";
|
||||||
case StructureType::eMemoryPriorityAllocateInfoEXT : return "MemoryPriorityAllocateInfoEXT";
|
case StructureType::eMemoryPriorityAllocateInfoEXT : return "MemoryPriorityAllocateInfoEXT";
|
||||||
@ -8868,7 +8877,9 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
|
||||||
eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
|
eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
|
||||||
eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,
|
eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,
|
||||||
eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT
|
eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT,
|
||||||
|
eDeviceCoherentAMD = VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD,
|
||||||
|
eDeviceUncachedAMD = VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
|
||||||
};
|
};
|
||||||
|
|
||||||
VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlagBits value )
|
VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlagBits value )
|
||||||
@ -8881,6 +8892,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
case MemoryPropertyFlagBits::eHostCached : return "HostCached";
|
case MemoryPropertyFlagBits::eHostCached : return "HostCached";
|
||||||
case MemoryPropertyFlagBits::eLazilyAllocated : return "LazilyAllocated";
|
case MemoryPropertyFlagBits::eLazilyAllocated : return "LazilyAllocated";
|
||||||
case MemoryPropertyFlagBits::eProtected : return "Protected";
|
case MemoryPropertyFlagBits::eProtected : return "Protected";
|
||||||
|
case MemoryPropertyFlagBits::eDeviceCoherentAMD : return "DeviceCoherentAMD";
|
||||||
|
case MemoryPropertyFlagBits::eDeviceUncachedAMD : return "DeviceUncachedAMD";
|
||||||
default: return "invalid";
|
default: return "invalid";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8901,7 +8914,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated) | VkFlags(MemoryPropertyFlagBits::eProtected)
|
allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated) | VkFlags(MemoryPropertyFlagBits::eProtected) | VkFlags(MemoryPropertyFlagBits::eDeviceCoherentAMD) | VkFlags(MemoryPropertyFlagBits::eDeviceUncachedAMD)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -8916,6 +8929,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
if ( value & MemoryPropertyFlagBits::eHostCached ) result += "HostCached | ";
|
if ( value & MemoryPropertyFlagBits::eHostCached ) result += "HostCached | ";
|
||||||
if ( value & MemoryPropertyFlagBits::eLazilyAllocated ) result += "LazilyAllocated | ";
|
if ( value & MemoryPropertyFlagBits::eLazilyAllocated ) result += "LazilyAllocated | ";
|
||||||
if ( value & MemoryPropertyFlagBits::eProtected ) result += "Protected | ";
|
if ( value & MemoryPropertyFlagBits::eProtected ) result += "Protected | ";
|
||||||
|
if ( value & MemoryPropertyFlagBits::eDeviceCoherentAMD ) result += "DeviceCoherentAMD | ";
|
||||||
|
if ( value & MemoryPropertyFlagBits::eDeviceUncachedAMD ) result += "DeviceUncachedAMD | ";
|
||||||
return "{ " + result.substr(0, result.size() - 3) + " }";
|
return "{ " + result.substr(0, result.size() - 3) + " }";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11524,6 +11539,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
|
struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
|
||||||
struct PhysicalDeviceBufferDeviceAddressFeaturesEXT;
|
struct PhysicalDeviceBufferDeviceAddressFeaturesEXT;
|
||||||
using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
|
using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT;
|
||||||
|
struct PhysicalDeviceCoherentMemoryFeaturesAMD;
|
||||||
struct PhysicalDeviceComputeShaderDerivativesFeaturesNV;
|
struct PhysicalDeviceComputeShaderDerivativesFeaturesNV;
|
||||||
struct PhysicalDeviceConditionalRenderingFeaturesEXT;
|
struct PhysicalDeviceConditionalRenderingFeaturesEXT;
|
||||||
struct PhysicalDeviceConservativeRasterizationPropertiesEXT;
|
struct PhysicalDeviceConservativeRasterizationPropertiesEXT;
|
||||||
@ -11615,6 +11631,7 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
|
struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
|
||||||
struct PhysicalDeviceShaderSMBuiltinsFeaturesNV;
|
struct PhysicalDeviceShaderSMBuiltinsFeaturesNV;
|
||||||
struct PhysicalDeviceShaderSMBuiltinsPropertiesNV;
|
struct PhysicalDeviceShaderSMBuiltinsPropertiesNV;
|
||||||
|
struct PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
|
||||||
struct PhysicalDeviceShadingRateImageFeaturesNV;
|
struct PhysicalDeviceShadingRateImageFeaturesNV;
|
||||||
struct PhysicalDeviceShadingRateImagePropertiesNV;
|
struct PhysicalDeviceShadingRateImagePropertiesNV;
|
||||||
struct PhysicalDeviceSparseImageFormatInfo2;
|
struct PhysicalDeviceSparseImageFormatInfo2;
|
||||||
@ -43752,6 +43769,90 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
static_assert( sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), "struct and wrapper have different size!" );
|
static_assert( sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), "struct and wrapper have different size!" );
|
||||||
static_assert( std::is_standard_layout<PhysicalDeviceBufferDeviceAddressFeaturesEXT>::value, "struct wrapper is not a standard layout!" );
|
static_assert( std::is_standard_layout<PhysicalDeviceBufferDeviceAddressFeaturesEXT>::value, "struct wrapper is not a standard layout!" );
|
||||||
|
|
||||||
|
namespace layout
|
||||||
|
{
|
||||||
|
struct PhysicalDeviceCoherentMemoryFeaturesAMD
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( vk::Bool32 deviceCoherentMemory_ = 0 )
|
||||||
|
: deviceCoherentMemory( deviceCoherentMemory_ )
|
||||||
|
{}
|
||||||
|
|
||||||
|
PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs )
|
||||||
|
{
|
||||||
|
*reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(this) = rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicalDeviceCoherentMemoryFeaturesAMD& operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs )
|
||||||
|
{
|
||||||
|
*reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD*>(this) = rhs;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
vk::StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD;
|
||||||
|
void* pNext = nullptr;
|
||||||
|
vk::Bool32 deviceCoherentMemory;
|
||||||
|
};
|
||||||
|
static_assert( sizeof( PhysicalDeviceCoherentMemoryFeaturesAMD ) == sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), "layout struct and wrapper have different size!" );
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PhysicalDeviceCoherentMemoryFeaturesAMD : public layout::PhysicalDeviceCoherentMemoryFeaturesAMD
|
||||||
|
{
|
||||||
|
VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( vk::Bool32 deviceCoherentMemory_ = 0 )
|
||||||
|
: layout::PhysicalDeviceCoherentMemoryFeaturesAMD( deviceCoherentMemory_ )
|
||||||
|
{}
|
||||||
|
|
||||||
|
PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs )
|
||||||
|
: layout::PhysicalDeviceCoherentMemoryFeaturesAMD( rhs )
|
||||||
|
{}
|
||||||
|
|
||||||
|
PhysicalDeviceCoherentMemoryFeaturesAMD& operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs )
|
||||||
|
{
|
||||||
|
layout::PhysicalDeviceCoherentMemoryFeaturesAMD::operator=(rhs);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void* pNext_ )
|
||||||
|
{
|
||||||
|
pNext = pNext_;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicalDeviceCoherentMemoryFeaturesAMD & setDeviceCoherentMemory( vk::Bool32 deviceCoherentMemory_ )
|
||||||
|
{
|
||||||
|
deviceCoherentMemory = deviceCoherentMemory_;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const&() const
|
||||||
|
{
|
||||||
|
return *reinterpret_cast<const VkPhysicalDeviceCoherentMemoryFeaturesAMD*>( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &()
|
||||||
|
{
|
||||||
|
return *reinterpret_cast<VkPhysicalDeviceCoherentMemoryFeaturesAMD*>( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const& rhs ) const
|
||||||
|
{
|
||||||
|
return ( sType == rhs.sType )
|
||||||
|
&& ( pNext == rhs.pNext )
|
||||||
|
&& ( deviceCoherentMemory == rhs.deviceCoherentMemory );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const& rhs ) const
|
||||||
|
{
|
||||||
|
return !operator==( rhs );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
using layout::PhysicalDeviceCoherentMemoryFeaturesAMD::sType;
|
||||||
|
};
|
||||||
|
static_assert( sizeof( PhysicalDeviceCoherentMemoryFeaturesAMD ) == sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), "struct and wrapper have different size!" );
|
||||||
|
static_assert( std::is_standard_layout<PhysicalDeviceCoherentMemoryFeaturesAMD>::value, "struct wrapper is not a standard layout!" );
|
||||||
|
|
||||||
namespace layout
|
namespace layout
|
||||||
{
|
{
|
||||||
struct PhysicalDeviceComputeShaderDerivativesFeaturesNV
|
struct PhysicalDeviceComputeShaderDerivativesFeaturesNV
|
||||||
@ -50343,6 +50444,90 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), "struct and wrapper have different size!" );
|
static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), "struct and wrapper have different size!" );
|
||||||
static_assert( std::is_standard_layout<PhysicalDeviceShaderSMBuiltinsPropertiesNV>::value, "struct wrapper is not a standard layout!" );
|
static_assert( std::is_standard_layout<PhysicalDeviceShaderSMBuiltinsPropertiesNV>::value, "struct wrapper is not a standard layout!" );
|
||||||
|
|
||||||
|
namespace layout
|
||||||
|
{
|
||||||
|
struct PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR( vk::Bool32 shaderSubgroupExtendedTypes_ = 0 )
|
||||||
|
: shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ )
|
||||||
|
{}
|
||||||
|
|
||||||
|
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR( VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const & rhs )
|
||||||
|
{
|
||||||
|
*reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR*>(this) = rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const & rhs )
|
||||||
|
{
|
||||||
|
*reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR*>(this) = rhs;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
vk::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
|
||||||
|
void* pNext = nullptr;
|
||||||
|
vk::Bool32 shaderSubgroupExtendedTypes;
|
||||||
|
};
|
||||||
|
static_assert( sizeof( PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR ), "layout struct and wrapper have different size!" );
|
||||||
|
}
|
||||||
|
|
||||||
|
struct PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR : public layout::PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR
|
||||||
|
{
|
||||||
|
VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR( vk::Bool32 shaderSubgroupExtendedTypes_ = 0 )
|
||||||
|
: layout::PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR( shaderSubgroupExtendedTypes_ )
|
||||||
|
{}
|
||||||
|
|
||||||
|
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR( VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const & rhs )
|
||||||
|
: layout::PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR( rhs )
|
||||||
|
{}
|
||||||
|
|
||||||
|
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const & rhs )
|
||||||
|
{
|
||||||
|
layout::PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR::operator=(rhs);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR & setPNext( void* pNext_ )
|
||||||
|
{
|
||||||
|
pNext = pNext_;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR & setShaderSubgroupExtendedTypes( vk::Bool32 shaderSubgroupExtendedTypes_ )
|
||||||
|
{
|
||||||
|
shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const&() const
|
||||||
|
{
|
||||||
|
return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR*>( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR &()
|
||||||
|
{
|
||||||
|
return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR*>( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const& rhs ) const
|
||||||
|
{
|
||||||
|
return ( sType == rhs.sType )
|
||||||
|
&& ( pNext == rhs.pNext )
|
||||||
|
&& ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR const& rhs ) const
|
||||||
|
{
|
||||||
|
return !operator==( rhs );
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
using layout::PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR::sType;
|
||||||
|
};
|
||||||
|
static_assert( sizeof( PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR ), "struct and wrapper have different size!" );
|
||||||
|
static_assert( std::is_standard_layout<PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>::value, "struct wrapper is not a standard layout!" );
|
||||||
|
|
||||||
namespace layout
|
namespace layout
|
||||||
{
|
{
|
||||||
struct PhysicalDeviceShadingRateImageFeaturesNV
|
struct PhysicalDeviceShadingRateImageFeaturesNV
|
||||||
@ -71152,6 +71337,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceBufferDeviceAddressFeaturesEXT>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceBufferDeviceAddressFeaturesEXT>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceBufferDeviceAddressFeaturesEXT>{ enum { value = true }; };
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceBufferDeviceAddressFeaturesEXT>{ enum { value = true }; };
|
||||||
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceCoherentMemoryFeaturesAMD>{ enum { value = true }; };
|
||||||
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceCoherentMemoryFeaturesAMD>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceComputeShaderDerivativesFeaturesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceComputeShaderDerivativesFeaturesNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceComputeShaderDerivativesFeaturesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceComputeShaderDerivativesFeaturesNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceConditionalRenderingFeaturesEXT>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceConditionalRenderingFeaturesEXT>{ enum { value = true }; };
|
||||||
@ -71214,6 +71401,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewProperties>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceMultiviewProperties>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePCIBusInfoPropertiesEXT>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePCIBusInfoPropertiesEXT>{ enum { value = true }; };
|
||||||
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>{ enum { value = true }; };
|
||||||
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePointClippingProperties>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDevicePointClippingProperties>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceProtectedMemoryFeatures>{ enum { value = true }; };
|
||||||
@ -71245,6 +71434,8 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderSMBuiltinsFeaturesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderSMBuiltinsFeaturesNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderSMBuiltinsFeaturesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderSMBuiltinsFeaturesNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShaderSMBuiltinsPropertiesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShaderSMBuiltinsPropertiesNV>{ enum { value = true }; };
|
||||||
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>{ enum { value = true }; };
|
||||||
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceFeatures2, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceShadingRateImageFeaturesNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShadingRateImagePropertiesNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<PhysicalDeviceProperties2, PhysicalDeviceShadingRateImagePropertiesNV>{ enum { value = true }; };
|
||||||
@ -71342,6 +71533,64 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
template <> struct isStructureChainValid<WriteDescriptorSet, WriteDescriptorSetAccelerationStructureNV>{ enum { value = true }; };
|
template <> struct isStructureChainValid<WriteDescriptorSet, WriteDescriptorSetAccelerationStructureNV>{ enum { value = true }; };
|
||||||
template <> struct isStructureChainValid<WriteDescriptorSet, WriteDescriptorSetInlineUniformBlockEXT>{ enum { value = true }; };
|
template <> struct isStructureChainValid<WriteDescriptorSet, WriteDescriptorSetInlineUniformBlockEXT>{ enum { value = true }; };
|
||||||
|
|
||||||
|
class DynamicLoader
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DynamicLoader() : m_success( false )
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
m_library = dlopen( "libvulkan.so", RTLD_NOW | RTLD_LOCAL );
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
m_library = LoadLibrary( "vulkan-1.dll" );
|
||||||
|
#else
|
||||||
|
assert( false && "unsupported platform" );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_success = m_library != 0;
|
||||||
|
#ifndef VULKAN_HPP_NO_EXCEPTIONS
|
||||||
|
if ( !m_success )
|
||||||
|
{
|
||||||
|
// NOTE there should be an InitializationFailedError, but msvc insists on the symbol does not exist within the scope of this function.
|
||||||
|
throw std::runtime_error( "Failed to load vulkan library!" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
~DynamicLoader()
|
||||||
|
{
|
||||||
|
if ( m_library )
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
dlclose( m_library );
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
FreeLibrary( m_library );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
T getProcAddress( const char* function ) const
|
||||||
|
{
|
||||||
|
#if defined(__linux__)
|
||||||
|
return (T)dlsym( m_library, function );
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
return (T)GetProcAddress( m_library, function );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
bool success() const { return m_success; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_success;
|
||||||
|
#if defined(__linux__)
|
||||||
|
void *m_library;
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
HMODULE m_library;
|
||||||
|
#else
|
||||||
|
#error unsupported platform
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
class DispatchLoaderDynamic
|
class DispatchLoaderDynamic
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -71790,6 +72039,21 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
}
|
}
|
||||||
#endif // !defined(VK_NO_PROTOTYPES)
|
#endif // !defined(VK_NO_PROTOTYPES)
|
||||||
|
|
||||||
|
DispatchLoaderDynamic(PFN_vkGetInstanceProcAddr getInstanceProcAddr)
|
||||||
|
{
|
||||||
|
init(getInstanceProcAddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void init( PFN_vkGetInstanceProcAddr getInstanceProcAddr )
|
||||||
|
{
|
||||||
|
VULKAN_HPP_ASSERT(getInstanceProcAddr);
|
||||||
|
|
||||||
|
vkGetInstanceProcAddr = getInstanceProcAddr;
|
||||||
|
vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) );
|
||||||
|
vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) );
|
||||||
|
vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( NULL, "vkCreateInstance" ) );
|
||||||
|
}
|
||||||
|
|
||||||
// This interface does not require a linked vulkan library.
|
// This interface does not require a linked vulkan library.
|
||||||
DispatchLoaderDynamic( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
DispatchLoaderDynamic( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
||||||
{
|
{
|
||||||
@ -71800,7 +72064,6 @@ namespace VULKAN_HPP_NAMESPACE
|
|||||||
void init( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
void init( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr )
|
||||||
{
|
{
|
||||||
VULKAN_HPP_ASSERT(instance && getInstanceProcAddr);
|
VULKAN_HPP_ASSERT(instance && getInstanceProcAddr);
|
||||||
VULKAN_HPP_ASSERT(!!device == !!getDeviceProcAddr);
|
|
||||||
vkGetInstanceProcAddr = getInstanceProcAddr;
|
vkGetInstanceProcAddr = getInstanceProcAddr;
|
||||||
vkGetDeviceProcAddr = getDeviceProcAddr ? getDeviceProcAddr : PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr") );
|
vkGetDeviceProcAddr = getDeviceProcAddr ? getDeviceProcAddr : PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr") );
|
||||||
vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( instance, "vkCreateInstance" ) );
|
vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( instance, "vkCreateInstance" ) );
|
||||||
|
Loading…
Reference in New Issue
Block a user