summaryrefslogtreecommitdiffhomepage
path: root/include/vulkan/vulkan.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/vulkan/vulkan.hpp')
-rw-r--r--include/vulkan/vulkan.hpp243
1 files changed, 54 insertions, 189 deletions
diff --git a/include/vulkan/vulkan.hpp b/include/vulkan/vulkan.hpp
index 080985b..0eec337 100644
--- a/include/vulkan/vulkan.hpp
+++ b/include/vulkan/vulkan.hpp
@@ -119,7 +119,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h
# include <span>
#endif
-static_assert( VK_HEADER_VERSION == 199, "Wrong VK_HEADER_VERSION!" );
+static_assert( VK_HEADER_VERSION == 200, "Wrong VK_HEADER_VERSION!" );
// 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
@@ -308,88 +308,26 @@ namespace VULKAN_HPP_NAMESPACE
# pragma GCC diagnostic pop
# endif
- template <size_t N>
- ArrayProxy( std::array<T, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
+ // Any type with a .data() return type implicitly convertible to T*, and a .size() return type implicitly
+ // convertible to size_t. The const version can capture temporaries, with lifetime ending at end of statement.
+ template <typename V,
+ typename std::enable_if<
+ std::is_convertible<decltype( std::declval<V>().data() ), T *>::value &&
+ std::is_convertible<decltype( std::declval<V>().size() ), std::size_t>::value>::type * = nullptr>
+ ArrayProxy( V const & v ) VULKAN_HPP_NOEXCEPT
+ : m_count( static_cast<uint32_t>( v.size() ) )
+ , m_ptr( v.data() )
{}
- template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxy( std::array<typename std::remove_const<T>::type, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
+ template <typename V,
+ typename std::enable_if<
+ std::is_convertible<decltype( std::declval<V>().data() ), T *>::value &&
+ std::is_convertible<decltype( std::declval<V>().size() ), std::size_t>::value>::type * = nullptr>
+ ArrayProxy( V & v ) VULKAN_HPP_NOEXCEPT
+ : m_count( static_cast<uint32_t>( v.size() ) )
+ , m_ptr( v.data() )
{}
- template <size_t N>
- ArrayProxy( std::array<T, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
- {}
-
- template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxy( std::array<typename std::remove_const<T>::type, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
- ArrayProxy( std::vector<T, Allocator> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxy( std::vector<typename std::remove_const<T>::type, Allocator> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
- ArrayProxy( std::vector<T, Allocator> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxy( std::vector<typename std::remove_const<T>::type, Allocator> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
-# if defined( VULKAN_HPP_SUPPORT_SPAN )
- template <size_t N = std::dynamic_extent>
- ArrayProxy( std::span<T, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <size_t N = std::dynamic_extent,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxy( std::span<typename std::remove_const<T>::type, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <size_t N = std::dynamic_extent>
- ArrayProxy( std::span<T, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <size_t N = std::dynamic_extent,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxy( std::span<typename std::remove_const<T>::type, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-# endif
-
const T * begin() const VULKAN_HPP_NOEXCEPT
{
return m_ptr;
@@ -451,7 +389,8 @@ namespace VULKAN_HPP_NAMESPACE
, m_ptr( &value )
{}
- ArrayProxyNoTemporaries( T && value ) = delete;
+ template <typename V>
+ ArrayProxyNoTemporaries( V && value ) = delete;
template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
ArrayProxyNoTemporaries( typename std::remove_const<T>::type & value ) VULKAN_HPP_NOEXCEPT
@@ -506,117 +445,17 @@ namespace VULKAN_HPP_NAMESPACE
template <typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
ArrayProxyNoTemporaries( std::initializer_list<typename std::remove_const<T>::type> && list ) = delete;
- template <size_t N>
- ArrayProxyNoTemporaries( std::array<T, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
- {}
-
- template <size_t N>
- ArrayProxyNoTemporaries( std::array<T, N> const && data ) = delete;
-
- template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
+ // Any type with a .data() return type implicitly convertible to T*, and a // .size() return type implicitly
+ // convertible to size_t.
+ template <typename V,
+ typename std::enable_if<
+ std::is_convertible<decltype( std::declval<V>().data() ), T *>::value &&
+ std::is_convertible<decltype( std::declval<V>().size() ), std::size_t>::value>::type * = nullptr>
+ ArrayProxyNoTemporaries( V & v ) VULKAN_HPP_NOEXCEPT
+ : m_count( static_cast<uint32_t>( v.size() ) )
+ , m_ptr( v.data() )
{}
- template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> const && data ) = delete;
-
- template <size_t N>
- ArrayProxyNoTemporaries( std::array<T, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
- {}
-
- template <size_t N>
- ArrayProxyNoTemporaries( std::array<T, N> && data ) = delete;
-
- template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( N )
- , m_ptr( data.data() )
- {}
-
- template <size_t N, typename B = T, typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::array<typename std::remove_const<T>::type, N> && data ) = delete;
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
- ArrayProxyNoTemporaries( std::vector<T, Allocator> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
- ArrayProxyNoTemporaries( std::vector<T, Allocator> const && data ) = delete;
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> const & data )
- VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> const && data ) = delete;
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
- ArrayProxyNoTemporaries( std::vector<T, Allocator> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
- ArrayProxyNoTemporaries( std::vector<T, Allocator> && data ) = delete;
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <class Allocator = std::allocator<typename std::remove_const<T>::type>,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::vector<typename std::remove_const<T>::type, Allocator> && data ) = delete;
-
-# if defined( VULKAN_HPP_SUPPORT_SPAN )
- template <size_t N = std::dynamic_extent>
- ArrayProxyNoTemporaries( std::span<T, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <size_t N = std::dynamic_extent,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::span<typename std::remove_const<T>::type, N> const & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <size_t N = std::dynamic_extent>
- ArrayProxyNoTemporaries( std::span<T, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-
- template <size_t N = std::dynamic_extent,
- typename B = T,
- typename std::enable_if<std::is_const<B>::value, int>::type = 0>
- ArrayProxyNoTemporaries( std::span<typename std::remove_const<T>::type, N> & data ) VULKAN_HPP_NOEXCEPT
- : m_count( static_cast<uint32_t>( data.size() ) )
- , m_ptr( data.data() )
- {}
-# endif
-
const T * begin() const VULKAN_HPP_NOEXCEPT
{
return m_ptr;
@@ -10759,6 +10598,32 @@ namespace VULKAN_HPP_NAMESPACE
};
};
+ //=== VK_EXT_depth_clip_control ===
+ template <>
+ struct StructExtends<PhysicalDeviceDepthClipControlFeaturesEXT, PhysicalDeviceFeatures2>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<PhysicalDeviceDepthClipControlFeaturesEXT, DeviceCreateInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+ template <>
+ struct StructExtends<PipelineViewportDepthClipControlCreateInfoEXT, PipelineViewportStateCreateInfo>
+ {
+ enum
+ {
+ value = true
+ };
+ };
+
//=== VK_EXT_primitive_topology_list_restart ===
template <>
struct StructExtends<PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, PhysicalDeviceFeatures2>