mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2024-10-14 16:32:17 +00:00
Add special handling for new VK_NV_acquire_winrt_display extension
This commit is contained in:
parent
99d9ef9b7d
commit
301bbf08dd
@ -4047,8 +4047,13 @@ std::string VulkanHppGenerator::constructCommandResultGetHandleUnique( std::stri
|
||||
std::string objectDeleter, allocator;
|
||||
if ( ( name.find( "Acquire" ) != std::string::npos ) || ( name.find( "Get" ) != std::string::npos ) )
|
||||
{
|
||||
assert( ( name == "vkAcquirePerformanceConfigurationINTEL" ) || ( name == "vkGetRandROutputDisplayEXT" ) );
|
||||
objectDeleter = "ObjectRelease";
|
||||
if( ( name == "vkAcquirePerformanceConfigurationINTEL" ) || ( name == "vkGetRandROutputDisplayEXT" ) ) {
|
||||
objectDeleter = "ObjectRelease";
|
||||
} else if ( (name == "vkAcquireWinrtDisplayNV") || (name == "vkGetWinrtDisplayNV") ) {
|
||||
objectDeleter = "ObjectReleaseExt";
|
||||
} else {
|
||||
throw std::runtime_error( "Found " + name + " which requires special handling for the object deleter");
|
||||
}
|
||||
}
|
||||
else if ( name.find( "Allocate" ) != std::string::npos )
|
||||
{
|
||||
@ -10422,6 +10427,36 @@ int main( int argc, char ** argv )
|
||||
OwnerType m_owner = {};
|
||||
Dispatch const * m_dispatch = nullptr;
|
||||
};
|
||||
|
||||
template <typename OwnerType, typename Dispatch>
|
||||
class ObjectReleaseExt
|
||||
{
|
||||
public:
|
||||
ObjectReleaseExt() = default;
|
||||
|
||||
ObjectReleaseExt( OwnerType owner, Dispatch const & dispatch = VULKAN_HPP_DEFAULT_DISPATCHER ) VULKAN_HPP_NOEXCEPT
|
||||
: m_owner( owner )
|
||||
, m_dispatch( &dispatch )
|
||||
{}
|
||||
|
||||
OwnerType getOwner() const VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
return m_owner;
|
||||
}
|
||||
|
||||
protected:
|
||||
template <typename T>
|
||||
void destroy( T t ) VULKAN_HPP_NOEXCEPT
|
||||
{
|
||||
VULKAN_HPP_ASSERT( m_owner && m_dispatch );
|
||||
m_owner.releaseExt( t, *m_dispatch );
|
||||
}
|
||||
|
||||
private:
|
||||
OwnerType m_owner = {};
|
||||
Dispatch const * m_dispatch = nullptr;
|
||||
};
|
||||
|
||||
)";
|
||||
|
||||
static const std::string classOptional = R"(
|
||||
|
Loading…
Reference in New Issue
Block a user