From dd6deccf522336a2c3ed41c12d5f54c08f9ffb6a Mon Sep 17 00:00:00 2001 From: asuessenbach Date: Mon, 4 Apr 2022 10:00:13 +0200 Subject: [PATCH] Add missing allocator template argument in createResultValue helper functions working on std::vector types. --- VulkanHppGenerator.cpp | 39 +++++++++++++---------------- tests/UniqueHandle/UniqueHandle.cpp | 12 +++++++++ vulkan/vulkan.hpp | 16 ++++++------ 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/VulkanHppGenerator.cpp b/VulkanHppGenerator.cpp index c8e5967..9c9fd28 100644 --- a/VulkanHppGenerator.cpp +++ b/VulkanHppGenerator.cpp @@ -16875,14 +16875,14 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h return ResultValue>( result, UniqueHandle( data, deleter ) ); } - template - VULKAN_HPP_INLINE typename ResultValueType>>::type - createResultValue( Result result, std::vector> && data, char const * message ) + template >> + VULKAN_HPP_INLINE typename ResultValueType, Allocator>>::type + createResultValue( Result result, std::vector, Allocator> && data, char const * message ) { # ifdef VULKAN_HPP_NO_EXCEPTIONS ignore( message ); VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); - return ResultValue>>( result, std::move( data ) ); + return ResultValue, Allocator>>( result, std::move( data ) ); # else if ( result != Result::eSuccess ) { @@ -16892,16 +16892,13 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h # endif } - template - VULKAN_HPP_INLINE ResultValue>> - createResultValue( Result result, - std::vector> && data, - char const * message, - std::initializer_list successCodes ) + template >> + VULKAN_HPP_INLINE ResultValue, Allocator>> + createResultValue( Result result, std::vector, Allocator> && data, char const * message, std::initializer_list successCodes ) { # ifdef VULKAN_HPP_NO_EXCEPTIONS ignore( message ); - ignore(successCodes); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); # else if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) @@ -16909,7 +16906,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h throwResultException( result, message ); } # endif - return ResultValue>>( result, std::move( data ) ); + return ResultValue, Allocator>>( result, std::move( data ) ); } #endif @@ -16984,16 +16981,8 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h std::string filename = ( argc == 1 ) ? VK_SPEC : argv[1]; - std::cout << "VulkanHppGenerator: Loading " << filename << std::endl; - tinyxml2::XMLError error = doc.LoadFile( filename.c_str() ); - if ( error != tinyxml2::XML_SUCCESS ) - { - std::cout << "VulkanHppGenerator: failed to load file " << filename << " with error <" << toString( error ) << ">" << std::endl; - return -1; - } - #if defined( CLANG_FORMAT_EXECUTABLE ) - std::cout << "VulkanHppGenerator: Formatting using "; + std::cout << "VulkanHppGenerator: Found "; std::string commandString = "\"" CLANG_FORMAT_EXECUTABLE "\" --version "; int ret = std::system( commandString.c_str() ); if ( ret != 0 ) @@ -17002,6 +16991,14 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h } #endif + std::cout << "VulkanHppGenerator: Loading " << filename << std::endl; + tinyxml2::XMLError error = doc.LoadFile( filename.c_str() ); + if ( error != tinyxml2::XML_SUCCESS ) + { + std::cout << "VulkanHppGenerator: failed to load file " << filename << " with error <" << toString( error ) << ">" << std::endl; + return -1; + } + std::cout << "VulkanHppGenerator: Parsing " << filename << std::endl; VulkanHppGenerator generator( doc ); diff --git a/tests/UniqueHandle/UniqueHandle.cpp b/tests/UniqueHandle/UniqueHandle.cpp index ad1589e..77de373 100644 --- a/tests/UniqueHandle/UniqueHandle.cpp +++ b/tests/UniqueHandle/UniqueHandle.cpp @@ -25,6 +25,11 @@ static std::string AppName = "UniqueHandle"; static std::string EngineName = "Vulkan.hpp"; +template +class MyAllocator : public std::allocator +{ +}; + vk::UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( vk::Device const & device, std::vector> const & bindingData, vk::DescriptorSetLayoutCreateFlags flags = {} ) @@ -260,6 +265,13 @@ int main( int /*argc*/, char ** /*argv*/ ) // create a GraphicsPipeline vk::UniquePipeline graphicsPipeline = device->createGraphicsPipelineUnique( *pipelineCache, graphicsPipelineCreateInfo ).value; + vk::UniquePipeline graphicsPipeline2 = + std::move( device->createGraphicsPipelinesUnique>( *pipelineCache, graphicsPipelineCreateInfo ) + .value[0] ); + + vk::UniquePipeline graphicsPipeline3 = + std::move( device->createGraphicsPipelinesUnique( *pipelineCache, graphicsPipelineCreateInfo ).value[0] ); + // destroy the non-Unique surface used here instance->destroySurfaceKHR( surfaceData.surface ); } diff --git a/vulkan/vulkan.hpp b/vulkan/vulkan.hpp index e0bb6ac..29b70ae 100644 --- a/vulkan/vulkan.hpp +++ b/vulkan/vulkan.hpp @@ -6034,14 +6034,14 @@ namespace VULKAN_HPP_NAMESPACE return ResultValue>( result, UniqueHandle( data, deleter ) ); } - template - VULKAN_HPP_INLINE typename ResultValueType>>::type - createResultValue( Result result, std::vector> && data, char const * message ) + template >> + VULKAN_HPP_INLINE typename ResultValueType, Allocator>>::type + createResultValue( Result result, std::vector, Allocator> && data, char const * message ) { # ifdef VULKAN_HPP_NO_EXCEPTIONS ignore( message ); VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); - return ResultValue>>( result, std::move( data ) ); + return ResultValue, Allocator>>( result, std::move( data ) ); # else if ( result != Result::eSuccess ) { @@ -6051,9 +6051,9 @@ namespace VULKAN_HPP_NAMESPACE # endif } - template - VULKAN_HPP_INLINE ResultValue>> - createResultValue( Result result, std::vector> && data, char const * message, std::initializer_list successCodes ) + template >> + VULKAN_HPP_INLINE ResultValue, Allocator>> + createResultValue( Result result, std::vector, Allocator> && data, char const * message, std::initializer_list successCodes ) { # ifdef VULKAN_HPP_NO_EXCEPTIONS ignore( message ); @@ -6065,7 +6065,7 @@ namespace VULKAN_HPP_NAMESPACE throwResultException( result, message ); } # endif - return ResultValue>>( result, std::move( data ) ); + return ResultValue, Allocator>>( result, std::move( data ) ); } #endif