diff options
author | Jon Leech <[email protected]> | 2023-03-17 20:45:57 -0700 |
---|---|---|
committer | Jon Leech <[email protected]> | 2023-03-17 20:47:23 -0700 |
commit | fa204df59c6caea6b9be3cf0754a88cd89056a87 (patch) | |
tree | 1378d7059689f09f462d457b60c70e91b65c3c13 | |
parent | 65ad768d8603671fc1085fe115019e72a595ced8 (diff) | |
download | Vulkan-Headers-1.3.244.tar.gz Vulkan-Headers-1.3.244.zip |
Update for Vulkan-Docs 1.3.244v1.3.244
-rw-r--r-- | include/vulkan/vulkan.hpp | 26 | ||||
-rw-r--r-- | include/vulkan/vulkan_core.h | 39 | ||||
-rw-r--r-- | include/vulkan/vulkan_enums.hpp | 17 | ||||
-rw-r--r-- | include/vulkan/vulkan_funcs.hpp | 45 | ||||
-rw-r--r-- | include/vulkan/vulkan_handles.hpp | 25 | ||||
-rw-r--r-- | include/vulkan/vulkan_hash.hpp | 30 | ||||
-rw-r--r-- | include/vulkan/vulkan_raii.hpp | 35 | ||||
-rw-r--r-- | include/vulkan/vulkan_static_assertions.hpp | 12 | ||||
-rw-r--r-- | include/vulkan/vulkan_structs.hpp | 233 | ||||
-rw-r--r-- | include/vulkan/vulkan_to_string.hpp | 16 | ||||
-rw-r--r-- | registry/validusage.json | 674 | ||||
-rw-r--r-- | registry/vk.xml | 89 |
12 files changed, 952 insertions, 289 deletions
diff --git a/include/vulkan/vulkan.hpp b/include/vulkan/vulkan.hpp index 5aae991..6722dd2 100644 --- a/include/vulkan/vulkan.hpp +++ b/include/vulkan/vulkan.hpp @@ -114,7 +114,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h # include <span> #endif -static_assert( VK_HEADER_VERSION == 243, "Wrong VK_HEADER_VERSION!" ); +static_assert( VK_HEADER_VERSION == 244, "Wrong VK_HEADER_VERSION!" ); // 32-bit vulkan is not typesafe for non-dispatchable 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 @@ -4855,6 +4855,18 @@ namespace VULKAN_HPP_NAMESPACE return ::vkGetPipelineExecutableInternalRepresentationsKHR( device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations ); } + //=== VK_KHR_map_memory2 === + + VkResult vkMapMemory2KHR( VkDevice device, const VkMemoryMapInfoKHR * pMemoryMapInfo, void ** ppData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMapMemory2KHR( device, pMemoryMapInfo, ppData ); + } + + VkResult vkUnmapMemory2KHR( VkDevice device, const VkMemoryUnmapInfoKHR * pMemoryUnmapInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUnmapMemory2KHR( device, pMemoryUnmapInfo ); + } + //=== VK_EXT_swapchain_maintenance1 === VkResult vkReleaseSwapchainImagesEXT( VkDevice device, const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo ) const VULKAN_HPP_NOEXCEPT @@ -13401,6 +13413,10 @@ namespace VULKAN_HPP_NAMESPACE PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; + //=== VK_KHR_map_memory2 === + PFN_vkMapMemory2KHR vkMapMemory2KHR = 0; + PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR = 0; + //=== VK_EXT_swapchain_maintenance1 === PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT = 0; @@ -14632,6 +14648,10 @@ namespace VULKAN_HPP_NAMESPACE vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + //=== VK_KHR_map_memory2 === + vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetInstanceProcAddr( instance, "vkMapMemory2KHR" ) ); + vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetInstanceProcAddr( instance, "vkUnmapMemory2KHR" ) ); + //=== VK_EXT_swapchain_maintenance1 === vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetInstanceProcAddr( instance, "vkReleaseSwapchainImagesEXT" ) ); @@ -15608,6 +15628,10 @@ namespace VULKAN_HPP_NAMESPACE vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + //=== VK_KHR_map_memory2 === + vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetDeviceProcAddr( device, "vkMapMemory2KHR" ) ); + vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetDeviceProcAddr( device, "vkUnmapMemory2KHR" ) ); + //=== VK_EXT_swapchain_maintenance1 === vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesEXT" ) ); diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h index eee2051..28090ec 100644 --- a/include/vulkan/vulkan_core.h +++ b/include/vulkan/vulkan_core.h @@ -68,7 +68,7 @@ extern "C" { #define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 243 +#define VK_HEADER_VERSION 244 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) @@ -768,6 +768,8 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000, + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000, VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001, @@ -9835,6 +9837,41 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR #endif +#define VK_KHR_map_memory2 1 +#define VK_KHR_MAP_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_MAP_MEMORY_2_EXTENSION_NAME "VK_KHR_map_memory2" +typedef VkFlags VkMemoryUnmapFlagsKHR; +typedef struct VkMemoryMapInfoKHR { + VkStructureType sType; + const void* pNext; + VkMemoryMapFlags flags; + VkDeviceMemory memory; + VkDeviceSize offset; + VkDeviceSize size; +} VkMemoryMapInfoKHR; + +typedef struct VkMemoryUnmapInfoKHR { + VkStructureType sType; + const void* pNext; + VkMemoryUnmapFlagsKHR flags; + VkDeviceMemory memory; +} VkMemoryUnmapInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory2KHR)(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData); +typedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2KHR)(VkDevice device, const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2KHR( + VkDevice device, + const VkMemoryMapInfoKHR* pMemoryMapInfo, + void** ppData); + +VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2KHR( + VkDevice device, + const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo); +#endif + + #define VK_KHR_shader_integer_dot_product 1 #define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1 #define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product" diff --git a/include/vulkan/vulkan_enums.hpp b/include/vulkan/vulkan_enums.hpp index 384643f..ef4ef4e 100644 --- a/include/vulkan/vulkan_enums.hpp +++ b/include/vulkan/vulkan_enums.hpp @@ -790,6 +790,8 @@ namespace VULKAN_HPP_NAMESPACE ePipelineExecutableInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, ePipelineExecutableStatisticKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, ePipelineExecutableInternalRepresentationKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, + eMemoryMapInfoKHR = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR, + eMemoryUnmapInfoKHR = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR, ePhysicalDeviceShaderAtomicFloat2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, eSurfacePresentModeEXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT, eSurfacePresentScalingCapabilitiesEXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT, @@ -5593,6 +5595,21 @@ namespace VULKAN_HPP_NAMESPACE eFloat64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR }; + //=== VK_KHR_map_memory2 === + + enum class MemoryUnmapFlagBitsKHR : VkMemoryUnmapFlagsKHR + { + }; + + using MemoryUnmapFlagsKHR = Flags<MemoryUnmapFlagBitsKHR>; + + template <> + struct FlagTraits<MemoryUnmapFlagBitsKHR> + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryUnmapFlagsKHR allFlags = {}; + }; + //=== VK_EXT_surface_maintenance1 === enum class PresentScalingFlagBitsEXT : VkPresentScalingFlagsEXT diff --git a/include/vulkan/vulkan_funcs.hpp b/include/vulkan/vulkan_funcs.hpp index 6921ba0..16e98ad 100644 --- a/include/vulkan/vulkan_funcs.hpp +++ b/include/vulkan/vulkan_funcs.hpp @@ -18002,6 +18002,51 @@ namespace VULKAN_HPP_NAMESPACE } #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_KHR_map_memory2 === + + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR * pMemoryMapInfo, + void ** ppData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast<Result>( d.vkMapMemory2KHR( m_device, reinterpret_cast<const VkMemoryMapInfoKHR *>( pMemoryMapInfo ), ppData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType<void *>::type + Device::mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + void * pData; + VkResult result = d.vkMapMemory2KHR( m_device, reinterpret_cast<const VkMemoryMapInfoKHR *>( &memoryMapInfo ), &pData ); + resultCheck( static_cast<VULKAN_HPP_NAMESPACE::Result>( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory2KHR" ); + + return createResultValueType( static_cast<VULKAN_HPP_NAMESPACE::Result>( result ), pData ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch> + VULKAN_HPP_INLINE Result Device::unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR * pMemoryUnmapInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast<Result>( d.vkUnmapMemory2KHR( m_device, reinterpret_cast<const VkMemoryUnmapInfoKHR *>( pMemoryUnmapInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch> + VULKAN_HPP_INLINE void Device::unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + d.vkUnmapMemory2KHR( m_device, reinterpret_cast<const VkMemoryUnmapInfoKHR *>( &memoryUnmapInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_EXT_swapchain_maintenance1 === template <typename Dispatch> diff --git a/include/vulkan/vulkan_handles.hpp b/include/vulkan/vulkan_handles.hpp index d19d9ed..dc36731 100644 --- a/include/vulkan/vulkan_handles.hpp +++ b/include/vulkan/vulkan_handles.hpp @@ -1130,6 +1130,10 @@ namespace VULKAN_HPP_NAMESPACE struct PipelineExecutableStatisticKHR; struct PipelineExecutableInternalRepresentationKHR; + //=== VK_KHR_map_memory2 === + struct MemoryMapInfoKHR; + struct MemoryUnmapInfoKHR; + //=== VK_EXT_shader_atomic_float2 === struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT; @@ -11685,6 +11689,27 @@ namespace VULKAN_HPP_NAMESPACE Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; #endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_KHR_map_memory2 === + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD Result mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR * pMemoryMapInfo, + void ** ppData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + VULKAN_HPP_NODISCARD typename ResultValueType<void *>::type mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + Result unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR * pMemoryUnmapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> + void unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + //=== VK_EXT_swapchain_maintenance1 === template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> diff --git a/include/vulkan/vulkan_hash.hpp b/include/vulkan/vulkan_hash.hpp index 4e8e212..e1f9cf0 100644 --- a/include/vulkan/vulkan_hash.hpp +++ b/include/vulkan/vulkan_hash.hpp @@ -6143,6 +6143,22 @@ namespace std }; template <> + struct hash<VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR const & memoryMapInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfoKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfoKHR.offset ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfoKHR.size ); + return seed; + } + }; + + template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo> { std::size_t @@ -6207,6 +6223,20 @@ namespace std } }; + template <> + struct hash<VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR const & memoryUnmapInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfoKHR.memory ); + return seed; + } + }; + # if defined( VK_USE_PLATFORM_WIN32_KHR ) template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR> diff --git a/include/vulkan/vulkan_raii.hpp b/include/vulkan/vulkan_raii.hpp index 772dea8..5f2e739 100644 --- a/include/vulkan/vulkan_raii.hpp +++ b/include/vulkan/vulkan_raii.hpp @@ -1311,6 +1311,10 @@ namespace VULKAN_HPP_NAMESPACE vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + //=== VK_KHR_map_memory2 === + vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetDeviceProcAddr( device, "vkMapMemory2KHR" ) ); + vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetDeviceProcAddr( device, "vkUnmapMemory2KHR" ) ); + //=== VK_EXT_swapchain_maintenance1 === vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesEXT" ) ); @@ -2151,6 +2155,10 @@ namespace VULKAN_HPP_NAMESPACE PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; + //=== VK_KHR_map_memory2 === + PFN_vkMapMemory2KHR vkMapMemory2KHR = 0; + PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR = 0; + //=== VK_EXT_swapchain_maintenance1 === PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT = 0; @@ -3933,6 +3941,12 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR> getPipelineExecutableInternalRepresentationsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const; + //=== VK_KHR_map_memory2 === + + VULKAN_HPP_NODISCARD void * mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo ) const; + + void unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo ) const VULKAN_HPP_NOEXCEPT; + //=== VK_EXT_swapchain_maintenance1 === void releaseSwapchainImagesEXT( const VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT & releaseInfo ) const; @@ -17888,6 +17902,27 @@ namespace VULKAN_HPP_NAMESPACE return internalRepresentations; } + //=== VK_KHR_map_memory2 === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * Device::mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory2KHR && "Function <vkMapMemory2KHR> requires <VK_KHR_map_memory2>" ); + + void * pData; + VkResult result = + getDispatcher()->vkMapMemory2KHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryMapInfoKHR *>( &memoryMapInfo ), &pData ); + resultCheck( static_cast<VULKAN_HPP_NAMESPACE::Result>( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory2KHR" ); + + return pData; + } + + VULKAN_HPP_INLINE void Device::unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory2KHR && "Function <vkUnmapMemory2KHR> requires <VK_KHR_map_memory2>" ); + + getDispatcher()->vkUnmapMemory2KHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryUnmapInfoKHR *>( &memoryUnmapInfo ) ); + } + //=== VK_EXT_swapchain_maintenance1 === VULKAN_HPP_INLINE void Device::releaseSwapchainImagesEXT( const VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT & releaseInfo ) const diff --git a/include/vulkan/vulkan_static_assertions.hpp b/include/vulkan/vulkan_static_assertions.hpp index 49e3e1c..e413388 100644 --- a/include/vulkan/vulkan_static_assertions.hpp +++ b/include/vulkan/vulkan_static_assertions.hpp @@ -4488,6 +4488,18 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::Pipeline VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>::value, "PipelineExecutableInternalRepresentationKHR is not nothrow_move_constructible!" ); +//=== VK_KHR_map_memory2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR ) == sizeof( VkMemoryMapInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR>::value, + "MemoryMapInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR ) == sizeof( VkMemoryUnmapInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout<VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR>::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible<VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR>::value, + "MemoryUnmapInfoKHR is not nothrow_move_constructible!" ); + //=== VK_EXT_shader_atomic_float2 === VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT ) == diff --git a/include/vulkan/vulkan_structs.hpp b/include/vulkan/vulkan_structs.hpp index 9319f6b..7c4c7b1 100644 --- a/include/vulkan/vulkan_structs.hpp +++ b/include/vulkan/vulkan_structs.hpp @@ -46042,6 +46042,133 @@ namespace VULKAN_HPP_NAMESPACE using Type = MemoryHostPointerPropertiesEXT; }; + struct MemoryMapInfoKHR + { + using NativeType = VkMemoryMapInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryMapInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryMapInfoKHR( VULKAN_HPP_NAMESPACE::MemoryMapFlags flags_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, + VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , flags( flags_ ) + , memory( memory_ ) + , offset( offset_ ) + , size( size_ ) + { + } + + VULKAN_HPP_CONSTEXPR MemoryMapInfoKHR( MemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryMapInfoKHR( VkMemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryMapInfoKHR( *reinterpret_cast<MemoryMapInfoKHR const *>( &rhs ) ) {} + + MemoryMapInfoKHR & operator=( MemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryMapInfoKHR & operator=( VkMemoryMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::MemoryMapFlags flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfoKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkMemoryMapInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkMemoryMapInfoKHR *>( this ); + } + + operator VkMemoryMapInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkMemoryMapInfoKHR *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::MemoryMapFlags const &, + VULKAN_HPP_NAMESPACE::DeviceMemory const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &, + VULKAN_HPP_NAMESPACE::DeviceSize const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, memory, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryMapInfoKHR const & ) const = default; +#else + bool operator==( MemoryMapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) && + ( size == rhs.size ); +# endif + } + + bool operator!=( MemoryMapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryMapInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::MemoryMapFlags flags = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; + VULKAN_HPP_NAMESPACE::DeviceSize size = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eMemoryMapInfoKHR> + { + using Type = MemoryMapInfoKHR; + }; + struct MemoryOpaqueCaptureAddressAllocateInfo { using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo; @@ -46459,6 +46586,112 @@ namespace VULKAN_HPP_NAMESPACE uint32_t heapIndex = {}; }; + struct MemoryUnmapInfoKHR + { + using NativeType = VkMemoryUnmapInfoKHR; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryUnmapInfoKHR; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryUnmapInfoKHR( VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR flags_ = {}, + VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , flags( flags_ ) + , memory( memory_ ) + { + } + + VULKAN_HPP_CONSTEXPR MemoryUnmapInfoKHR( MemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryUnmapInfoKHR( VkMemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryUnmapInfoKHR( *reinterpret_cast<MemoryUnmapInfoKHR const *>( &rhs ) ) {} + + MemoryUnmapInfoKHR & operator=( MemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + MemoryUnmapInfoKHR & operator=( VkMemoryUnmapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR const *>( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkMemoryUnmapInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<const VkMemoryUnmapInfoKHR *>( this ); + } + + operator VkMemoryUnmapInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast<VkMemoryUnmapInfoKHR *>( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, + const void * const &, + VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR const &, + VULKAN_HPP_NAMESPACE::DeviceMemory const &> +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, memory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryUnmapInfoKHR const & ) const = default; +#else + bool operator==( MemoryUnmapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( MemoryUnmapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryUnmapInfoKHR; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::MemoryUnmapFlagsKHR flags = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; + }; + + template <> + struct CppType<StructureType, StructureType::eMemoryUnmapInfoKHR> + { + using Type = MemoryUnmapInfoKHR; + }; + #if defined( VK_USE_PLATFORM_WIN32_KHR ) struct MemoryWin32HandlePropertiesKHR { diff --git a/include/vulkan/vulkan_to_string.hpp b/include/vulkan/vulkan_to_string.hpp index 2239c7b..d2408bd 100644 --- a/include/vulkan/vulkan_to_string.hpp +++ b/include/vulkan/vulkan_to_string.hpp @@ -2691,6 +2691,13 @@ namespace VULKAN_HPP_NAMESPACE return "{}"; } + //=== VK_KHR_map_memory2 === + + VULKAN_HPP_INLINE std::string to_string( MemoryUnmapFlagsKHR ) + { + return "{}"; + } + //=== VK_EXT_surface_maintenance1 === VULKAN_HPP_INLINE std::string to_string( PresentScalingFlagsEXT value ) @@ -3840,6 +3847,8 @@ namespace VULKAN_HPP_NAMESPACE case StructureType::ePipelineExecutableInfoKHR: return "PipelineExecutableInfoKHR"; case StructureType::ePipelineExecutableStatisticKHR: return "PipelineExecutableStatisticKHR"; case StructureType::ePipelineExecutableInternalRepresentationKHR: return "PipelineExecutableInternalRepresentationKHR"; + case StructureType::eMemoryMapInfoKHR: return "MemoryMapInfoKHR"; + case StructureType::eMemoryUnmapInfoKHR: return "MemoryUnmapInfoKHR"; case StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT: return "PhysicalDeviceShaderAtomicFloat2FeaturesEXT"; case StructureType::eSurfacePresentModeEXT: return "SurfacePresentModeEXT"; case StructureType::eSurfacePresentScalingCapabilitiesEXT: return "SurfacePresentScalingCapabilitiesEXT"; @@ -7611,6 +7620,13 @@ namespace VULKAN_HPP_NAMESPACE } } + //=== VK_KHR_map_memory2 === + + VULKAN_HPP_INLINE std::string to_string( MemoryUnmapFlagBitsKHR ) + { + return "(void)"; + } + //=== VK_EXT_surface_maintenance1 === VULKAN_HPP_INLINE std::string to_string( PresentScalingFlagBitsEXT value ) diff --git a/registry/validusage.json b/registry/validusage.json index f17850b..24bdf5c 100644 --- a/registry/validusage.json +++ b/registry/validusage.json @@ -1,9 +1,9 @@ { "version info": { "schema version": 2, - "api version": "1.3.243", - "comment": "from git branch: github-main commit: 84ccde6b1b92820feee54c8b7577387b2cf1ce17", - "date": "2023-03-12 07:16:49Z" + "api version": "1.3.244", + "comment": "from git branch: github-main commit: 7beccb60daac498d700a09763945719c31510ab6", + "date": "2023-03-18 03:03:49Z" }, "validation": { "vkGetInstanceProcAddr": { @@ -11701,20 +11701,28 @@ "VkComputePipelineCreateInfo": { "core": [ { - "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697", + "vuid": "VUID-VkComputePipelineCreateInfo-flags-07984", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>" }, { - "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698", + "vuid": "VUID-VkComputePipelineCreateInfo-flags-07985", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" }, { - "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + "vuid": "VUID-VkComputePipelineCreateInfo-flags-07986", + "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { - "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1" + "vuid": "VUID-VkComputePipelineCreateInfo-layout-07987", + "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" + }, + { + "vuid": "VUID-VkComputePipelineCreateInfo-layout-07988", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage" + }, + { + "vuid": "VUID-VkComputePipelineCreateInfo-layout-07989", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type" }, { "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701", @@ -11725,10 +11733,6 @@ "text": " The shader code for the entry point identified by <code>stage</code> and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" }, { - "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703", - "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with the layout of the compute shader specified in <code>stage</code>" - }, - { "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687", "text": " The number of resources in <code>layout</code> accessible to the compute shader stage <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>" }, @@ -11761,6 +11765,18 @@ "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" } ], + "(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + { + "vuid": "VUID-VkComputePipelineCreateInfo-layout-07990", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not enum:VK_DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type" + } + ], + "!(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + { + "vuid": "VUID-VkComputePipelineCreateInfo-layout-07991", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count" + } + ], "(VK_KHR_pipeline_library)": [ { "vuid": "VUID-VkComputePipelineCreateInfo-flags-03364", @@ -12221,20 +12237,28 @@ "VkGraphicsPipelineCreateInfo": { "core": [ { - "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722", + "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07984", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>" }, { - "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723", + "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07985", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" }, { - "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07986", + "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + }, + { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07987", + "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" + }, + { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07988", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage" }, { - "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1" + "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07989", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type" }, { "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729", @@ -12345,10 +12369,6 @@ "text": " If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-pre-rasterization\">pre-rasterization shader state</a>, the <a href=\"#features-depthBiasClamp\"><code>depthBiasClamp</code></a> feature is not enabled, no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code>, and the <code>depthBiasEnable</code> member of <code>pRasterizationState</code> is <code>VK_TRUE</code>, the <code>depthBiasClamp</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>0.0</code>" }, { - "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756", - "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" - }, - { "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758", "text": " If the pipeline is being created with <a href=\"#pipelines-graphics-subsets-fragment-output\">fragment output interface state</a>, <code>rasterizationSamples</code> is not dynamic, and <code>subpass</code> does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>" }, @@ -12405,6 +12425,18 @@ "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" } ], + "(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07990", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not enum:VK_DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type" + } + ], + "!(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + { + "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-07991", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count" + } + ], "!(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [ { "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727", @@ -13845,28 +13877,32 @@ "VkRayTracingPipelineCreateInfoNV": { "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [ { - "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07984", + "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" }, { - "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422", + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07985", "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" }, { - "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07986", + "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1 or <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" }, { - "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>" + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07987", + "text": " If a push constant block is declared in a shader, a push constant range in <code>layout</code> <strong class=\"purple\">must</strong> match both the shader stage and range" }, { - "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426", - "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07988", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the shader stage" }, { - "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427", - "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07989", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type" + }, + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426", + "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" }, { "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428", @@ -13925,6 +13961,18 @@ "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" } ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07990", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader, and the descriptor type is not enum:VK_DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor type" + } + ], + "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [ + { + "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-07991", + "text": " If a <a href=\"#interfaces-resources\">resource variables</a> is declared in a shader as an array, a descriptor slot in <code>layout</code> <strong class=\"purple\">must</strong> match the descriptor count" + } + ], "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_NV_device_generated_commands)": [ { "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904", @@ -13999,30 +14047,10 @@ "VkRayTracingPipelineCreateInfoKHR": { "(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [ { - "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" - }, - { - "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" - }, - { - "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" - }, - { - "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424", - "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>" - }, - { "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426", "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" }, { - "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427", - "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" - }, - { "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428", "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>" }, @@ -16748,6 +16776,68 @@ } ] }, + "vkMapMemory2KHR": { + "(VK_KHR_map_memory2)": [ + { + "vuid": "VUID-vkMapMemory2KHR-device-parameter", + "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" + }, + { + "vuid": "VUID-vkMapMemory2KHR-pMemoryMapInfo-parameter", + "text": " <code>pMemoryMapInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryMapInfoKHR\">VkMemoryMapInfoKHR</a> structure" + }, + { + "vuid": "VUID-vkMapMemory2KHR-ppData-parameter", + "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value" + } + ] + }, + "VkMemoryMapInfoKHR": { + "(VK_KHR_map_memory2)": [ + { + "vuid": "VUID-VkMemoryMapInfoKHR-memory-07958", + "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-offset-07959", + "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-size-07960", + "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-size-07961", + "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-memory-07962", + "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-sType-sType", + "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-pNext-pNext", + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-flags-zerobitmask", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" + }, + { + "vuid": "VUID-VkMemoryMapInfoKHR-memory-parameter", + "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" + } + ], + "(VK_KHR_map_memory2)+(VK_KHR_device_group)": [ + { + "vuid": "VUID-VkMemoryMapInfoKHR-memory-07963", + "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances" + } + ] + }, "vkFlushMappedMemoryRanges": { "core": [ { @@ -16840,6 +16930,42 @@ } ] }, + "vkUnmapMemory2KHR": { + "(VK_KHR_map_memory2)": [ + { + "vuid": "VUID-vkUnmapMemory2KHR-device-parameter", + "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" + }, + { + "vuid": "VUID-vkUnmapMemory2KHR-pMemoryUnmapInfo-parameter", + "text": " <code>pMemoryUnmapInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryUnmapInfoKHR\">VkMemoryUnmapInfoKHR</a> structure" + } + ] + }, + "VkMemoryUnmapInfoKHR": { + "(VK_KHR_map_memory2)": [ + { + "vuid": "VUID-VkMemoryUnmapInfoKHR-memory-07964", + "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped" + }, + { + "vuid": "VUID-VkMemoryUnmapInfoKHR-sType-sType", + "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR</code>" + }, + { + "vuid": "VUID-VkMemoryUnmapInfoKHR-pNext-pNext", + "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" + }, + { + "vuid": "VUID-VkMemoryUnmapInfoKHR-flags-zerobitmask", + "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" + }, + { + "vuid": "VUID-VkMemoryUnmapInfoKHR-memory-parameter", + "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" + } + ] + }, "vkGetDeviceMemoryCommitment": { "core": [ { @@ -29305,20 +29431,20 @@ "text": " For each element of <code>pRegions</code>, if the sum of <code>dstOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>dstSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>" }, { - "vuid": "VUID-vkCmdCopyImage-pRegions-07924", + "vuid": "VUID-vkCmdCopyImage-srcSubresource-07967", "text": " The pname:srcSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-vkCmdCopyImage-imageSubresource-07925", - "text": " The <span class=\"eq\">pname:srcSubresource.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" + "vuid": "VUID-vkCmdCopyImage-srcSubresource-07968", + "text": " The <span class=\"eq\">pname:srcSubresource.baseArrayLayer + pname:srcSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-vkCmdCopyImage-pRegions-07924", + "vuid": "VUID-vkCmdCopyImage-dstSubresource-07967", "text": " The pname:dstSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { - "vuid": "VUID-vkCmdCopyImage-imageSubresource-07925", - "text": " The <span class=\"eq\">pname:dstSubresource.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" + "vuid": "VUID-vkCmdCopyImage-dstSubresource-07968", + "text": " The <span class=\"eq\">pname:dstSubresource.baseArrayLayer + pname:dstSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter", @@ -29441,11 +29567,11 @@ "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be <a href=\"#formats-size-compatibility\">size-compatible</a>" }, { - "vuid": "VUID-vkCmdCopyImage-None-07922", + "vuid": "VUID-vkCmdCopyImage-srcImage-07965", "text": " If pname:srcImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyImage-None-07922", + "vuid": "VUID-vkCmdCopyImage-dstImage-07965", "text": " If pname:dstImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" } ], @@ -29487,11 +29613,11 @@ "text": " If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyImage-None-07923", + "vuid": "VUID-vkCmdCopyImage-srcImage-07966", "text": " If pname:srcImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyImage-None-07923", + "vuid": "VUID-vkCmdCopyImage-dstImage-07966", "text": " If pname:dstImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" } ], @@ -29539,11 +29665,11 @@ ], "(VK_EXT_fragment_density_map)": [ { - "vuid": "VUID-vkCmdCopyImage-flags-07926", + "vuid": "VUID-vkCmdCopyImage-srcImage-07969", "text": " pname:srcImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" }, { - "vuid": "VUID-vkCmdCopyImage-flags-07926", + "vuid": "VUID-vkCmdCopyImage-dstImage-07969", "text": " pname:dstImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ] @@ -29799,20 +29925,20 @@ "text": " For each element of <code>pRegions</code>, if the sum of <code>dstOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>dstSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of <code>dstImage</code>" }, { - "vuid": "VUID-VkCopyImageInfo2-pRegions-07924", + "vuid": "VUID-VkCopyImageInfo2-srcSubresource-07967", "text": " The pname:srcSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-VkCopyImageInfo2-imageSubresource-07925", - "text": " The <span class=\"eq\">pname:srcSubresource.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" + "vuid": "VUID-VkCopyImageInfo2-srcSubresource-07968", + "text": " The <span class=\"eq\">pname:srcSubresource.baseArrayLayer + pname:srcSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-VkCopyImageInfo2-pRegions-07924", + "vuid": "VUID-VkCopyImageInfo2-dstSubresource-07967", "text": " The pname:dstSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { - "vuid": "VUID-VkCopyImageInfo2-imageSubresource-07925", - "text": " The <span class=\"eq\">pname:dstSubresource.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" + "vuid": "VUID-VkCopyImageInfo2-dstSubresource-07968", + "text": " The <span class=\"eq\">pname:dstSubresource.baseArrayLayer + pname:dstSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { "vuid": "VUID-VkCopyImageInfo2-sType-sType", @@ -29923,11 +30049,11 @@ "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be <a href=\"#formats-size-compatibility\">size-compatible</a>" }, { - "vuid": "VUID-VkCopyImageInfo2-None-07922", + "vuid": "VUID-VkCopyImageInfo2-srcImage-07965", "text": " If pname:srcImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-VkCopyImageInfo2-None-07922", + "vuid": "VUID-VkCopyImageInfo2-dstImage-07965", "text": " If pname:dstImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" } ], @@ -29969,11 +30095,11 @@ "text": " If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" }, { - "vuid": "VUID-VkCopyImageInfo2-None-07923", + "vuid": "VUID-VkCopyImageInfo2-srcImage-07966", "text": " If pname:srcImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-VkCopyImageInfo2-None-07923", + "vuid": "VUID-VkCopyImageInfo2-dstImage-07966", "text": " If pname:dstImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" } ], @@ -30021,11 +30147,11 @@ ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [ { - "vuid": "VUID-VkCopyImageInfo2-flags-07926", + "vuid": "VUID-VkCopyImageInfo2-srcImage-07969", "text": " pname:srcImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" }, { - "vuid": "VUID-VkCopyImageInfo2-flags-07926", + "vuid": "VUID-VkCopyImageInfo2-dstImage-07969", "text": " pname:dstImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ] @@ -30089,136 +30215,136 @@ "vkCmdCopyBufferToImage": { "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-vkCmdCopyBufferToImage-None-07922", - "text": " If {imageparam} is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07965", + "text": " If pname:dstImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-00193", - "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07974", + "text": " If pname:dstImage does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" } ], "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-vkCmdCopyBufferToImage-None-07923", - "text": " If {imageparam} is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07966", + "text": " If pname:dstImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07740", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07981", + "text": " If pname:dstImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07741", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07982", + "text": " If pname:dstImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01558", - "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07975", + "text": " If pname:dstImage does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01559", - "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07976", + "text": " If pname:dstImage has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" } ], "core": [ { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07924", - "text": " The {imagesubresource}.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07967", + "text": " The pname:imageSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07925", - "text": " The <span class=\"eq\">{imagesubresource}.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07968", + "text": " The <span class=\"eq\">pname:imageSubresource.baseArrayLayer + pname:imageSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07927", - "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified {imagesubresource} of {imageparam}" + "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07970", + "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified pname:imageSubresource of pname:dstImage" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07928", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified {imagesubresource} of {imageparam}" + "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07971", + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified pname:imageSubresource of pname:dstImage" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07929", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified {imagesubresource} of {imageparam}" + "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07972", + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified pname:imageSubresource of pname:dstImage" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-None-07930", - "text": " {imageparam} <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07973", + "text": " pname:dstImage <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-07737", - "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of {regionsparam} <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of pname:pRegions <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-07738", - "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of {regionsparam} <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" + "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of pname:pRegions <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-07739", - "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of {regionsparam}, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" + "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of pname:pRegions, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00199", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07979", + "text": " If pname:dstImage is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00200", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of pname:dstImage" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00201", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07980", + "text": " If pname:dstImage is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-bufferRowLength-00203", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204", - "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07274", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07275", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07276", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00207", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00208", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00209", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-00211", - "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in pname:dstImage" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07983", + "text": " If pname:dstImage is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07277", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of pname:dstImage <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07273", - "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07977", + "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { - "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-04053", - "text": " If {imageparam} has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07978", + "text": " If pname:dstImage has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171", @@ -30291,8 +30417,8 @@ ], "(VK_EXT_fragment_density_map)": [ { - "vuid": "VUID-vkCmdCopyBufferToImage-flags-07926", - "text": " {imageparam} <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" + "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-07969", + "text": " pname:dstImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ], "(VK_VERSION_1_1)": [ @@ -30343,132 +30469,132 @@ "vkCmdCopyImageToBuffer": { "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-vkCmdCopyImageToBuffer-None-07922", - "text": " If {imageparam} is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07965", + "text": " If pname:srcImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-00193", - "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07974", + "text": " If pname:srcImage does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" } ], "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-vkCmdCopyImageToBuffer-None-07923", - "text": " If {imageparam} is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07966", + "text": " If pname:srcImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07740", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07981", + "text": " If pname:srcImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07741", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07982", + "text": " If pname:srcImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01558", - "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07975", + "text": " If pname:srcImage does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01559", - "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07976", + "text": " If pname:srcImage has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" } ], "core": [ { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07924", - "text": " The {imagesubresource}.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07967", + "text": " The pname:imageSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07925", - "text": " The <span class=\"eq\">{imagesubresource}.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07968", + "text": " The <span class=\"eq\">pname:imageSubresource.baseArrayLayer + pname:imageSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07927", - "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified {imagesubresource} of {imageparam}" + "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07970", + "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be contained within the specified pname:imageSubresource of pname:srcImage" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07928", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified {imagesubresource} of {imageparam}" + "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07971", + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified pname:imageSubresource of pname:srcImage" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07929", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified {imagesubresource} of {imageparam}" + "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07972", + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified pname:imageSubresource of pname:srcImage" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-None-07930", - "text": " {imageparam} <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07973", + "text": " pname:srcImage <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-07746", - "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of {regionsparam} <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of pname:pRegions <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-07747", - "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of {regionsparam} <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" + "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of pname:pRegions <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00199", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07979", + "text": " If pname:srcImage is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00200", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of pname:srcImage" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00201", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07980", + "text": " If pname:srcImage is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204", - "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07274", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07275", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07276", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00207", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00208", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00209", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-00211", - "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in pname:srcImage" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07983", + "text": " If pname:srcImage is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07277", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of pname:srcImage <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07273", - "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07977", + "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { - "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-04053", - "text": " If {imageparam} has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07978", + "text": " If pname:srcImage has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183", @@ -30541,8 +30667,8 @@ ], "(VK_EXT_fragment_density_map)": [ { - "vuid": "VUID-vkCmdCopyImageToBuffer-flags-07926", - "text": " {imageparam} <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" + "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-07969", + "text": " pname:srcImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ], "(VK_VERSION_1_1)": [ @@ -30628,15 +30754,15 @@ "(VK_VERSION_1_3,VK_KHR_copy_commands2)": [ { "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-07737", - "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of {regionsparam} <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of pname:pCopyBufferToImageInfo->pRegions <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage2-imageOffset-07738", - "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of {regionsparam} <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" + "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of pname:pCopyBufferToImageInfo->pRegions <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" }, { "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-07739", - "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of {regionsparam}, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" + "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of pname:pCopyBufferToImageInfo->pRegions, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" }, { "vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter", @@ -30719,80 +30845,80 @@ "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07924", - "text": " The {imagesubresource}.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-07967", + "text": " The pname:imageSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-07925", - "text": " The <span class=\"eq\">{imagesubresource}.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-07968", + "text": " The <span class=\"eq\">pname:imageSubresource.baseArrayLayer + pname:imageSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:dstImage was created" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-None-07930", - "text": " {imageparam} <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07973", + "text": " pname:dstImage <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-srcImage-00199", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07979", + "text": " If pname:dstImage is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-00200", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of pname:dstImage" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-srcImage-00201", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07980", + "text": " If pname:dstImage is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-bufferRowLength-00203", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-bufferImageHeight-00204", - "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07274", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07275", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07276", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-imageExtent-00207", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-imageExtent-00208", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-imageExtent-00209", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-aspectMask-00211", - "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in pname:dstImage" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-baseArrayLayer-00213", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07983", + "text": " If pname:dstImage is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07277", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of pname:dstImage <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07273", - "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07977", + "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:dstImage" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-srcImage-04053", - "text": " If {imageparam} has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07978", + "text": " If pname:dstImage has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-06223", @@ -30867,40 +30993,40 @@ ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-VkCopyBufferToImageInfo2-None-07922", - "text": " If {imageparam} is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07965", + "text": " If pname:dstImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-bufferOffset-00193", - "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07974", + "text": " If pname:dstImage does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" } ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-VkCopyBufferToImageInfo2-None-07923", - "text": " If {imageparam} is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07966", + "text": " If pname:dstImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07740", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07981", + "text": " If pname:dstImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07741", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07982", + "text": " If pname:dstImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-bufferOffset-01558", - "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07975", + "text": " If pname:dstImage does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" }, { - "vuid": "VUID-VkCopyBufferToImageInfo2-bufferOffset-01559", - "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07976", + "text": " If pname:dstImage has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" } ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [ { - "vuid": "VUID-VkCopyBufferToImageInfo2-flags-07926", - "text": " {imageparam} <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" + "vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-07969", + "text": " pname:dstImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ] }, @@ -30922,11 +31048,11 @@ "(VK_VERSION_1_3,VK_KHR_copy_commands2)": [ { "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-07746", - "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of {regionsparam} <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of pname:pCopyImageToBufferInfo->pRegions <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer2-imageOffset-07747", - "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of {regionsparam} <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" + "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of pname:pCopyImageToBufferInfo->pRegions <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" }, { "vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-parameter", @@ -31009,80 +31135,80 @@ "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07924", - "text": " The {imagesubresource}.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-07967", + "text": " The pname:imageSubresource.mipLevel member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-07925", - "text": " The <span class=\"eq\">{imagesubresource}.baseArrayLayer + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when {imageparam} was created" + "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-07968", + "text": " The <span class=\"eq\">pname:imageSubresource.baseArrayLayer + pname:imageSubresource.layerCount</span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when pname:srcImage was created" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-None-07930", - "text": " {imageparam} <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07973", + "text": " pname:srcImage <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00199", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07979", + "text": " If pname:srcImage is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-00200", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of pname:srcImage" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00201", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07980", + "text": " If pname:srcImage is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-bufferRowLength-00203", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-bufferImageHeight-00204", - "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07274", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07275", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07276", - "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-imageExtent-00207", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.x</code> and <code>extent.width</code> does not equal the width of the subresource specified by <code>srcSubresource</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent width</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-imageExtent-00208", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.y</code> and <code>extent.height</code> does not equal the height of the subresource specified by <code>srcSubresource</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent height</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-imageExtent-00209", - "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "text": " For each element of <code>pRegions</code>, if the sum of <code>imageOffset.z</code> and <code>extent.depth</code> does not equal the depth of the subresource specified by <code>srcSubresource</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block extent depth</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-aspectMask-00211", - "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" + "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in pname:srcImage" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-baseArrayLayer-00213", - "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07983", + "text": " If pname:srcImage is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07277", - "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of {imageparam} <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" + "text": " For each element of <code>pRegions</code>, <code>bufferRowLength</code> divided by the <a href=\"#formats-compatibility-classes\">texel block extent width</a> and then multiplied by the texel block size of pname:srcImage <strong class=\"purple\">must</strong> be less than or equal to <span class=\"eq\">2<sup>31</sup>-1</span>" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07273", - "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of {imageparam}" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07977", + "text": " For each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the <a href=\"#formats-compatibility-classes\">texel block size</a> of the <a href=\"#VkFormat\">VkFormat</a> of pname:srcImage" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-04053", - "text": " If {imageparam} has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07978", + "text": " If pname:srcImage has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" }, { "vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-00197", @@ -31145,40 +31271,40 @@ ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-VkCopyImageToBufferInfo2-None-07922", - "text": " If {imageparam} is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07965", + "text": " If pname:srcImage is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-bufferOffset-00193", - "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07974", + "text": " If pname:srcImage does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" } ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ { - "vuid": "VUID-VkCopyImageToBufferInfo2-None-07923", - "text": " If {imageparam} is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07966", + "text": " If pname:srcImage is non-sparse then the image or the specified <em>disjoint</em> plane <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07740", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07981", + "text": " If pname:srcImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07741", - "text": " If {imageparam} has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07982", + "text": " If pname:srcImage has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-bufferOffset-01558", - "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07975", + "text": " If pname:srcImage does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" }, { - "vuid": "VUID-VkCopyImageToBufferInfo2-bufferOffset-01559", - "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07976", + "text": " If pname:srcImage has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" } ], "(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [ { - "vuid": "VUID-VkCopyImageToBufferInfo2-flags-07926", - "text": " {imageparam} <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" + "vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-07969", + "text": " pname:srcImage <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" } ] }, @@ -31321,8 +31447,8 @@ "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" }, { - "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-None-07930", - "text": " {imageparam} <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" + "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImage-07973", + "text": " pname:dstImage <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" }, { "vuid": "VUID-vkCmdCopyMemoryToImageIndirectNV-dstImageLayout-07667", diff --git a/registry/vk.xml b/registry/vk.xml index d4d1138..5efa2c2 100644 --- a/registry/vk.xml +++ b/registry/vk.xml @@ -67,7 +67,7 @@ branch of the member gitlab server. <tag name="KHR" author="Khronos" contact="Tom Olson @tomolson"/> <tag name="KHX" author="Khronos" contact="Tom Olson @tomolson"/> <tag name="EXT" author="Multivendor" contact="Jon Leech @oddhack"/> - <tag name="MESA" author="Mesa open source project" contact="Chad Versace @chadversary, Daniel Stone @fooishbar, David Airlie @airlied, Faith Ekstrand @gfxstrand"/> + <tag name="MESA" author="Mesa open source project" contact="Lina Versace @versalinyaa, Daniel Stone @fooishbar, David Airlie @airlied, Faith Ekstrand @gfxstrand"/> <tag name="INTEL" author="Intel Corporation" contact="Slawek Grajewski @sgrajewski"/> <tag name="HUAWEI" author="Huawei Technologies Co. Ltd." contact="Pan Gao @PanGao-h, Juntao Li @Lawrenceleehw"/> <tag name="VALVE" author="Valve Corporation" contact="Pierre-Loup Griffais @plagman, Joshua Ashton @Joshua-Ashton, Hans-Kristian Arntzen @HansKristian-Work"/> @@ -173,7 +173,7 @@ branch of the member gitlab server. #define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type> <type api="vulkan" category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 243</type> +#define <name>VK_HEADER_VERSION</name> 244</type> <type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type> <type api="vulkansc" category="define">// Version of this file @@ -510,6 +510,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type requires="VkVideoEncodeH265CapabilityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CapabilityFlagsEXT</name>;</type> <type requires="VkVideoEncodeH265CtbSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CtbSizeFlagsEXT</name>;</type> <type requires="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265TransformBlockSizeFlagsEXT</name>;</type> + <type category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryUnmapFlagsKHR</name>;</type> <comment>Types which can be void pointers or class pointers, selected at compile time</comment> <type category="handle" objtypeenum="VK_OBJECT_TYPE_INSTANCE"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type> @@ -5259,8 +5260,8 @@ typedef void* <name>MTLSharedEvent_id</name>; <member optional="true"><type>void</type>* <name>pNext</name></member> <member limittype="max,pot"><type>uint32_t</type> <name>maxWorkGroupCount</name>[3]</member> <member limittype="max,pot"><type>uint32_t</type> <name>maxWorkGroupSize</name>[3]</member> - <member limittype="max"><type>uint32_t</type> <name>maxOutputClusterCount</name></member> - <member limittype="exact"><type>VkDeviceSize</type> <name>indirectBufferOffsetAlignment</name></member> + <member limittype="max"><type>uint32_t</type> <name>maxOutputClusterCount</name></member> + <member limittype="exact"><type>VkDeviceSize</type> <name>indirectBufferOffsetAlignment</name></member> </type> <type category="struct" name="VkMemoryOpaqueCaptureAddressAllocateInfo" structextends="VkMemoryAllocateInfo"> <member values="VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"><type>VkStructureType</type> <name>sType</name></member> @@ -8075,6 +8076,20 @@ typedef void* <name>MTLSharedEvent_id</name>; <member optional="true" noautovalidity="true">const <type>void</type>* <name>pNext</name></member> <member><type>void</type>* <name>pQueriedLowLatencyData</name></member> </type> + <type category="struct" name="VkMemoryMapInfoKHR"> + <member values="VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkMemoryMapFlags</type> <name>flags</name></member> + <member externsync="true"><type>VkDeviceMemory</type> <name>memory</name></member> + <member><type>VkDeviceSize</type> <name>offset</name></member> + <member><type>VkDeviceSize</type> <name>size</name></member> + </type> + <type category="struct" name="VkMemoryUnmapInfoKHR"> + <member values="VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR"><type>VkStructureType</type> <name>sType</name></member> + <member optional="true">const <type>void</type>* <name>pNext</name></member> + <member optional="true"><type>VkMemoryUnmapFlagsKHR</type> <name>flags</name></member> + <member externsync="true"><type>VkDeviceMemory</type> <name>memory</name></member> + </type> </types> @@ -9239,7 +9254,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value="0x10004" name="VK_VENDOR_ID_CODEPLAY" comment="Codeplay Software Ltd. vendor ID"/> <enum value="0x10005" name="VK_VENDOR_ID_MESA" comment="Mesa vendor ID"/> <enum value="0x10006" name="VK_VENDOR_ID_POCL" comment="PoCL vendor ID"/> - <enum value="0x10007" name="VK_VENDOR_ID_MOBILEYE" comment="Mobileye vendor ID"/> + <enum value="0x10007" name="VK_VENDOR_ID_MOBILEYE" comment="Mobileye vendor ID"/> <unused start="0x10008" comment="This is the next unused available Khronos vendor ID"/> </enums> <enums name="VkDriverId" type="enum"> @@ -13932,6 +13947,17 @@ typedef void* <name>MTLSharedEvent_id</name>; <param><type>VkDevice</type> <name>device</name></param> <param>const <type>VkReleaseSwapchainImagesInfoEXT</type>* <name>pReleaseInfo</name></param> </command> + <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_MEMORY_MAP_FAILED"> + <proto><type>VkResult</type> <name>vkMapMemory2KHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkMemoryMapInfoKHR</type>* <name>pMemoryMapInfo</name></param> + <param optional="false,true"><type>void</type>** <name>ppData</name></param> + </command> + <command successcodes="VK_SUCCESS"> + <proto><type>VkResult</type> <name>vkUnmapMemory2KHR</name></proto> + <param><type>VkDevice</type> <name>device</name></param> + <param>const <type>VkMemoryUnmapInfoKHR</type>* <name>pMemoryUnmapInfo</name></param> + </command> </commands> <feature api="vulkan,vulkansc" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions"> @@ -17151,14 +17177,14 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value=""VK_MVK_moltenvk"" name="VK_MVK_MOLTENVK_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" depends="VK_KHR_external_memory_fd" author="EXT" contact="Chad Versace @chadversary" supported="vulkan,vulkansc"> + <extension name="VK_EXT_external_memory_dma_buf" number="126" type="device" depends="VK_KHR_external_memory_fd" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc"> <require> <enum value="1" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"/> <enum value=""VK_EXT_external_memory_dma_buf"" name="VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"/> <enum bitpos="9" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"/> </require> </extension> - <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" depends="VK_KHR_external_memory,VK_VERSION_1_1" contact="Chad Versace @chadversary" supported="vulkan,vulkansc"> + <extension name="VK_EXT_queue_family_foreign" number="127" type="device" author="EXT" depends="VK_KHR_external_memory,VK_VERSION_1_1" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc"> <require> <enum value="1" name="VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"/> <enum value=""VK_EXT_queue_family_foreign"" name="VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME"/> @@ -17742,7 +17768,7 @@ typedef void* <name>MTLSharedEvent_id</name>; <type name="VkBindImageMemoryInfoKHR"/> </require> </extension> - <extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" depends="((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2)" author="EXT" contact="Chad Versace @chadversary" supported="vulkan,vulkansc"> + <extension name="VK_EXT_image_drm_format_modifier" number="159" type="device" depends="((VK_KHR_bind_memory2+VK_KHR_get_physical_device_properties2+VK_KHR_sampler_ycbcr_conversion),VK_VERSION_1_1)+(VK_KHR_image_format_list,VK_VERSION_1_2)" author="EXT" contact="Lina Versace @versalinyaa" supported="vulkan,vulkansc"> <require> <enum value="2" name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION"/> <enum value=""VK_EXT_image_drm_format_modifier"" name="VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME"/> @@ -19105,10 +19131,17 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="22" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_22_BIT_EXT"/> </require> </extension> - <extension name="VK_INTEL_extension_272" number="272" type="device" author="INTEL" contact="Faith Ekstrand @gfxstrand" supported="disabled"> + <extension name="VK_KHR_map_memory2" number="272" type="device" author="KHR" contact="Faith Ekstrand @gfxstrand" supported="vulkan"> <require> - <enum value="0" name="VK_INTEL_EXTENSION_272_SPEC_VERSION"/> - <enum value=""VK_INTEL_extension_272"" name="VK_INTEL_EXTENSION_272_EXTENSION_NAME"/> + <enum value="1" name="VK_KHR_MAP_MEMORY_2_SPEC_VERSION"/> + <enum value=""VK_KHR_map_memory2"" name="VK_KHR_MAP_MEMORY_2_EXTENSION_NAME"/> + <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR"/> + <enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR"/> + <type name="VkMemoryMapInfoKHR"/> + <type name="VkMemoryUnmapInfoKHR"/> + <type name="VkMemoryUnmapFlagsKHR"/> + <command name="vkMapMemory2KHR"/> + <command name="vkUnmapMemory2KHR"/> </require> </extension> <extension name="VK_INTEL_extension_273" number="273" type="device" author="INTEL" contact="Faith Ekstrand @gfxstrand" supported="disabled"> @@ -21196,13 +21229,13 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum value=""VK_ARM_extension_453"" name="VK_ARM_EXTENSION_453_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_GOOGLE_extension_454" number="454" author="GOOGLE" contact="Chad Versace @chadversary" supported="disabled"> + <extension name="VK_GOOGLE_extension_454" number="454" author="GOOGLE" contact="Lina Versace @versalinyaa" supported="disabled"> <require> <enum value="0" name="VK_GOOGLE_EXTENSION_454_SPEC_VERSION"/> <enum value=""VK_GOOGLE_extension_454"" name="VK_GOOGLE_EXTENSION_454_EXTENSION_NAME"/> </require> </extension> - <extension name="VK_GOOGLE_extension_455" number="455" author="GOOGLE" contact="Chad Versace @chadversary" supported="disabled"> + <extension name="VK_GOOGLE_extension_455" number="455" author="GOOGLE" contact="Lina Versace @versalinyaa" supported="disabled"> <require> <enum value="0" name="VK_GOOGLE_EXTENSION_455_SPEC_VERSION"/> <enum value=""VK_GOOGLE_extension_455"" name="VK_GOOGLE_EXTENSION_455_EXTENSION_NAME"/> @@ -21813,6 +21846,36 @@ typedef void* <name>MTLSharedEvent_id</name>; <enum bitpos="6" extends="VkDescriptorSetLayoutCreateFlagBits" name="VK_DESCRIPTOR_SET_LAYOUT_CREATE_RESERVED_6_BIT_EXT"/> </require> </extension> + <extension name="VK_MESA_extension_518" number="518" author="MESA" contact="Dave Airlie @airlied" type="device" supported="disabled"> + <require> + <enum value="0" name="VK_MESA_EXTENSION_518_SPEC_VERSION"/> + <enum value=""VK_MESA_extension_518"" name="VK_MESA_EXTENSION_518_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_519" number="519" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_EXTENSION_519_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_519"" name="VK_QCOM_EXTENSION_519_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_520" number="520" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_EXTENSION_520_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_520"" name="VK_QCOM_EXTENSION_520_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_521" number="521" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_EXTENSION_521_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_521"" name="VK_QCOM_EXTENSION_521_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_QCOM_extension_522" number="522" type="device" author="QCOM" contact="Jeff Leger @jackohound" supported="disabled"> + <require> + <enum value="0" name="VK_QCOM_EXTENSION_522_SPEC_VERSION"/> + <enum value=""VK_QCOM_extension_522"" name="VK_QCOM_EXTENSION_522_EXTENSION_NAME"/> + </require> + </extension> </extensions> <formats> <format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8"> |