diff --git a/README.md b/README.md index ad15ef1..d2d74ed 100644 --- a/README.md +++ b/README.md @@ -23,10 +23,8 @@ They can also use headers from, or packaged from, this repository. In most cases, developers should only need the headers, not the scripts and other material in this repository. -In particular if you are packaging the headers for inclusion in Linux -distributions or similar uses, we advise that you do not include the -scripts, and direct potential users of the scripts to their canonical -sources in the [Vulkan Specification +If you need to run the scripts, please use them from their canonical source +in the [Vulkan Specification repository](https://github.com/KhronosGroup/Vulkan-Docs). ## Contributing diff --git a/include/vulkan/vulkan.cppm b/include/vulkan/vulkan.cppm index 9a2cad5..a8dfe78 100644 --- a/include/vulkan/vulkan.cppm +++ b/include/vulkan/vulkan.cppm @@ -784,6 +784,10 @@ export namespace VULKAN_HPP_NAMESPACE using VULKAN_HPP_NAMESPACE::DisplacementMicromapFormatNV; #endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_ARM_scheduling_controls === + using VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagBitsARM; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM; + //=== VK_NV_memory_decompression === using VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagBitsNV; using VULKAN_HPP_NAMESPACE::MemoryDecompressionMethodFlagsNV; @@ -2260,6 +2264,15 @@ export namespace VULKAN_HPP_NAMESPACE using VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV; using VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + using VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV; + using VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV; + using VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_NV_low_latency === using VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV; @@ -2517,6 +2530,11 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_ARM_shader_core_properties === using VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM; + //=== VK_ARM_scheduling_controls === + using VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM; + using VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM; + //=== VK_EXT_image_sliced_view_of_3d === using VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT; using VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT; @@ -2816,6 +2834,12 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_NV_device_generated_commands === using VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + using VULKAN_HPP_NAMESPACE::CudaFunctionNV; + using VULKAN_HPP_NAMESPACE::CudaModuleNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === using VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA; @@ -2874,6 +2898,9 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_KHR_swapchain === using VULKAN_HPP_NAMESPACE::UniqueSwapchainKHR; + //=== VK_KHR_display === + using VULKAN_HPP_NAMESPACE::UniqueDisplayKHR; + //=== VK_EXT_debug_report === using VULKAN_HPP_NAMESPACE::UniqueDebugReportCallbackEXT; @@ -2897,12 +2924,21 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_NV_ray_tracing === using VULKAN_HPP_NAMESPACE::UniqueAccelerationStructureNV; + //=== VK_INTEL_performance_query === + using VULKAN_HPP_NAMESPACE::UniquePerformanceConfigurationINTEL; + //=== VK_KHR_deferred_host_operations === using VULKAN_HPP_NAMESPACE::UniqueDeferredOperationKHR; //=== VK_NV_device_generated_commands === using VULKAN_HPP_NAMESPACE::UniqueIndirectCommandsLayoutNV; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + using VULKAN_HPP_NAMESPACE::UniqueCudaFunctionNV; + using VULKAN_HPP_NAMESPACE::UniqueCudaModuleNV; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === using VULKAN_HPP_NAMESPACE::UniqueBufferCollectionFUCHSIA; @@ -3001,6 +3037,12 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_NV_device_generated_commands === using VULKAN_HPP_NAMESPACE::SharedIndirectCommandsLayoutNV; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + using VULKAN_HPP_NAMESPACE::SharedCudaFunctionNV; + using VULKAN_HPP_NAMESPACE::SharedCudaModuleNV; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === using VULKAN_HPP_NAMESPACE::SharedBufferCollectionFUCHSIA; @@ -3175,6 +3217,12 @@ export namespace VULKAN_HPP_NAMESPACE //=== VK_NV_device_generated_commands === using VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + using VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV; + using VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === using VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA; diff --git a/include/vulkan/vulkan.hpp b/include/vulkan/vulkan.hpp index 37f7227..058c304 100644 --- a/include/vulkan/vulkan.hpp +++ b/include/vulkan/vulkan.hpp @@ -55,7 +55,7 @@ extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE h # include #endif -static_assert( VK_HEADER_VERSION == 268, "Wrong VK_HEADER_VERSION!" ); +static_assert( VK_HEADER_VERSION == 269, "Wrong VK_HEADER_VERSION!" ); // includes through some other header // this results in major(x) being resolved to gnu_dev_major(x) @@ -94,6 +94,20 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_CONSTEXPR ArrayWrapper1D( std::array const & data ) VULKAN_HPP_NOEXCEPT : std::array( data ) {} + template ::value, int>::type = 0> + VULKAN_HPP_CONSTEXPR_14 ArrayWrapper1D( std::string const & data ) VULKAN_HPP_NOEXCEPT + { + copy( data.data(), data.length() ); + } + +#if 17 <= VULKAN_HPP_CPP_VERSION + template ::value, int>::type = 0> + VULKAN_HPP_CONSTEXPR_14 ArrayWrapper1D( std::string_view data ) VULKAN_HPP_NOEXCEPT + { + copy( data.data(), data.length() ); + } +#endif + #if ( VK_USE_64_BIT_PTR_DEFINES == 0 ) // on 32 bit compiles, needs overloads on index type int to resolve ambiguities VULKAN_HPP_CONSTEXPR T const & operator[]( int index ) const VULKAN_HPP_NOEXCEPT @@ -120,14 +134,14 @@ namespace VULKAN_HPP_NAMESPACE template ::value, int>::type = 0> operator std::string() const { - return std::string( this->data() ); + return std::string( this->data(), N ); } #if 17 <= VULKAN_HPP_CPP_VERSION template ::value, int>::type = 0> operator std::string_view() const { - return std::string_view( this->data() ); + return std::string_view( this->data(), N ); } #endif @@ -174,6 +188,20 @@ namespace VULKAN_HPP_NAMESPACE { return *static_cast const *>( this ) != *static_cast const *>( &rhs ); } + + private: + VULKAN_HPP_CONSTEXPR_14 void copy( char const * data, size_t len ) VULKAN_HPP_NOEXCEPT + { + size_t n = std::min( N, len ); + for ( size_t i = 0; i < n; ++i ) + { + ( *this )[i] = data[i]; + } + for ( size_t i = n; i < N; ++i ) + { + ( *this )[i] = 0; + } + } }; // specialization of relational operators between std::string and arrays of chars @@ -4749,6 +4777,46 @@ namespace VULKAN_HPP_NAMESPACE } # endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + VkResult vkCreateCudaModuleNV( VkDevice device, + const VkCudaModuleCreateInfoNV * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkCudaModuleNV * pModule ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCudaModuleNV( device, pCreateInfo, pAllocator, pModule ); + } + + VkResult vkGetCudaModuleCacheNV( VkDevice device, VkCudaModuleNV module, size_t * pCacheSize, void * pCacheData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetCudaModuleCacheNV( device, module, pCacheSize, pCacheData ); + } + + VkResult vkCreateCudaFunctionNV( VkDevice device, + const VkCudaFunctionCreateInfoNV * pCreateInfo, + const VkAllocationCallbacks * pAllocator, + VkCudaFunctionNV * pFunction ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCudaFunctionNV( device, pCreateInfo, pAllocator, pFunction ); + } + + void vkDestroyCudaModuleNV( VkDevice device, VkCudaModuleNV module, const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCudaModuleNV( device, module, pAllocator ); + } + + void vkDestroyCudaFunctionNV( VkDevice device, VkCudaFunctionNV function, const VkAllocationCallbacks * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCudaFunctionNV( device, function, pAllocator ); + } + + void vkCmdCudaLaunchKernelNV( VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV * pLaunchInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCudaLaunchKernelNV( commandBuffer, pLaunchInfo ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === @@ -10965,6 +11033,34 @@ namespace VULKAN_HPP_NAMESPACE }; }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_NV_low_latency === template <> struct StructExtends @@ -12275,6 +12371,48 @@ namespace VULKAN_HPP_NAMESPACE }; }; + //=== VK_ARM_scheduling_controls === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + //=== VK_EXT_image_sliced_view_of_3d === template <> struct StructExtends @@ -14436,6 +14574,23 @@ namespace VULKAN_HPP_NAMESPACE PFN_dummy vkCmdEncodeVideoKHR_placeholder = 0; #endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV = 0; + PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV = 0; + PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV = 0; + PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV = 0; + PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV = 0; + PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV = 0; +#else + PFN_dummy vkCreateCudaModuleNV_placeholder = 0; + PFN_dummy vkGetCudaModuleCacheNV_placeholder = 0; + PFN_dummy vkCreateCudaFunctionNV_placeholder = 0; + PFN_dummy vkDestroyCudaModuleNV_placeholder = 0; + PFN_dummy vkDestroyCudaFunctionNV_placeholder = 0; + PFN_dummy vkCmdCudaLaunchKernelNV_placeholder = 0; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0; @@ -15760,6 +15915,16 @@ namespace VULKAN_HPP_NAMESPACE vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetInstanceProcAddr( instance, "vkCmdEncodeVideoKHR" ) ); #endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetInstanceProcAddr( instance, "vkCreateCudaModuleNV" ) ); + vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetInstanceProcAddr( instance, "vkGetCudaModuleCacheNV" ) ); + vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetInstanceProcAddr( instance, "vkCreateCudaFunctionNV" ) ); + vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetInstanceProcAddr( instance, "vkDestroyCudaModuleNV" ) ); + vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetInstanceProcAddr( instance, "vkDestroyCudaFunctionNV" ) ); + vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetInstanceProcAddr( instance, "vkCmdCudaLaunchKernelNV" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetInstanceProcAddr( instance, "vkExportMetalObjectsEXT" ) ); @@ -16801,6 +16966,16 @@ namespace VULKAN_HPP_NAMESPACE vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) ); #endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetDeviceProcAddr( device, "vkCreateCudaModuleNV" ) ); + vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetDeviceProcAddr( device, "vkGetCudaModuleCacheNV" ) ); + vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetDeviceProcAddr( device, "vkCreateCudaFunctionNV" ) ); + vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetDeviceProcAddr( device, "vkDestroyCudaModuleNV" ) ); + vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetDeviceProcAddr( device, "vkDestroyCudaFunctionNV" ) ); + vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) ); diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h index 77bdf09..904ac6f 100644 --- a/include/vulkan/vulkan_core.h +++ b/include/vulkan/vulkan_core.h @@ -69,7 +69,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 268 +#define VK_HEADER_VERSION 269 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) @@ -902,6 +902,11 @@ typedef enum VkStructureType { #endif VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, + VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = 1000307000, + VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = 1000307001, + VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = 1000307002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = 1000307003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = 1000307004, VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000, VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000, VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001, @@ -1035,6 +1040,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000, VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, @@ -1420,6 +1428,8 @@ typedef enum VkObjectType { VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, + VK_OBJECT_TYPE_CUDA_MODULE_NV = 1000307000, + VK_OBJECT_TYPE_CUDA_FUNCTION_NV = 1000307001, VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000, VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000, @@ -10768,6 +10778,8 @@ typedef enum VkDebugReportObjectTypeEXT { VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001, VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV = 1000307000, + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV = 1000307001, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000, VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, @@ -14917,6 +14929,98 @@ typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { #define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops" +// VK_NV_cuda_kernel_launch is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_cuda_kernel_launch 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaModuleNV) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaFunctionNV) +#define VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION 2 +#define VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME "VK_NV_cuda_kernel_launch" +typedef struct VkCudaModuleCreateInfoNV { + VkStructureType sType; + const void* pNext; + size_t dataSize; + const void* pData; +} VkCudaModuleCreateInfoNV; + +typedef struct VkCudaFunctionCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkCudaModuleNV module; + const char* pName; +} VkCudaFunctionCreateInfoNV; + +typedef struct VkCudaLaunchInfoNV { + VkStructureType sType; + const void* pNext; + VkCudaFunctionNV function; + uint32_t gridDimX; + uint32_t gridDimY; + uint32_t gridDimZ; + uint32_t blockDimX; + uint32_t blockDimY; + uint32_t blockDimZ; + uint32_t sharedMemBytes; + size_t paramCount; + const void* const * pParams; + size_t extraCount; + const void* const * pExtras; +} VkCudaLaunchInfoNV; + +typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cudaKernelLaunchFeatures; +} VkPhysicalDeviceCudaKernelLaunchFeaturesNV; + +typedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t computeCapabilityMinor; + uint32_t computeCapabilityMajor; +} VkPhysicalDeviceCudaKernelLaunchPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaModuleNV)(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule); +typedef VkResult (VKAPI_PTR *PFN_vkGetCudaModuleCacheNV)(VkDevice device, VkCudaModuleNV module, size_t* pCacheSize, void* pCacheData); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaFunctionNV)(VkDevice device, const VkCudaFunctionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaFunctionNV* pFunction); +typedef void (VKAPI_PTR *PFN_vkDestroyCudaModuleNV)(VkDevice device, VkCudaModuleNV module, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDestroyCudaFunctionNV)(VkDevice device, VkCudaFunctionNV function, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdCudaLaunchKernelNV)(VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaModuleNV( + VkDevice device, + const VkCudaModuleCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCudaModuleNV* pModule); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetCudaModuleCacheNV( + VkDevice device, + VkCudaModuleNV module, + size_t* pCacheSize, + void* pCacheData); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaFunctionNV( + VkDevice device, + const VkCudaFunctionCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCudaFunctionNV* pFunction); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCudaModuleNV( + VkDevice device, + VkCudaModuleNV module, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCudaFunctionNV( + VkDevice device, + VkCudaFunctionNV function, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdCudaLaunchKernelNV( + VkCommandBuffer commandBuffer, + const VkCudaLaunchInfoNV* pLaunchInfo); +#endif + + // VK_NV_low_latency is a preprocessor guard. Do not pass it to API calls. #define VK_NV_low_latency 1 #define VK_NV_LOW_LATENCY_SPEC_VERSION 1 @@ -16475,6 +16579,36 @@ typedef struct VkPhysicalDeviceShaderCorePropertiesARM { +// VK_ARM_scheduling_controls is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_scheduling_controls 1 +#define VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION 1 +#define VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME "VK_ARM_scheduling_controls" +typedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagsARM; + +typedef enum VkPhysicalDeviceSchedulingControlsFlagBitsARM { + VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM = 0x00000001, + VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FLAG_BITS_MAX_ENUM_ARM = 0x7FFFFFFF +} VkPhysicalDeviceSchedulingControlsFlagBitsARM; +typedef struct VkDeviceQueueShaderCoreControlCreateInfoARM { + VkStructureType sType; + void* pNext; + uint32_t shaderCoreCount; +} VkDeviceQueueShaderCoreControlCreateInfoARM; + +typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 schedulingControls; +} VkPhysicalDeviceSchedulingControlsFeaturesARM; + +typedef struct VkPhysicalDeviceSchedulingControlsPropertiesARM { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags; +} VkPhysicalDeviceSchedulingControlsPropertiesARM; + + + // VK_EXT_image_sliced_view_of_3d is a preprocessor guard. Do not pass it to API calls. #define VK_EXT_image_sliced_view_of_3d 1 #define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION 1 diff --git a/include/vulkan/vulkan_enums.hpp b/include/vulkan/vulkan_enums.hpp index d243cd4..d928695 100644 --- a/include/vulkan/vulkan_enums.hpp +++ b/include/vulkan/vulkan_enums.hpp @@ -1089,7 +1089,14 @@ namespace VULKAN_HPP_NAMESPACE #endif /*VK_ENABLE_BETA_EXTENSIONS*/ ePhysicalDeviceDiagnosticsConfigFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, eDeviceDiagnosticsConfigCreateInfoNV = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, - eQueryLowLatencySupportNV = VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCudaModuleCreateInfoNV = VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV, + eCudaFunctionCreateInfoNV = VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV, + eCudaLaunchInfoNV = VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV, + ePhysicalDeviceCudaKernelLaunchFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV, + ePhysicalDeviceCudaKernelLaunchPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eQueryLowLatencySupportNV = VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV, #if defined( VK_USE_PLATFORM_METAL_EXT ) eExportMetalObjectCreateInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT, eExportMetalObjectsInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT, @@ -1260,6 +1267,9 @@ namespace VULKAN_HPP_NAMESPACE eDeviceBufferMemoryRequirementsKHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR, eDeviceImageMemoryRequirementsKHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR, ePhysicalDeviceShaderCorePropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM, + eDeviceQueueShaderCoreControlCreateInfoARM = VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM, + ePhysicalDeviceSchedulingControlsFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM, + ePhysicalDeviceSchedulingControlsPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM, ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT, eImageViewSlicedCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT, ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE, @@ -1430,6 +1440,10 @@ namespace VULKAN_HPP_NAMESPACE eDeferredOperationKHR = VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR, eIndirectCommandsLayoutNV = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, ePrivateDataSlotEXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCudaModuleNV = VK_OBJECT_TYPE_CUDA_MODULE_NV, + eCudaFunctionNV = VK_OBJECT_TYPE_CUDA_FUNCTION_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ #if defined( VK_USE_PLATFORM_FUCHSIA ) eBufferCollectionFUCHSIA = VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA, #endif /*VK_USE_PLATFORM_FUCHSIA*/ @@ -4660,6 +4674,10 @@ namespace VULKAN_HPP_NAMESPACE eAccelerationStructureKHR = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT, eAccelerationStructureNV = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCudaModuleNV = VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV, + eCudaFunctionNV = VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ #if defined( VK_USE_PLATFORM_FUCHSIA ) eBufferCollectionFUCHSIA = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT #endif /*VK_USE_PLATFORM_FUCHSIA*/ @@ -6753,6 +6771,22 @@ namespace VULKAN_HPP_NAMESPACE }; #endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_ARM_scheduling_controls === + + enum class PhysicalDeviceSchedulingControlsFlagBitsARM : VkPhysicalDeviceSchedulingControlsFlagsARM + { + eShaderCoreCount = VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM + }; + + using PhysicalDeviceSchedulingControlsFlagsARM = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PhysicalDeviceSchedulingControlsFlagsARM allFlags = PhysicalDeviceSchedulingControlsFlagBitsARM::eShaderCoreCount; + }; + //=== VK_NV_memory_decompression === enum class MemoryDecompressionMethodFlagBitsNV : VkMemoryDecompressionMethodFlagsNV @@ -7289,6 +7323,12 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_NV_device_generated_commands === case VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + case VULKAN_HPP_NAMESPACE::ObjectType::eCudaModuleNV: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + case VULKAN_HPP_NAMESPACE::ObjectType::eCudaFunctionNV: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === case VULKAN_HPP_NAMESPACE::ObjectType::eBufferCollectionFUCHSIA: return VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA; diff --git a/include/vulkan/vulkan_extension_inspection.hpp b/include/vulkan/vulkan_extension_inspection.hpp index d010468..f3fef6d 100644 --- a/include/vulkan/vulkan_extension_inspection.hpp +++ b/include/vulkan/vulkan_extension_inspection.hpp @@ -297,7 +297,10 @@ namespace VULKAN_HPP_NAMESPACE "VK_KHR_video_encode_queue", #endif /*VK_ENABLE_BETA_EXTENSIONS*/ "VK_NV_device_diagnostics_config", -"VK_QCOM_render_pass_store_ops", +"VK_QCOM_render_pass_store_ops", +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +"VK_NV_cuda_kernel_launch", +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ "VK_NV_low_latency", #if defined( VK_USE_PLATFORM_METAL_EXT ) "VK_EXT_metal_objects", @@ -364,6 +367,7 @@ namespace VULKAN_HPP_NAMESPACE "VK_EXT_pageable_device_local_memory", "VK_KHR_maintenance4", "VK_ARM_shader_core_properties", +"VK_ARM_scheduling_controls", "VK_EXT_image_sliced_view_of_3d", "VK_VALVE_descriptor_set_host_mapping", "VK_EXT_depth_clamp_zero_one", @@ -773,6 +777,7 @@ namespace VULKAN_HPP_NAMESPACE { "VK_EXT_pageable_device_local_memory", { { "VK_VERSION_1_0", { { "VK_EXT_memory_priority", } } } } }, { "VK_KHR_maintenance4", { { "VK_VERSION_1_1", { { } } } } }, { "VK_ARM_shader_core_properties", { { "VK_VERSION_1_1", { { } } } } }, +{ "VK_ARM_scheduling_controls", { { "VK_VERSION_1_0", { { "VK_ARM_shader_core_builtins", } } } } }, { "VK_EXT_image_sliced_view_of_3d", { { "VK_VERSION_1_0", { { "VK_KHR_maintenance1", "VK_KHR_get_physical_device_properties2", } } } } }, { "VK_VALVE_descriptor_set_host_mapping", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", } } } } }, { "VK_EXT_depth_clamp_zero_one", { { "VK_VERSION_1_0", { { "VK_KHR_get_physical_device_properties2", } } } } }, @@ -1480,7 +1485,11 @@ namespace VULKAN_HPP_NAMESPACE #if defined( VK_ENABLE_BETA_EXTENSIONS ) || ( extension == "VK_KHR_video_encode_queue" ) #endif /*VK_ENABLE_BETA_EXTENSIONS*/ - || ( extension == "VK_NV_device_diagnostics_config" ) || ( extension == "VK_QCOM_render_pass_store_ops" ) || ( extension == "VK_NV_low_latency" ) + || ( extension == "VK_NV_device_diagnostics_config" ) || ( extension == "VK_QCOM_render_pass_store_ops" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_NV_cuda_kernel_launch" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || ( extension == "VK_NV_low_latency" ) #if defined( VK_USE_PLATFORM_METAL_EXT ) || ( extension == "VK_EXT_metal_objects" ) #endif /*VK_USE_PLATFORM_METAL_EXT*/ @@ -1517,16 +1526,17 @@ namespace VULKAN_HPP_NAMESPACE #endif /*VK_ENABLE_BETA_EXTENSIONS*/ || ( extension == "VK_EXT_load_store_op_none" ) || ( extension == "VK_HUAWEI_cluster_culling_shader" ) || ( extension == "VK_EXT_border_color_swizzle" ) || ( extension == "VK_EXT_pageable_device_local_memory" ) || ( extension == "VK_KHR_maintenance4" ) || - ( extension == "VK_ARM_shader_core_properties" ) || ( extension == "VK_EXT_image_sliced_view_of_3d" ) || - ( extension == "VK_VALVE_descriptor_set_host_mapping" ) || ( extension == "VK_EXT_depth_clamp_zero_one" ) || - ( extension == "VK_EXT_non_seamless_cube_map" ) || ( extension == "VK_QCOM_fragment_density_map_offset" ) || - ( extension == "VK_NV_copy_memory_indirect" ) || ( extension == "VK_NV_memory_decompression" ) || - ( extension == "VK_NV_device_generated_commands_compute" ) || ( extension == "VK_NV_linear_color_attachment" ) || - ( extension == "VK_EXT_image_compression_control_swapchain" ) || ( extension == "VK_QCOM_image_processing" ) || - ( extension == "VK_EXT_nested_command_buffer" ) || ( extension == "VK_EXT_external_memory_acquire_unmodified" ) || - ( extension == "VK_EXT_extended_dynamic_state3" ) || ( extension == "VK_EXT_subpass_merge_feedback" ) || - ( extension == "VK_EXT_shader_module_identifier" ) || ( extension == "VK_EXT_rasterization_order_attachment_access" ) || - ( extension == "VK_NV_optical_flow" ) || ( extension == "VK_EXT_legacy_dithering" ) || ( extension == "VK_EXT_pipeline_protected_access" ) + ( extension == "VK_ARM_shader_core_properties" ) || ( extension == "VK_ARM_scheduling_controls" ) || + ( extension == "VK_EXT_image_sliced_view_of_3d" ) || ( extension == "VK_VALVE_descriptor_set_host_mapping" ) || + ( extension == "VK_EXT_depth_clamp_zero_one" ) || ( extension == "VK_EXT_non_seamless_cube_map" ) || + ( extension == "VK_QCOM_fragment_density_map_offset" ) || ( extension == "VK_NV_copy_memory_indirect" ) || + ( extension == "VK_NV_memory_decompression" ) || ( extension == "VK_NV_device_generated_commands_compute" ) || + ( extension == "VK_NV_linear_color_attachment" ) || ( extension == "VK_EXT_image_compression_control_swapchain" ) || + ( extension == "VK_QCOM_image_processing" ) || ( extension == "VK_EXT_nested_command_buffer" ) || + ( extension == "VK_EXT_external_memory_acquire_unmodified" ) || ( extension == "VK_EXT_extended_dynamic_state3" ) || + ( extension == "VK_EXT_subpass_merge_feedback" ) || ( extension == "VK_EXT_shader_module_identifier" ) || + ( extension == "VK_EXT_rasterization_order_attachment_access" ) || ( extension == "VK_NV_optical_flow" ) || + ( extension == "VK_EXT_legacy_dithering" ) || ( extension == "VK_EXT_pipeline_protected_access" ) #if defined( VK_USE_PLATFORM_ANDROID_KHR ) || ( extension == "VK_ANDROID_external_format_resolve" ) #endif /*VK_USE_PLATFORM_ANDROID_KHR*/ diff --git a/include/vulkan/vulkan_funcs.hpp b/include/vulkan/vulkan_funcs.hpp index 32715f8..ae420ff 100644 --- a/include/vulkan/vulkan_funcs.hpp +++ b/include/vulkan/vulkan_funcs.hpp @@ -19210,6 +19210,304 @@ namespace VULKAN_HPP_NAMESPACE # endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ #endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCudaModuleNV( const VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CudaModuleNV * pModule, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCudaModuleNV( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pModule ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCudaModuleNV( const VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + VULKAN_HPP_NAMESPACE::CudaModuleNV module; + VkResult result = + d.vkCreateCudaModuleNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( static_cast( allocator ) ), + reinterpret_cast( &module ) ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaModuleNV" ); + + return createResultValueType( static_cast( result ), module ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createCudaModuleNVUnique( const VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + VULKAN_HPP_NAMESPACE::CudaModuleNV module; + VkResult result = + d.vkCreateCudaModuleNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( static_cast( allocator ) ), + reinterpret_cast( &module ) ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaModuleNVUnique" ); + + return createResultValueType( + static_cast( result ), + UniqueHandle( module, ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getCudaModuleCacheNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + size_t * pCacheSize, + void * pCacheData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), pCacheSize, pCacheData ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getCudaModuleCacheNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + std::vector cacheData; + size_t cacheSize; + VkResult result; + do + { + result = d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, nullptr ); + if ( ( result == VK_SUCCESS ) && cacheSize ) + { + cacheData.resize( cacheSize ); + result = d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, reinterpret_cast( cacheData.data() ) ); + } + } while ( result == VK_INCOMPLETE ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::getCudaModuleCacheNV" ); + VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() ); + if ( cacheSize < cacheData.size() ) + { + cacheData.resize( cacheSize ); + } + return createResultValueType( static_cast( result ), cacheData ); + } + + template ::value, int>::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getCudaModuleCacheNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + std::vector cacheData( uint8_tAllocator ); + size_t cacheSize; + VkResult result; + do + { + result = d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, nullptr ); + if ( ( result == VK_SUCCESS ) && cacheSize ) + { + cacheData.resize( cacheSize ); + result = d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, reinterpret_cast( cacheData.data() ) ); + } + } while ( result == VK_INCOMPLETE ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::getCudaModuleCacheNV" ); + VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() ); + if ( cacheSize < cacheData.size() ) + { + cacheData.resize( cacheSize ); + } + return createResultValueType( static_cast( result ), cacheData ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCudaFunctionNV( const VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CudaFunctionNV * pFunction, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCudaFunctionNV( m_device, + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFunction ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCudaFunctionNV( const VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + VULKAN_HPP_NAMESPACE::CudaFunctionNV function; + VkResult result = + d.vkCreateCudaFunctionNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( static_cast( allocator ) ), + reinterpret_cast( &function ) ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaFunctionNV" ); + + return createResultValueType( static_cast( result ), function ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createCudaFunctionNVUnique( const VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + VULKAN_HPP_NAMESPACE::CudaFunctionNV function; + VkResult result = + d.vkCreateCudaFunctionNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( static_cast( allocator ) ), + reinterpret_cast( &function ) ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaFunctionNVUnique" ); + + return createResultValueType( + static_cast( result ), + UniqueHandle( function, ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_INLINE void Device::destroyCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaModuleNV( m_device, static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + d.vkDestroyCudaModuleNV( m_device, + static_cast( module ), + reinterpret_cast( static_cast( allocator ) ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaModuleNV( m_device, static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + d.vkDestroyCudaModuleNV( m_device, + static_cast( module ), + reinterpret_cast( static_cast( allocator ) ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_INLINE void Device::destroyCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaFunctionNV( m_device, static_cast( function ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroyCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + d.vkDestroyCudaFunctionNV( m_device, + static_cast( function ), + reinterpret_cast( static_cast( allocator ) ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaFunctionNV( m_device, static_cast( function ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + Optional allocator, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + d.vkDestroyCudaFunctionNV( m_device, + static_cast( function ), + reinterpret_cast( static_cast( allocator ) ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV * pLaunchInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCudaLaunchKernelNV( m_commandBuffer, reinterpret_cast( pLaunchInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + + d.vkCmdCudaLaunchKernelNV( m_commandBuffer, reinterpret_cast( &launchInfo ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === diff --git a/include/vulkan/vulkan_handles.hpp b/include/vulkan/vulkan_handles.hpp index 3325616..526d99c 100644 --- a/include/vulkan/vulkan_handles.hpp +++ b/include/vulkan/vulkan_handles.hpp @@ -1261,6 +1261,15 @@ namespace VULKAN_HPP_NAMESPACE struct PhysicalDeviceDiagnosticsConfigFeaturesNV; struct DeviceDiagnosticsConfigCreateInfoNV; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + struct CudaModuleCreateInfoNV; + struct CudaFunctionCreateInfoNV; + struct CudaLaunchInfoNV; + struct PhysicalDeviceCudaKernelLaunchFeaturesNV; + struct PhysicalDeviceCudaKernelLaunchPropertiesNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_NV_low_latency === struct QueryLowLatencySupportNV; @@ -1518,6 +1527,11 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_ARM_shader_core_properties === struct PhysicalDeviceShaderCorePropertiesARM; + //=== VK_ARM_scheduling_controls === + struct DeviceQueueShaderCoreControlCreateInfoARM; + struct PhysicalDeviceSchedulingControlsFeaturesARM; + struct PhysicalDeviceSchedulingControlsPropertiesARM; + //=== VK_EXT_image_sliced_view_of_3d === struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT; struct ImageViewSlicedCreateInfoEXT; @@ -1815,6 +1829,12 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_NV_device_generated_commands === class IndirectCommandsLayoutNV; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + class CudaModuleNV; + class CudaFunctionNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === class BufferCollectionFUCHSIA; @@ -2041,6 +2061,15 @@ namespace VULKAN_HPP_NAMESPACE }; using UniqueSwapchainKHR = UniqueHandle; + //=== VK_KHR_display === + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueDisplayKHR = UniqueHandle; + //=== VK_EXT_debug_report === template class UniqueHandleTraits @@ -2118,6 +2147,15 @@ namespace VULKAN_HPP_NAMESPACE }; using UniqueAccelerationStructureNV = UniqueHandle; + //=== VK_INTEL_performance_query === + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniquePerformanceConfigurationINTEL = UniqueHandle; + //=== VK_KHR_deferred_host_operations === template class UniqueHandleTraits @@ -2136,6 +2174,24 @@ namespace VULKAN_HPP_NAMESPACE }; using UniqueIndirectCommandsLayoutNV = UniqueHandle; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueCudaModuleNV = UniqueHandle; + template + class UniqueHandleTraits + { + public: + using deleter = ObjectDestroy; + }; + using UniqueCudaFunctionNV = UniqueHandle; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === template @@ -5684,6 +5740,19 @@ namespace VULKAN_HPP_NAMESPACE void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; # endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + template + void cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV * pLaunchInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ #endif /*VK_ENABLE_BETA_EXTENSIONS*/ //=== VK_KHR_synchronization2 === @@ -7098,6 +7167,168 @@ namespace VULKAN_HPP_NAMESPACE static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; }; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaFunctionNV + { + public: + using CType = VkCudaFunctionNV; + using NativeType = VkCudaFunctionNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCudaFunctionNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR CudaFunctionNV() = default; + VULKAN_HPP_CONSTEXPR CudaFunctionNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT CudaFunctionNV( VkCudaFunctionNV cudaFunctionNV ) VULKAN_HPP_NOEXCEPT : m_cudaFunctionNV( cudaFunctionNV ) {} + +# if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + CudaFunctionNV & operator=( VkCudaFunctionNV cudaFunctionNV ) VULKAN_HPP_NOEXCEPT + { + m_cudaFunctionNV = cudaFunctionNV; + return *this; + } +# endif + + CudaFunctionNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cudaFunctionNV = {}; + return *this; + } + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CudaFunctionNV const & ) const = default; +# else + bool operator==( CudaFunctionNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV == rhs.m_cudaFunctionNV; + } + + bool operator!=( CudaFunctionNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV != rhs.m_cudaFunctionNV; + } + + bool operator<( CudaFunctionNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV < rhs.m_cudaFunctionNV; + } +# endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCudaFunctionNV() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV == VK_NULL_HANDLE; + } + + private: + VkCudaFunctionNV m_cudaFunctionNV = {}; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CudaFunctionNV; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaModuleNV + { + public: + using CType = VkCudaModuleNV; + using NativeType = VkCudaModuleNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCudaModuleNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + VULKAN_HPP_CONSTEXPR CudaModuleNV() = default; + VULKAN_HPP_CONSTEXPR CudaModuleNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + VULKAN_HPP_TYPESAFE_EXPLICIT CudaModuleNV( VkCudaModuleNV cudaModuleNV ) VULKAN_HPP_NOEXCEPT : m_cudaModuleNV( cudaModuleNV ) {} + +# if defined( VULKAN_HPP_TYPESAFE_CONVERSION ) + CudaModuleNV & operator=( VkCudaModuleNV cudaModuleNV ) VULKAN_HPP_NOEXCEPT + { + m_cudaModuleNV = cudaModuleNV; + return *this; + } +# endif + + CudaModuleNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cudaModuleNV = {}; + return *this; + } + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CudaModuleNV const & ) const = default; +# else + bool operator==( CudaModuleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV == rhs.m_cudaModuleNV; + } + + bool operator!=( CudaModuleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV != rhs.m_cudaModuleNV; + } + + bool operator<( CudaModuleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV < rhs.m_cudaModuleNV; + } +# endif + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCudaModuleNV() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV == VK_NULL_HANDLE; + } + + private: + VkCudaModuleNV m_cudaModuleNV = {}; + }; + + template <> + struct CppType + { + using Type = VULKAN_HPP_NAMESPACE::CudaModuleNV; + }; + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + class DescriptorPool { public: @@ -12379,6 +12610,111 @@ namespace VULKAN_HPP_NAMESPACE # endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ #endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + template + VULKAN_HPP_NODISCARD Result createCudaModuleNV( const VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CudaModuleNV * pModule, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCudaModuleNV( const VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCudaModuleNVUnique( const VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_NODISCARD Result getCudaModuleCacheNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + size_t * pCacheSize, + void * pCacheData, + 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>::type + getCudaModuleCacheNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename B1 = Uint8_tAllocator, + typename std::enable_if::value, int>::type = 0> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCudaModuleCacheNV( + VULKAN_HPP_NAMESPACE::CudaModuleNV module, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + VULKAN_HPP_NODISCARD Result createCudaFunctionNV( const VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV * pCreateInfo, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + VULKAN_HPP_NAMESPACE::CudaFunctionNV * pFunction, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCudaFunctionNV( const VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCudaFunctionNVUnique( const VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + void destroyCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + void destroy( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::CudaModuleNV module, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + void destroyCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroyCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + template + void destroy( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + template + void destroy( VULKAN_HPP_NAMESPACE::CudaFunctionNV function, + Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === diff --git a/include/vulkan/vulkan_hash.hpp b/include/vulkan/vulkan_hash.hpp index fa35d2e..eefe419 100644 --- a/include/vulkan/vulkan_hash.hpp +++ b/include/vulkan/vulkan_hash.hpp @@ -457,6 +457,28 @@ namespace std } }; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaModuleNV const & cudaModuleNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cudaModuleNV ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaFunctionNV const & cudaFunctionNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cudaFunctionNV ) ); + } + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === @@ -2732,6 +2754,67 @@ namespace std } }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & cudaFunctionCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cudaFunctionCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cudaFunctionCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cudaFunctionCreateInfoNV.module ); + for ( const char * p = cudaFunctionCreateInfoNV.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV const & cudaLaunchInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.function ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.gridDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.gridDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.gridDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.blockDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.blockDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.blockDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.sharedMemBytes ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.paramCount ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.pParams ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.extraCount ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.pExtras ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & cudaModuleCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.pData ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_WIN32_KHR ) template <> struct hash @@ -3901,6 +3984,20 @@ namespace std } }; + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM const & deviceQueueShaderCoreControlCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueShaderCoreControlCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueShaderCoreControlCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueShaderCoreControlCreateInfoARM.shaderCoreCount ); + return seed; + } + }; + template <> struct hash { @@ -7652,6 +7749,39 @@ namespace std } }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV const & physicalDeviceCudaKernelLaunchFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchFeaturesNV.cudaKernelLaunchFeatures ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV const & physicalDeviceCudaKernelLaunchPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.computeCapabilityMinor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.computeCapabilityMajor ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + template <> struct hash { @@ -10575,6 +10705,34 @@ namespace std } }; + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM const & physicalDeviceSchedulingControlsFeaturesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsFeaturesARM.schedulingControls ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM const & physicalDeviceSchedulingControlsPropertiesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsPropertiesARM.schedulingControlsFlags ); + return seed; + } + }; + template <> struct hash { diff --git a/include/vulkan/vulkan_raii.hpp b/include/vulkan/vulkan_raii.hpp index f217921..99616d0 100644 --- a/include/vulkan/vulkan_raii.hpp +++ b/include/vulkan/vulkan_raii.hpp @@ -1394,6 +1394,16 @@ namespace VULKAN_HPP_NAMESPACE vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) ); # endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetDeviceProcAddr( device, "vkCreateCudaModuleNV" ) ); + vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetDeviceProcAddr( device, "vkGetCudaModuleCacheNV" ) ); + vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetDeviceProcAddr( device, "vkCreateCudaFunctionNV" ) ); + vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetDeviceProcAddr( device, "vkDestroyCudaModuleNV" ) ); + vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetDeviceProcAddr( device, "vkDestroyCudaFunctionNV" ) ); + vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) ); @@ -2295,6 +2305,23 @@ namespace VULKAN_HPP_NAMESPACE PFN_dummy vkCmdEncodeVideoKHR_placeholder = 0; # endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV = 0; + PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV = 0; + PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV = 0; + PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV = 0; + PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV = 0; + PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV = 0; +# else + PFN_dummy vkCreateCudaModuleNV_placeholder = 0; + PFN_dummy vkGetCudaModuleCacheNV_placeholder = 0; + PFN_dummy vkCreateCudaFunctionNV_placeholder = 0; + PFN_dummy vkDestroyCudaModuleNV_placeholder = 0; + PFN_dummy vkDestroyCudaFunctionNV_placeholder = 0; + PFN_dummy vkCmdCudaLaunchKernelNV_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0; @@ -2612,6 +2639,12 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_NV_device_generated_commands === class IndirectCommandsLayoutNV; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + class CudaModuleNV; + class CudaFunctionNV; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === class BufferCollectionFUCHSIA; @@ -4184,6 +4217,18 @@ namespace VULKAN_HPP_NAMESPACE getEncodedVideoSessionParametersKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const; # endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV + createCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; + + VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV + createCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) const; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === @@ -5883,6 +5928,12 @@ namespace VULKAN_HPP_NAMESPACE void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT; # endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + void cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_KHR_synchronization2 === void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; @@ -6422,6 +6473,254 @@ namespace VULKAN_HPP_NAMESPACE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaFunctionNV + { + public: + using CType = VkCudaFunctionNV; + using CppType = vk::CudaFunctionNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCudaFunctionNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + CudaFunctionNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateCudaFunctionNV( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_function ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + detail::throwResultException( result, "vkCreateCudaFunctionNV" ); + } + } + + CudaFunctionNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkCudaFunctionNV function, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_function( function ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CudaFunctionNV( std::nullptr_t ) {} + + ~CudaFunctionNV() + { + clear(); + } + + CudaFunctionNV() = delete; + CudaFunctionNV( CudaFunctionNV const & ) = delete; + CudaFunctionNV( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_function( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_function, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + { + } + CudaFunctionNV & operator=( CudaFunctionNV const & ) = delete; + CudaFunctionNV & operator =( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_function, rhs.m_function ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CudaFunctionNV const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_function; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_function ) + { + getDispatcher()->vkDestroyCudaFunctionNV( + static_cast( m_device ), static_cast( m_function ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_function = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CudaFunctionNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_function, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_function, rhs.m_function ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CudaFunctionNV m_function = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaModuleNV + { + public: + using CType = VkCudaModuleNV; + using CppType = vk::CudaModuleNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCudaModuleNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = + VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; + + public: + CudaModuleNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + VULKAN_HPP_NAMESPACE::Result result = static_cast( + device.getDispatcher()->vkCreateCudaModuleNV( static_cast( *device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( m_allocator ), + reinterpret_cast( &m_module ) ) ); + if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) + { + detail::throwResultException( result, "vkCreateCudaModuleNV" ); + } + } + + CudaModuleNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, + VkCudaModuleNV module, + VULKAN_HPP_NAMESPACE::Optional allocator = nullptr ) + : m_device( *device ) + , m_module( module ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CudaModuleNV( std::nullptr_t ) {} + + ~CudaModuleNV() + { + clear(); + } + + CudaModuleNV() = delete; + CudaModuleNV( CudaModuleNV const & ) = delete; + CudaModuleNV( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) ) + , m_module( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_module, {} ) ) + , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) ) + { + } + CudaModuleNV & operator=( CudaModuleNV const & ) = delete; + CudaModuleNV & operator =( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_module, rhs.m_module ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CudaModuleNV const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_module; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_module ) + { + getDispatcher()->vkDestroyCudaModuleNV( + static_cast( m_device ), static_cast( m_module ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_module = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CudaModuleNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_module, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_module, rhs.m_module ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_NV_cuda_kernel_launch === + + VULKAN_HPP_NODISCARD std::vector getCache() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CudaModuleNV m_module = {}; + const VULKAN_HPP_NAMESPACE::AllocationCallbacks * m_allocator = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + class DebugReportCallbackEXT { public: @@ -18901,6 +19200,57 @@ namespace VULKAN_HPP_NAMESPACE } # endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV + Device::createCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV( *this, createInfo, allocator ); + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector CudaModuleNV::getCache() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetCudaModuleCacheNV && "Function requires " ); + + std::vector cacheData; + size_t cacheSize; + VkResult result; + do + { + result = getDispatcher()->vkGetCudaModuleCacheNV( static_cast( m_device ), static_cast( m_module ), &cacheSize, nullptr ); + if ( ( result == VK_SUCCESS ) && cacheSize ) + { + cacheData.resize( cacheSize ); + result = getDispatcher()->vkGetCudaModuleCacheNV( + static_cast( m_device ), static_cast( m_module ), &cacheSize, reinterpret_cast( cacheData.data() ) ); + } + } while ( result == VK_INCOMPLETE ); + resultCheck( static_cast( result ), VULKAN_HPP_NAMESPACE_STRING "::CudaModuleNV::getCache" ); + VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() ); + if ( cacheSize < cacheData.size() ) + { + cacheData.resize( cacheSize ); + } + return cacheData; + } + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV + Device::createCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & createInfo, + VULKAN_HPP_NAMESPACE::Optional allocator ) const + { + return VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV( *this, createInfo, allocator ); + } + + VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCudaLaunchKernelNV && "Function requires " ); + + getDispatcher()->vkCmdCudaLaunchKernelNV( static_cast( m_commandBuffer ), reinterpret_cast( &launchInfo ) ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_METAL_EXT ) //=== VK_EXT_metal_objects === diff --git a/include/vulkan/vulkan_shared.hpp b/include/vulkan/vulkan_shared.hpp index 7b1bb23..f6f7116 100644 --- a/include/vulkan/vulkan_shared.hpp +++ b/include/vulkan/vulkan_shared.hpp @@ -654,6 +654,16 @@ namespace VULKAN_HPP_NAMESPACE }; using SharedSwapchainKHR = SharedHandle; + //=== VK_KHR_display === + template <> + class SharedHandleTraits + { + public: + using DestructorType = PhysicalDevice; + using deleter = ObjectDestroyShared; + }; + using SharedDisplayKHR = SharedHandle; + //=== VK_EXT_debug_report === template <> class SharedHandleTraits @@ -740,6 +750,16 @@ namespace VULKAN_HPP_NAMESPACE }; using SharedAccelerationStructureNV = SharedHandle; + //=== VK_INTEL_performance_query === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = ObjectDestroyShared; + }; + using SharedPerformanceConfigurationINTEL = SharedHandle; + //=== VK_KHR_deferred_host_operations === template <> class SharedHandleTraits @@ -760,6 +780,26 @@ namespace VULKAN_HPP_NAMESPACE }; using SharedIndirectCommandsLayoutNV = SharedHandle; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = ObjectDestroyShared; + }; + using SharedCudaModuleNV = SharedHandle; + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = ObjectDestroyShared; + }; + using SharedCudaFunctionNV = SharedHandle; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + # if defined( VK_USE_PLATFORM_FUCHSIA ) //=== VK_FUCHSIA_buffer_collection === template <> @@ -940,20 +980,6 @@ namespace VULKAN_HPP_NAMESPACE //=== VK_KHR_display === - template <> - class SharedHandle : public SharedHandleBaseNoDestroy - { - friend SharedHandleBase; - - public: - SharedHandle() = default; - explicit SharedHandle( DisplayKHR handle, SharedPhysicalDevice parent ) noexcept - : SharedHandleBaseNoDestroy( handle, std::move( parent ) ) - { - } - }; - using SharedDisplayKHR = SharedHandle; - template <> class SharedHandle : public SharedHandleBaseNoDestroy { @@ -967,22 +993,6 @@ namespace VULKAN_HPP_NAMESPACE } }; using SharedDisplayModeKHR = SharedHandle; - - //=== VK_INTEL_performance_query === - - template <> - class SharedHandle : public SharedHandleBaseNoDestroy - { - friend SharedHandleBase; - - public: - SharedHandle() = default; - explicit SharedHandle( PerformanceConfigurationINTEL handle, SharedDevice parent ) noexcept - : SharedHandleBaseNoDestroy( handle, std::move( parent ) ) - { - } - }; - using SharedPerformanceConfigurationINTEL = SharedHandle; #endif // !VULKAN_HPP_NO_SMART_HANDLE } // namespace VULKAN_HPP_NAMESPACE #endif // VULKAN_SHARED_HPP diff --git a/include/vulkan/vulkan_static_assertions.hpp b/include/vulkan/vulkan_static_assertions.hpp index a42e54d..349f387 100644 --- a/include/vulkan/vulkan_static_assertions.hpp +++ b/include/vulkan/vulkan_static_assertions.hpp @@ -5122,6 +5122,48 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "DeviceDiagnosticsConfigCreateInfoNV is not nothrow_move_constructible!" ); +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +//=== VK_NV_cuda_kernel_launch === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaModuleNV ) == sizeof( VkCudaModuleNV ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "CudaModuleNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaFunctionNV ) == sizeof( VkCudaFunctionNV ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaFunctionNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV ) == sizeof( VkCudaModuleCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaModuleCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV ) == sizeof( VkCudaFunctionCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaFunctionCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV ) == sizeof( VkCudaLaunchInfoNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaLaunchInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV ) == sizeof( VkPhysicalDeviceCudaKernelLaunchFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCudaKernelLaunchFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV ) == sizeof( VkPhysicalDeviceCudaKernelLaunchPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCudaKernelLaunchPropertiesNV is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_NV_low_latency === VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV ) == sizeof( VkQueryLowLatencySupportNV ), @@ -6207,6 +6249,31 @@ VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "PhysicalDeviceShaderCorePropertiesARM is not nothrow_move_constructible!" ); +//=== VK_ARM_scheduling_controls === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM ) == sizeof( VkDeviceQueueShaderCoreControlCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueShaderCoreControlCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM ) == + sizeof( VkPhysicalDeviceSchedulingControlsFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSchedulingControlsFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM ) == + sizeof( VkPhysicalDeviceSchedulingControlsPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSchedulingControlsPropertiesARM is not nothrow_move_constructible!" ); + //=== VK_EXT_image_sliced_view_of_3d === VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT ) == diff --git a/include/vulkan/vulkan_structs.hpp b/include/vulkan/vulkan_structs.hpp index b7bf645..2efa7af 100644 --- a/include/vulkan/vulkan_structs.hpp +++ b/include/vulkan/vulkan_structs.hpp @@ -19736,6 +19736,505 @@ namespace VULKAN_HPP_NAMESPACE using Type = CuModuleCreateInfoNVX; }; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct CudaFunctionCreateInfoNV + { + using NativeType = VkCudaFunctionCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCudaFunctionCreateInfoNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CudaFunctionCreateInfoNV( VULKAN_HPP_NAMESPACE::CudaModuleNV module_ = {}, const char * pName_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , module( module_ ) + , pName( pName_ ) + { + } + + VULKAN_HPP_CONSTEXPR CudaFunctionCreateInfoNV( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CudaFunctionCreateInfoNV( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CudaFunctionCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + CudaFunctionCreateInfoNV & operator=( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CudaFunctionCreateInfoNV & operator=( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setModule( VULKAN_HPP_NAMESPACE::CudaModuleNV module_ ) VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkCudaFunctionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaFunctionCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, module, pName ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ); + } + + bool operator!=( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCudaFunctionCreateInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CudaModuleNV module = {}; + const char * pName = {}; + }; + + template <> + struct CppType + { + using Type = CudaFunctionCreateInfoNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct CudaLaunchInfoNV + { + using NativeType = VkCudaLaunchInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCudaLaunchInfoNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_ = {}, + uint32_t gridDimX_ = {}, + uint32_t gridDimY_ = {}, + uint32_t gridDimZ_ = {}, + uint32_t blockDimX_ = {}, + uint32_t blockDimY_ = {}, + uint32_t blockDimZ_ = {}, + uint32_t sharedMemBytes_ = {}, + size_t paramCount_ = {}, + const void * const * pParams_ = {}, + size_t extraCount_ = {}, + const void * const * pExtras_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , function( function_ ) + , gridDimX( gridDimX_ ) + , gridDimY( gridDimY_ ) + , gridDimZ( gridDimZ_ ) + , blockDimX( blockDimX_ ) + , blockDimY( blockDimY_ ) + , blockDimZ( blockDimZ_ ) + , sharedMemBytes( sharedMemBytes_ ) + , paramCount( paramCount_ ) + , pParams( pParams_ ) + , extraCount( extraCount_ ) + , pExtras( pExtras_ ) + { + } + + VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CudaLaunchInfoNV( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : CudaLaunchInfoNV( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CudaLaunchInfoNV( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_, + uint32_t gridDimX_, + uint32_t gridDimY_, + uint32_t gridDimZ_, + uint32_t blockDimX_, + uint32_t blockDimY_, + uint32_t blockDimZ_, + uint32_t sharedMemBytes_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & params_, + VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & extras_ = {}, + const void * pNext_ = nullptr ) + : pNext( pNext_ ) + , function( function_ ) + , gridDimX( gridDimX_ ) + , gridDimY( gridDimY_ ) + , gridDimZ( gridDimZ_ ) + , blockDimX( blockDimX_ ) + , blockDimY( blockDimY_ ) + , blockDimZ( blockDimZ_ ) + , sharedMemBytes( sharedMemBytes_ ) + , paramCount( params_.size() ) + , pParams( params_.data() ) + , extraCount( extras_.size() ) + , pExtras( extras_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CudaLaunchInfoNV & operator=( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CudaLaunchInfoNV & operator=( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setFunction( VULKAN_HPP_NAMESPACE::CudaFunctionNV function_ ) VULKAN_HPP_NOEXCEPT + { + function = function_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimX( uint32_t gridDimX_ ) VULKAN_HPP_NOEXCEPT + { + gridDimX = gridDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimY( uint32_t gridDimY_ ) VULKAN_HPP_NOEXCEPT + { + gridDimY = gridDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimZ( uint32_t gridDimZ_ ) VULKAN_HPP_NOEXCEPT + { + gridDimZ = gridDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimX( uint32_t blockDimX_ ) VULKAN_HPP_NOEXCEPT + { + blockDimX = blockDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimY( uint32_t blockDimY_ ) VULKAN_HPP_NOEXCEPT + { + blockDimY = blockDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimZ( uint32_t blockDimZ_ ) VULKAN_HPP_NOEXCEPT + { + blockDimZ = blockDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setSharedMemBytes( uint32_t sharedMemBytes_ ) VULKAN_HPP_NOEXCEPT + { + sharedMemBytes = sharedMemBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setParamCount( size_t paramCount_ ) VULKAN_HPP_NOEXCEPT + { + paramCount = paramCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPParams( const void * const * pParams_ ) VULKAN_HPP_NOEXCEPT + { + pParams = pParams_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CudaLaunchInfoNV & setParams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & params_ ) VULKAN_HPP_NOEXCEPT + { + paramCount = params_.size(); + pParams = params_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setExtraCount( size_t extraCount_ ) VULKAN_HPP_NOEXCEPT + { + extraCount = extraCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPExtras( const void * const * pExtras_ ) VULKAN_HPP_NOEXCEPT + { + pExtras = pExtras_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CudaLaunchInfoNV & setExtras( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & extras_ ) VULKAN_HPP_NOEXCEPT + { + extraCount = extras_.size(); + pExtras = extras_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkCudaLaunchInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaLaunchInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CudaLaunchInfoNV const & ) const = default; +# else + bool operator==( CudaLaunchInfoNV 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 ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) && + ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) && + ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) && + ( pExtras == rhs.pExtras ); +# endif + } + + bool operator!=( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCudaLaunchInfoNV; + const void * pNext = {}; + VULKAN_HPP_NAMESPACE::CudaFunctionNV function = {}; + uint32_t gridDimX = {}; + uint32_t gridDimY = {}; + uint32_t gridDimZ = {}; + uint32_t blockDimX = {}; + uint32_t blockDimY = {}; + uint32_t blockDimZ = {}; + uint32_t sharedMemBytes = {}; + size_t paramCount = {}; + const void * const * pParams = {}; + size_t extraCount = {}; + const void * const * pExtras = {}; + }; + + template <> + struct CppType + { + using Type = CudaLaunchInfoNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct CudaModuleCreateInfoNV + { + using NativeType = VkCudaModuleCreateInfoNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCudaModuleCreateInfoNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( size_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , dataSize( dataSize_ ) + , pData( pData_ ) + { + } + + VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CudaModuleCreateInfoNV( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CudaModuleCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CudaModuleCreateInfoNV( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_, const void * pNext_ = nullptr ) + : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CudaModuleCreateInfoNV & operator=( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + CudaModuleCreateInfoNV & operator=( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CudaModuleCreateInfoNV & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkCudaModuleCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaModuleCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataSize, pData ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CudaModuleCreateInfoNV const & ) const = default; +# else + bool operator==( CudaModuleCreateInfoNV 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 ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCudaModuleCreateInfoNV; + const void * pNext = {}; + size_t dataSize = {}; + const void * pData = {}; + }; + + template <> + struct CppType + { + using Type = CudaModuleCreateInfoNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + #if defined( VK_USE_PLATFORM_WIN32_KHR ) struct D3D12FenceSubmitInfoKHR { @@ -29582,6 +30081,102 @@ namespace VULKAN_HPP_NAMESPACE using Type = DeviceQueueInfo2; }; + struct DeviceQueueShaderCoreControlCreateInfoARM + { + using NativeType = VkDeviceQueueShaderCoreControlCreateInfoARM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( uint32_t shaderCoreCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , shaderCoreCount( shaderCoreCount_ ) + { + } + + VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueShaderCoreControlCreateInfoARM( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueShaderCoreControlCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DeviceQueueShaderCoreControlCreateInfoARM & operator=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + DeviceQueueShaderCoreControlCreateInfoARM & operator=( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setShaderCoreCount( uint32_t shaderCoreCount_ ) VULKAN_HPP_NOEXCEPT + { + shaderCoreCount = shaderCoreCount_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkDeviceQueueShaderCoreControlCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueShaderCoreControlCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCoreCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueShaderCoreControlCreateInfoARM const & ) const = default; +#else + bool operator==( DeviceQueueShaderCoreControlCreateInfoARM 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 ) && ( shaderCoreCount == rhs.shaderCoreCount ); +# endif + } + + bool operator!=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM; + void * pNext = {}; + uint32_t shaderCoreCount = {}; + }; + + template <> + struct CppType + { + using Type = DeviceQueueShaderCoreControlCreateInfoARM; + }; + struct DirectDriverLoadingInfoLUNARG { using NativeType = VkDirectDriverLoadingInfoLUNARG; @@ -58128,6 +58723,195 @@ namespace VULKAN_HPP_NAMESPACE using Type = PhysicalDeviceCubicWeightsFeaturesQCOM; }; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct PhysicalDeviceCudaKernelLaunchFeaturesNV + { + using NativeType = VkPhysicalDeviceCudaKernelLaunchFeaturesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , cudaKernelLaunchFeatures( cudaKernelLaunchFeatures_ ) + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCudaKernelLaunchFeaturesNV( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCudaKernelLaunchFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV & + setCudaKernelLaunchFeatures( VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures_ ) VULKAN_HPP_NOEXCEPT + { + cudaKernelLaunchFeatures = cudaKernelLaunchFeatures_; + return *this; + } +# endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cudaKernelLaunchFeatures ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCudaKernelLaunchFeaturesNV const & ) const = default; +# else + bool operator==( PhysicalDeviceCudaKernelLaunchFeaturesNV 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 ) && ( cudaKernelLaunchFeatures == rhs.cudaKernelLaunchFeatures ); +# endif + } + + bool operator!=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 cudaKernelLaunchFeatures = {}; + }; + + template <> + struct CppType + { + using Type = PhysicalDeviceCudaKernelLaunchFeaturesNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + struct PhysicalDeviceCudaKernelLaunchPropertiesNV + { + using NativeType = VkPhysicalDeviceCudaKernelLaunchPropertiesNV; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV; + +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( uint32_t computeCapabilityMinor_ = {}, + uint32_t computeCapabilityMajor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , computeCapabilityMinor( computeCapabilityMinor_ ) + , computeCapabilityMajor( computeCapabilityMajor_ ) + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCudaKernelLaunchPropertiesNV( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCudaKernelLaunchPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, computeCapabilityMinor, computeCapabilityMajor ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCudaKernelLaunchPropertiesNV const & ) const = default; +# else + bool operator==( PhysicalDeviceCudaKernelLaunchPropertiesNV 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 ) && ( computeCapabilityMinor == rhs.computeCapabilityMinor ) && + ( computeCapabilityMajor == rhs.computeCapabilityMajor ); +# endif + } + + bool operator!=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV; + void * pNext = {}; + uint32_t computeCapabilityMinor = {}; + uint32_t computeCapabilityMajor = {}; + }; + + template <> + struct CppType + { + using Type = PhysicalDeviceCudaKernelLaunchPropertiesNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + struct PhysicalDeviceCustomBorderColorFeaturesEXT { using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT; @@ -77723,6 +78507,204 @@ namespace VULKAN_HPP_NAMESPACE }; using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures; + struct PhysicalDeviceSchedulingControlsFeaturesARM + { + using NativeType = VkPhysicalDeviceSchedulingControlsFeaturesARM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( VULKAN_HPP_NAMESPACE::Bool32 schedulingControls_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , schedulingControls( schedulingControls_ ) + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSchedulingControlsFeaturesARM( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSchedulingControlsFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSchedulingControlsFeaturesARM & operator=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSchedulingControlsFeaturesARM & operator=( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM & + setSchedulingControls( VULKAN_HPP_NAMESPACE::Bool32 schedulingControls_ ) VULKAN_HPP_NOEXCEPT + { + schedulingControls = schedulingControls_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPhysicalDeviceSchedulingControlsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, schedulingControls ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSchedulingControlsFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceSchedulingControlsFeaturesARM 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 ) && ( schedulingControls == rhs.schedulingControls ); +# endif + } + + bool operator!=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::Bool32 schedulingControls = {}; + }; + + template <> + struct CppType + { + using Type = PhysicalDeviceSchedulingControlsFeaturesARM; + }; + + struct PhysicalDeviceSchedulingControlsPropertiesARM + { + using NativeType = VkPhysicalDeviceSchedulingControlsPropertiesARM; + + static const bool allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM; + +#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSchedulingControlsPropertiesARM( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext( pNext_ ) + , schedulingControlsFlags( schedulingControlsFlags_ ) + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSchedulingControlsPropertiesARM( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSchedulingControlsPropertiesARM( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSchedulingControlsPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSchedulingControlsPropertiesARM & operator=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/ + + PhysicalDeviceSchedulingControlsPropertiesARM & operator=( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsPropertiesARM & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsPropertiesARM & + setSchedulingControlsFlags( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ ) VULKAN_HPP_NOEXCEPT + { + schedulingControlsFlags = schedulingControlsFlags_; + return *this; + } +#endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/ + + operator VkPhysicalDeviceSchedulingControlsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) +# if 14 <= VULKAN_HPP_CPP_VERSION + auto +# else + std::tuple +# endif + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, schedulingControlsFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSchedulingControlsPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceSchedulingControlsPropertiesARM 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 ) && ( schedulingControlsFlags == rhs.schedulingControlsFlags ); +# endif + } + + bool operator!=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM; + void * pNext = {}; + VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags = {}; + }; + + template <> + struct CppType + { + using Type = PhysicalDeviceSchedulingControlsPropertiesARM; + }; + struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures { using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; diff --git a/include/vulkan/vulkan_to_string.hpp b/include/vulkan/vulkan_to_string.hpp index 3a34b36..2622002 100644 --- a/include/vulkan/vulkan_to_string.hpp +++ b/include/vulkan/vulkan_to_string.hpp @@ -3248,6 +3248,20 @@ namespace VULKAN_HPP_NAMESPACE return "{ " + result.substr( 0, result.size() - 3 ) + " }"; } + //=== VK_ARM_scheduling_controls === + + VULKAN_HPP_INLINE std::string to_string( PhysicalDeviceSchedulingControlsFlagsARM value ) + { + if ( !value ) + return "{}"; + + std::string result; + if ( value & PhysicalDeviceSchedulingControlsFlagBitsARM::eShaderCoreCount ) + result += "ShaderCoreCount | "; + + return "{ " + result.substr( 0, result.size() - 3 ) + " }"; + } + //=== VK_NV_memory_decompression === VULKAN_HPP_INLINE std::string to_string( MemoryDecompressionMethodFlagsNV value ) @@ -4242,6 +4256,13 @@ namespace VULKAN_HPP_NAMESPACE #endif /*VK_ENABLE_BETA_EXTENSIONS*/ case StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV: return "PhysicalDeviceDiagnosticsConfigFeaturesNV"; case StructureType::eDeviceDiagnosticsConfigCreateInfoNV: return "DeviceDiagnosticsConfigCreateInfoNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::eCudaModuleCreateInfoNV: return "CudaModuleCreateInfoNV"; + case StructureType::eCudaFunctionCreateInfoNV: return "CudaFunctionCreateInfoNV"; + case StructureType::eCudaLaunchInfoNV: return "CudaLaunchInfoNV"; + case StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV: return "PhysicalDeviceCudaKernelLaunchFeaturesNV"; + case StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV: return "PhysicalDeviceCudaKernelLaunchPropertiesNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ case StructureType::eQueryLowLatencySupportNV: return "QueryLowLatencySupportNV"; #if defined( VK_USE_PLATFORM_METAL_EXT ) case StructureType::eExportMetalObjectCreateInfoEXT: return "ExportMetalObjectCreateInfoEXT"; @@ -4379,6 +4400,9 @@ namespace VULKAN_HPP_NAMESPACE case StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT: return "SamplerBorderColorComponentMappingCreateInfoEXT"; case StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT: return "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"; case StructureType::ePhysicalDeviceShaderCorePropertiesARM: return "PhysicalDeviceShaderCorePropertiesARM"; + case StructureType::eDeviceQueueShaderCoreControlCreateInfoARM: return "DeviceQueueShaderCoreControlCreateInfoARM"; + case StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM: return "PhysicalDeviceSchedulingControlsFeaturesARM"; + case StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM: return "PhysicalDeviceSchedulingControlsPropertiesARM"; case StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT: return "PhysicalDeviceImageSlicedViewOf3DFeaturesEXT"; case StructureType::eImageViewSlicedCreateInfoEXT: return "ImageViewSlicedCreateInfoEXT"; case StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE: return "PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE"; @@ -4553,6 +4577,10 @@ namespace VULKAN_HPP_NAMESPACE case ObjectType::ePerformanceConfigurationINTEL: return "PerformanceConfigurationINTEL"; case ObjectType::eDeferredOperationKHR: return "DeferredOperationKHR"; case ObjectType::eIndirectCommandsLayoutNV: return "IndirectCommandsLayoutNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ObjectType::eCudaModuleNV: return "CudaModuleNV"; + case ObjectType::eCudaFunctionNV: return "CudaFunctionNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ #if defined( VK_USE_PLATFORM_FUCHSIA ) case ObjectType::eBufferCollectionFUCHSIA: return "BufferCollectionFUCHSIA"; #endif /*VK_USE_PLATFORM_FUCHSIA*/ @@ -6947,6 +6975,10 @@ namespace VULKAN_HPP_NAMESPACE case DebugReportObjectTypeEXT::eCuFunctionNVX: return "CuFunctionNVX"; case DebugReportObjectTypeEXT::eAccelerationStructureKHR: return "AccelerationStructureKHR"; case DebugReportObjectTypeEXT::eAccelerationStructureNV: return "AccelerationStructureNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case DebugReportObjectTypeEXT::eCudaModuleNV: return "CudaModuleNV"; + case DebugReportObjectTypeEXT::eCudaFunctionNV: return "CudaFunctionNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ #if defined( VK_USE_PLATFORM_FUCHSIA ) case DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA: return "BufferCollectionFUCHSIA"; #endif /*VK_USE_PLATFORM_FUCHSIA*/ @@ -8638,6 +8670,17 @@ namespace VULKAN_HPP_NAMESPACE } #endif /*VK_ENABLE_BETA_EXTENSIONS*/ + //=== VK_ARM_scheduling_controls === + + VULKAN_HPP_INLINE std::string to_string( PhysicalDeviceSchedulingControlsFlagBitsARM value ) + { + switch ( value ) + { + case PhysicalDeviceSchedulingControlsFlagBitsARM::eShaderCoreCount: return "ShaderCoreCount"; + default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; + } + } + //=== VK_NV_memory_decompression === VULKAN_HPP_INLINE std::string to_string( MemoryDecompressionMethodFlagBitsNV value ) diff --git a/registry/validusage.json b/registry/validusage.json index 3a1129d..2204818 100644 --- a/registry/validusage.json +++ b/registry/validusage.json @@ -1,9 +1,9 @@ { "version info": { "schema version": 2, - "api version": "1.3.268", - "comment": "from git branch: github-main commit: bb6783481f96d778772ea9607e2991c27e2bbe96", - "date": "2023-10-13 09:30:15Z" + "api version": "1.3.269", + "comment": "from git branch: github-main commit: 463f8c616f49fb83ae4736de0d84b0048a7c76e2", + "date": "2023-10-20 10:25:47Z" }, "validation": { "vkGetInstanceProcAddr": { @@ -90,7 +90,7 @@ "page": "vkspec" }, { - "vuid": "VUID-VkInstanceCreateInfo-pNext", + "vuid": "VUID-VkInstanceCreateInfo-pNext-09400", "text": "If the pNext chain of VkInstanceCreateInfo includes a VkDirectDriverLoadingListLUNARG structure, the list of enabled extensions in ppEnabledExtensionNames must contain VK_LUNARG_direct_driver_loading", "page": "vkspec" }, @@ -331,7 +331,7 @@ }, { "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext", - "text": "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkPhysicalDeviceAccelerationStructurePropertiesKHR, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesKHR, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, VkPhysicalDeviceCustomBorderColorPropertiesEXT, VkPhysicalDeviceDepthStencilResolveProperties, VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, VkPhysicalDeviceDescriptorBufferPropertiesEXT, VkPhysicalDeviceDescriptorIndexingProperties, VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDisplacementMicromapPropertiesNV, VkPhysicalDeviceDriverProperties, VkPhysicalDeviceDrmPropertiesEXT, VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV, VkPhysicalDeviceExternalFormatResolvePropertiesANDROID, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsProperties, VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, VkPhysicalDeviceHostImageCopyPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceImageProcessing2PropertiesQCOM, VkPhysicalDeviceImageProcessingPropertiesQCOM, VkPhysicalDeviceInlineUniformBlockProperties, VkPhysicalDeviceLayeredDriverPropertiesMSFT, VkPhysicalDeviceLineRasterizationPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMaintenance4Properties, VkPhysicalDeviceMaintenance5PropertiesKHR, VkPhysicalDeviceMemoryDecompressionPropertiesNV, VkPhysicalDeviceMeshShaderPropertiesEXT, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiDrawPropertiesEXT, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDeviceNestedCommandBufferPropertiesEXT, VkPhysicalDeviceOpacityMicromapPropertiesEXT, VkPhysicalDeviceOpticalFlowPropertiesNV, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePerformanceQueryPropertiesKHR, VkPhysicalDevicePipelineRobustnessPropertiesEXT, VkPhysicalDevicePointClippingProperties, VkPhysicalDevicePortabilitySubsetPropertiesKHR, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDeviceProvokingVertexPropertiesEXT, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, VkPhysicalDeviceRayTracingPipelinePropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceRobustness2PropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxProperties, VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, VkPhysicalDeviceShaderCoreProperties2AMD, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderCorePropertiesARM, VkPhysicalDeviceShaderEnqueuePropertiesAMDX, VkPhysicalDeviceShaderIntegerDotProductProperties, VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, VkPhysicalDeviceShaderObjectPropertiesEXT, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShaderTileImagePropertiesEXT, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceSubgroupSizeControlProperties, VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, VkPhysicalDeviceTexelBufferAlignmentProperties, VkPhysicalDeviceTimelineSemaphoreProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, VkPhysicalDeviceVulkan11Properties, VkPhysicalDeviceVulkan12Properties, or VkPhysicalDeviceVulkan13Properties", + "text": "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkPhysicalDeviceAccelerationStructurePropertiesKHR, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesKHR, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceCopyMemoryIndirectPropertiesNV, VkPhysicalDeviceCudaKernelLaunchPropertiesNV, VkPhysicalDeviceCustomBorderColorPropertiesEXT, VkPhysicalDeviceDepthStencilResolveProperties, VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, VkPhysicalDeviceDescriptorBufferPropertiesEXT, VkPhysicalDeviceDescriptorIndexingProperties, VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDisplacementMicromapPropertiesNV, VkPhysicalDeviceDriverProperties, VkPhysicalDeviceDrmPropertiesEXT, VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV, VkPhysicalDeviceExternalFormatResolvePropertiesANDROID, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsProperties, VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, VkPhysicalDeviceHostImageCopyPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceImageProcessing2PropertiesQCOM, VkPhysicalDeviceImageProcessingPropertiesQCOM, VkPhysicalDeviceInlineUniformBlockProperties, VkPhysicalDeviceLayeredDriverPropertiesMSFT, VkPhysicalDeviceLineRasterizationPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMaintenance4Properties, VkPhysicalDeviceMaintenance5PropertiesKHR, VkPhysicalDeviceMemoryDecompressionPropertiesNV, VkPhysicalDeviceMeshShaderPropertiesEXT, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiDrawPropertiesEXT, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDeviceNestedCommandBufferPropertiesEXT, VkPhysicalDeviceOpacityMicromapPropertiesEXT, VkPhysicalDeviceOpticalFlowPropertiesNV, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePerformanceQueryPropertiesKHR, VkPhysicalDevicePipelineRobustnessPropertiesEXT, VkPhysicalDevicePointClippingProperties, VkPhysicalDevicePortabilitySubsetPropertiesKHR, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDeviceProvokingVertexPropertiesEXT, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, VkPhysicalDeviceRayTracingPipelinePropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceRobustness2PropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxProperties, VkPhysicalDeviceSchedulingControlsPropertiesARM, VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, VkPhysicalDeviceShaderCoreProperties2AMD, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderCorePropertiesARM, VkPhysicalDeviceShaderEnqueuePropertiesAMDX, VkPhysicalDeviceShaderIntegerDotProductProperties, VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, VkPhysicalDeviceShaderObjectPropertiesEXT, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShaderTileImagePropertiesEXT, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceSubgroupSizeControlProperties, VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, VkPhysicalDeviceTexelBufferAlignmentProperties, VkPhysicalDeviceTimelineSemaphoreProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, VkPhysicalDeviceVulkan11Properties, VkPhysicalDeviceVulkan12Properties, or VkPhysicalDeviceVulkan13Properties", "page": "vkspec" }, { @@ -449,6 +449,25 @@ } ] }, + "VkPhysicalDeviceSchedulingControlsPropertiesARM": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM", + "page": "vkspec" + }, + { + "vuid": "VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-schedulingControlsFlags-parameter", + "text": "schedulingControlsFlags must be a valid combination of VkPhysicalDeviceSchedulingControlsFlagBitsARM values", + "page": "vkspec" + }, + { + "vuid": "VUID-VkPhysicalDeviceSchedulingControlsPropertiesARM-schedulingControlsFlags-requiredbitmask", + "text": "schedulingControlsFlags must not be 0", + "page": "vkspec" + } + ] + }, "vkGetPhysicalDeviceQueueFamilyProperties": { "core": [ { @@ -817,6 +836,16 @@ "text": "If descriptorBuffer is enabled, ppEnabledExtensionNames must not contain VK_AMD_shader_fragment_mask", "page": "vkspec" }, + { + "vuid": "VUID-VkDeviceCreateInfo-pNext-09396", + "text": "If the pNext chain includes a VkDeviceQueueShaderCoreControlCreateInfoARM structure, then it must not be included in the pNext chain of any of the VkDeviceQueueCreateInfo structures in pQueueCreateInfos.", + "page": "vkspec" + }, + { + "vuid": "VUID-VkDeviceCreateInfo-pNext-09397", + "text": "If the pNext chain includes a VkDeviceQueueShaderCoreControlCreateInfoARM structure then VkPhysicalDeviceSchedulingControlsPropertiesARM::schedulingControlsFlags must contain VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM.", + "page": "vkspec" + }, { "vuid": "VUID-VkDeviceCreateInfo-sType-sType", "text": "sType must be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO", @@ -824,7 +853,7 @@ }, { "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext", - "text": "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDeviceDeviceMemoryReportCreateInfoEXT, VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfo, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice4444FormatsFeaturesEXT, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceAccelerationStructureFeaturesKHR, VkPhysicalDeviceAddressBindingReportFeaturesEXT, VkPhysicalDeviceAmigoProfilingFeaturesSEC, VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceColorWriteEnableFeaturesEXT, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesKHR, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCubicClampFeaturesQCOM, VkPhysicalDeviceCubicWeightsFeaturesQCOM, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthBiasControlFeaturesEXT, VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, VkPhysicalDeviceDepthClipControlFeaturesEXT, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorBufferFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV, VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceDisplacementMicromapFeaturesNV, VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV, VkPhysicalDeviceExternalFormatResolveFeaturesANDROID, VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, VkPhysicalDeviceFaultFeaturesEXT, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VkPhysicalDeviceFrameBoundaryFeaturesEXT, VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, VkPhysicalDeviceHostImageCopyFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, VkPhysicalDeviceImageCompressionControlFeaturesEXT, VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, VkPhysicalDeviceImageProcessing2FeaturesQCOM, VkPhysicalDeviceImageProcessingFeaturesQCOM, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT, VkPhysicalDeviceImageViewMinLodFeaturesEXT, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInheritedViewportScissorFeaturesNV, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, VkPhysicalDeviceLegacyDitheringFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceLinearColorAttachmentFeaturesNV, VkPhysicalDeviceMaintenance4Features, VkPhysicalDeviceMaintenance5FeaturesKHR, VkPhysicalDeviceMemoryDecompressionFeaturesNV, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiDrawFeaturesEXT, VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM, VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, VkPhysicalDeviceNestedCommandBufferFeaturesEXT, VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, VkPhysicalDeviceOpacityMicromapFeaturesEXT, VkPhysicalDeviceOpticalFlowFeaturesNV, VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, VkPhysicalDevicePipelinePropertiesFeaturesEXT, VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, VkPhysicalDevicePipelineRobustnessFeaturesEXT, VkPhysicalDevicePortabilitySubsetFeaturesKHR, VkPhysicalDevicePresentBarrierFeaturesNV, VkPhysicalDevicePresentIdFeaturesKHR, VkPhysicalDevicePresentWaitFeaturesKHR, VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceProvokingVertexFeaturesEXT, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, VkPhysicalDeviceRayQueryFeaturesKHR, VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, VkPhysicalDeviceRayTracingPipelineFeaturesKHR, VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, VkPhysicalDeviceShaderEnqueueFeaturesAMDX, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, VkPhysicalDeviceShaderObjectFeaturesEXT, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceShaderTileImageFeaturesEXT, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, VkPhysicalDeviceTilePropertiesFeaturesQCOM, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkan13Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, VkPhysicalDeviceYcbcrDegammaFeaturesQCOM, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", + "text": "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDeviceDeviceMemoryReportCreateInfoEXT, VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfo, VkDeviceQueueShaderCoreControlCreateInfoARM, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice4444FormatsFeaturesEXT, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceAccelerationStructureFeaturesKHR, VkPhysicalDeviceAddressBindingReportFeaturesEXT, VkPhysicalDeviceAmigoProfilingFeaturesSEC, VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceColorWriteEnableFeaturesEXT, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesKHR, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCubicClampFeaturesQCOM, VkPhysicalDeviceCubicWeightsFeaturesQCOM, VkPhysicalDeviceCudaKernelLaunchFeaturesNV, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthBiasControlFeaturesEXT, VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, VkPhysicalDeviceDepthClipControlFeaturesEXT, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorBufferFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV, VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceDisplacementMicromapFeaturesNV, VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV, VkPhysicalDeviceExternalFormatResolveFeaturesANDROID, VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, VkPhysicalDeviceFaultFeaturesEXT, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VkPhysicalDeviceFrameBoundaryFeaturesEXT, VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, VkPhysicalDeviceHostImageCopyFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, VkPhysicalDeviceImageCompressionControlFeaturesEXT, VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, VkPhysicalDeviceImageProcessing2FeaturesQCOM, VkPhysicalDeviceImageProcessingFeaturesQCOM, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT, VkPhysicalDeviceImageViewMinLodFeaturesEXT, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInheritedViewportScissorFeaturesNV, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, VkPhysicalDeviceLegacyDitheringFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceLinearColorAttachmentFeaturesNV, VkPhysicalDeviceMaintenance4Features, VkPhysicalDeviceMaintenance5FeaturesKHR, VkPhysicalDeviceMemoryDecompressionFeaturesNV, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiDrawFeaturesEXT, VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM, VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, VkPhysicalDeviceNestedCommandBufferFeaturesEXT, VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, VkPhysicalDeviceOpacityMicromapFeaturesEXT, VkPhysicalDeviceOpticalFlowFeaturesNV, VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, VkPhysicalDevicePipelinePropertiesFeaturesEXT, VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, VkPhysicalDevicePipelineRobustnessFeaturesEXT, VkPhysicalDevicePortabilitySubsetFeaturesKHR, VkPhysicalDevicePresentBarrierFeaturesNV, VkPhysicalDevicePresentIdFeaturesKHR, VkPhysicalDevicePresentWaitFeaturesKHR, VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceProvokingVertexFeaturesEXT, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, VkPhysicalDeviceRayQueryFeaturesKHR, VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, VkPhysicalDeviceRayTracingPipelineFeaturesKHR, VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSchedulingControlsFeaturesARM, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, VkPhysicalDeviceShaderEnqueueFeaturesAMDX, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, VkPhysicalDeviceShaderObjectFeaturesEXT, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceShaderTileImageFeaturesEXT, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, VkPhysicalDeviceTilePropertiesFeaturesQCOM, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkan13Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, VkPhysicalDeviceYcbcrDegammaFeaturesQCOM, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures", "page": "vkspec" }, { @@ -1024,6 +1053,11 @@ "text": "If flags includes VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT, queueFamilyIndex must be the index of a queue family that includes the VK_QUEUE_PROTECTED_BIT capability", "page": "vkspec" }, + { + "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-09398", + "text": "If the pNext chain includes a VkDeviceQueueShaderCoreControlCreateInfoARM structure then VkPhysicalDeviceSchedulingControlsPropertiesARM::schedulingControlsFlags must contain VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM.", + "page": "vkspec" + }, { "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType", "text": "sType must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO", @@ -1031,7 +1065,7 @@ }, { "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext", - "text": "pNext must be NULL or a pointer to a valid instance of VkDeviceQueueGlobalPriorityCreateInfoKHR", + "text": "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDeviceQueueGlobalPriorityCreateInfoKHR or VkDeviceQueueShaderCoreControlCreateInfoARM", "page": "vkspec" }, { @@ -1070,6 +1104,20 @@ } ] }, + "VkDeviceQueueShaderCoreControlCreateInfoARM": { + "core": [ + { + "vuid": "VUID-VkDeviceQueueShaderCoreControlCreateInfoARM-shaderCoreCount-09399", + "text": "shaderCoreCount must be greater than 0 and less than or equal to the total number of shader cores as reported via VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM::shaderCoreCount.", + "page": "vkspec" + }, + { + "vuid": "VUID-VkDeviceQueueShaderCoreControlCreateInfoARM-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM", + "page": "vkspec" + } + ] + }, "vkGetDeviceQueue": { "core": [ { @@ -8468,13 +8516,13 @@ "page": "vkspec" }, { - "vuid": "VUID-VkRenderingInfo-pNext-06113", - "text": "If the pNext chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount member is not 0, and the imageView member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\) for each element of pDeviceRenderAreas", + "vuid": "VUID-VkRenderingInfo-pNext-06114", + "text": "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0 and the imageView member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)", "page": "vkspec" }, { - "vuid": "VUID-VkRenderingInfo-pNext-06114", - "text": "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0 and the imageView member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)", + "vuid": "VUID-VkRenderingInfo-pNext-06113", + "text": "If the pNext chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount member is not 0, and the imageView member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\) for each element of pDeviceRenderAreas", "page": "vkspec" }, { @@ -8493,13 +8541,13 @@ "page": "vkspec" }, { - "vuid": "VUID-VkRenderingInfo-pNext-06120", - "text": "If the pNext chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount member is not 0, and the imageView member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\) for each element of pDeviceRenderAreas", + "vuid": "VUID-VkRenderingInfo-pNext-06121", + "text": "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0 and the imageView member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\)", "page": "vkspec" }, { - "vuid": "VUID-VkRenderingInfo-pNext-06121", - "text": "If the pNext chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount member is equal to 0 and the imageView member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\)", + "vuid": "VUID-VkRenderingInfo-pNext-06120", + "text": "If the pNext chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount member is not 0, and the imageView member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext chain is not VK_NULL_HANDLE, imageView must have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\) for each element of pDeviceRenderAreas", "page": "vkspec" }, { @@ -8638,12 +8686,12 @@ }, { "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06861", - "text": "If imageView is not VK_NULL_HANDLE, resolveMode is not VK_RESOLVE_MODE_NONE, and the pNext chain of VkRenderingInfo does not includes a VkMultisampledRenderToSingleSampledInfoEXT structure with the multisampledRenderToSingleSampledEnable field equal to VK_TRUE, imageView must not have a sample count of VK_SAMPLE_COUNT_1_BIT", + "text": "imageView must not have a sample count of VK_SAMPLE_COUNT_1_BIT if all of the following hold:
\n\n
", "page": "vkspec" }, { "vuid": "VUID-VkRenderingAttachmentInfo-imageView-06862", - "text": "If imageView is not VK_NULL_HANDLE, resolveMode is not VK_RESOLVE_MODE_NONE, and the pNext chain of VkRenderingInfo does not includes a VkMultisampledRenderToSingleSampledInfoEXT structure with the multisampledRenderToSingleSampledEnable field equal to VK_TRUE, resolveImageView must not be VK_NULL_HANDLE", + "text": "resolveImageView must not be VK_NULL_HANDLE if all of the following hold:
\n\n
", "page": "vkspec" }, { @@ -10326,7 +10374,7 @@ }, { "vuid": "VUID-VkAttachmentDescription2-pNext-06705", - "text": "If the pNext chain does includes a VkAttachmentDescriptionStencilLayout structure, format includes a stencil component, and stencilLoadOp is VK_ATTACHMENT_LOAD_OP_LOAD, then VkAttachmentDescriptionStencilLayout::stencilInitialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED", + "text": "If the pNext chain includes a VkAttachmentDescriptionStencilLayout structure, format includes a stencil component, and stencilLoadOp is VK_ATTACHMENT_LOAD_OP_LOAD, then VkAttachmentDescriptionStencilLayout::stencilInitialLayout must not be VK_IMAGE_LAYOUT_UNDEFINED", "page": "vkspec" }, { @@ -11340,12 +11388,7 @@ }, { "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746", - "text": "If renderPass was specified with non-zero view masks, each element of pAttachments that is referenced by fragmentDensityMapAttachment must have a layerCount equal to 1 or greater than the index of the most significant bit set in any of those view masks", - "page": "vkspec" - }, - { - "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747", - "text": "If renderPass was specified with all view masks equal to zero, each element of pAttachments that is referenced by fragmentDensityMapAttachment must have a layerCount equal to 1", + "text": "Each element of pAttachments that is referenced by fragmentDensityMapAttachment must have a layerCount equal to 1 or if renderPass was specified with non-zero view masks, greater than the index of the most significant bit set in any of those view masks", "page": "vkspec" }, { @@ -12852,6 +12895,16 @@ "text": "If the fragmentDensityMap feature is not enabled, flags must not include VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT", "page": "vkspec" }, + { + "vuid": "VUID-VkShaderCreateInfoEXT-flags-09404", + "text": "If flags includes VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, the subgroupSizeControl feature must be enabled", + "page": "vkspec" + }, + { + "vuid": "VUID-VkShaderCreateInfoEXT-flags-09405", + "text": "If flags includes VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, the computeFullSubgroups feature must be enabled", + "page": "vkspec" + }, { "vuid": "VUID-VkShaderCreateInfoEXT-flags-08992", "text": "If flags includes VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, stage must be one of VK_SHADER_STAGE_MESH_BIT_EXT, VK_SHADER_STAGE_TASK_BIT_EXT, or VK_SHADER_STAGE_COMPUTE_BIT", @@ -13552,8 +13605,8 @@ "vkCmdSetPatchControlPointsEXT": { "core": [ { - "vuid": "VUID-vkCmdSetPatchControlPointsEXT-None-08574", - "text": "Either the extendedDynamicState2PatchControlPoints feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetPatchControlPointsEXT-None-09422", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -13859,6 +13912,194 @@ } ] }, + "vkCreateCudaModuleNV": { + "core": [ + { + "vuid": "VUID-vkCreateCudaModuleNV-device-parameter", + "text": "device must be a valid VkDevice handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateCudaModuleNV-pCreateInfo-parameter", + "text": "pCreateInfo must be a valid pointer to a valid VkCudaModuleCreateInfoNV structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateCudaModuleNV-pAllocator-parameter", + "text": "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateCudaModuleNV-pModule-parameter", + "text": "pModule must be a valid pointer to a VkCudaModuleNV handle", + "page": "vkspec" + } + ] + }, + "VkCudaModuleCreateInfoNV": { + "core": [ + { + "vuid": "VUID-VkCudaModuleCreateInfoNV-dataSize-09413", + "text": "dataSize must be the total size in bytes of the PTX files or binary cache passed to pData.", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaModuleCreateInfoNV-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaModuleCreateInfoNV-pNext-pNext", + "text": "pNext must be NULL", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaModuleCreateInfoNV-pData-parameter", + "text": "pData must be a valid pointer to an array of dataSize bytes", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaModuleCreateInfoNV-dataSize-arraylength", + "text": "dataSize must be greater than 0", + "page": "vkspec" + } + ] + }, + "vkCreateCudaFunctionNV": { + "core": [ + { + "vuid": "VUID-vkCreateCudaFunctionNV-device-parameter", + "text": "device must be a valid VkDevice handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateCudaFunctionNV-pCreateInfo-parameter", + "text": "pCreateInfo must be a valid pointer to a valid VkCudaFunctionCreateInfoNV structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateCudaFunctionNV-pAllocator-parameter", + "text": "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCreateCudaFunctionNV-pFunction-parameter", + "text": "pFunction must be a valid pointer to a VkCudaFunctionNV handle", + "page": "vkspec" + } + ] + }, + "VkCudaFunctionCreateInfoNV": { + "core": [ + { + "vuid": "VUID-VkCudaFunctionCreateInfoNV-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaFunctionCreateInfoNV-pNext-pNext", + "text": "pNext must be NULL", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaFunctionCreateInfoNV-module-parameter", + "text": "module must be a valid VkCudaModuleNV handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaFunctionCreateInfoNV-pName-parameter", + "text": "pName must be a null-terminated UTF-8 string", + "page": "vkspec" + } + ] + }, + "vkDestroyCudaFunctionNV": { + "core": [ + { + "vuid": "VUID-vkDestroyCudaFunctionNV-device-parameter", + "text": "device must be a valid VkDevice handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyCudaFunctionNV-function-parameter", + "text": "function must be a valid VkCudaFunctionNV handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyCudaFunctionNV-pAllocator-parameter", + "text": "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyCudaFunctionNV-function-parent", + "text": "function must have been created, allocated, or retrieved from device", + "page": "vkspec" + } + ] + }, + "vkDestroyCudaModuleNV": { + "core": [ + { + "vuid": "VUID-vkDestroyCudaModuleNV-device-parameter", + "text": "device must be a valid VkDevice handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyCudaModuleNV-module-parameter", + "text": "module must be a valid VkCudaModuleNV handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyCudaModuleNV-pAllocator-parameter", + "text": "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkDestroyCudaModuleNV-module-parent", + "text": "module must have been created, allocated, or retrieved from device", + "page": "vkspec" + } + ] + }, + "vkGetCudaModuleCacheNV": { + "core": [ + { + "vuid": "VUID-vkGetCudaModuleCacheNV-pCacheSize-09414", + "text": "pCacheSize must be a pointer containing the amount of bytes to be copied in pCacheData. If pCacheData is NULL, the function will return in this pointer the total amount of bytes required to later perform the copy into pCacheData.", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetCudaModuleCacheNV-pCacheData-09415", + "text": "pCacheData may be a pointer to a buffer in which the binary cache will be copied. The amount of bytes copied is defined by the value in pCacheSize. This pointer may be NULL. In this case, the function will write the total amount of required data in pCacheSize.", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetCudaModuleCacheNV-device-parameter", + "text": "device must be a valid VkDevice handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetCudaModuleCacheNV-module-parameter", + "text": "module must be a valid VkCudaModuleNV handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetCudaModuleCacheNV-pCacheSize-parameter", + "text": "pCacheSize must be a valid pointer to a size_t value", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetCudaModuleCacheNV-pCacheData-parameter", + "text": "If the value referenced by pCacheSize is not 0, and pCacheData is not NULL, pCacheData must be a valid pointer to an array of pCacheSize bytes", + "page": "vkspec" + }, + { + "vuid": "VUID-vkGetCudaModuleCacheNV-module-parent", + "text": "module must have been created, allocated, or retrieved from device", + "page": "vkspec" + } + ] + }, "vkCreateComputePipelines": { "core": [ { @@ -15395,11 +15636,6 @@ "text": "If flags includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM, and if pResolveAttachments is not NULL, then each resolve attachment must be VK_ATTACHMENT_UNUSED", "page": "vkspec" }, - { - "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06575", - "text": "If the pipeline requires pre-rasterization shader state, fragment shader state, or fragment output interface state, renderPass must be VK_NULL_HANDLE or a valid render pass object", - "page": "vkspec" - }, { "vuid": "VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576", "text": "If the dynamicRendering feature is not enabled and the pipeline requires pre-rasterization shader state, fragment shader state, or fragment output interface state, renderPass must not be VK_NULL_HANDLE", @@ -16237,7 +16473,7 @@ }, { "vuid": "VUID-VkGraphicsPipelineCreateInfo-externalFormatResolve-09313", - "text": "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is not VK_NULL_HANDLE, subpass includes an external format resolve attachment, and rasterizationSamples is not dynamic,, VkPipelineMultisampleStateCreateInfo::rasterizationSamples must be VK_SAMPLE_COUNT_1_BIT", + "text": "If the externalFormatResolve feature is enabled, the pipeline requires fragment output interface state, renderPass is not VK_NULL_HANDLE, subpass includes an external format resolve attachment, and rasterizationSamples is not dynamic, VkPipelineMultisampleStateCreateInfo::rasterizationSamples must be VK_SAMPLE_COUNT_1_BIT", "page": "vkspec" }, { @@ -21100,6 +21336,11 @@ "text": "If flags contains VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, imageType must be VK_IMAGE_TYPE_3D", "page": "vkspec" }, + { + "vuid": "VUID-VkImageCreateInfo-flags-09403", + "text": "If flags contains VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, flags must not include VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, VK_IMAGE_CREATE_SPARSE_BINDING_BIT, or VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT", + "page": "vkspec" + }, { "vuid": "VUID-VkImageCreateInfo-flags-07755", "text": "If flags contains VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT, imageType must be VK_IMAGE_TYPE_3D", @@ -26524,7 +26765,7 @@ }, { "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-08004", - "text": "If descriptorType is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK and VkDescriptorSetLayoutCreateInfo::flags does not contain VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT then descriptorCount must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT::maxInlineUniformBlockSize", + "text": "If descriptorType is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK and VkDescriptorSetLayoutCreateInfo::flags does not contain VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT then descriptorCount must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties::maxInlineUniformBlockSize", "page": "vkspec" }, { @@ -26797,7 +27038,7 @@ }, { "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-06939", - "text": "The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set with a descriptorType of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, and VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM accessible to any given shader stage across all elements of pSetLayouts must be less than or equal to VkPhysicalDeviceLimits::maxPerStageDescriptorSampledImages", + "text": "The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set with a descriptorType of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, accessible to any given shader stage across all elements of pSetLayouts must be less than or equal to VkPhysicalDeviceLimits::maxPerStageDescriptorSampledImages", "page": "vkspec" }, { @@ -26812,7 +27053,7 @@ }, { "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214", - "text": "The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set with a descriptorType of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK accessible to any given shader stage across all elements of pSetLayouts must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties::maxPerStageDescriptorInlineUniformBlocks", + "text": "The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set and with a descriptorType of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK accessible to any given shader stage across all elements of pSetLayouts, must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties::maxPerStageDescriptorInlineUniformBlocks", "page": "vkspec" }, { @@ -27283,12 +27524,12 @@ "core": [ { "vuid": "VUID-VkDescriptorSetAllocateInfo-apiVersion-07895", - "text": "If the VK_KHR_maintenance1 extension is not enabled, VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, descriptorSetCount must not be greater than the number of sets that are currently available for allocation in descriptorPool", + "text": "If the VK_KHR_maintenance1 extension is not enabled and VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, descriptorSetCount must not be greater than the number of sets that are currently available for allocation in descriptorPool", "page": "vkspec" }, { "vuid": "VUID-VkDescriptorSetAllocateInfo-apiVersion-07896", - "text": "If the VK_KHR_maintenance1 extension is not enabled, VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, descriptorPool must have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts", + "text": "If the VK_KHR_maintenance1 extension is not enabled and VkPhysicalDeviceProperties::apiVersion is less than Vulkan 1.1, descriptorPool must have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts", "page": "vkspec" }, { @@ -27303,7 +27544,7 @@ }, { "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-09380", - "text": "If pSetLayouts[i] was created with an element of pBindingFlags that includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, and VkDescriptorSetVariableDescriptorCountAllocateInfo is included in the pNext chain, and VkDescriptorSetVariableDescriptorCountAllocateInfo::descriptorSetCount is not zero, then slink::VkDescriptorSetVariableDescriptorCountAllocateInfo::pDescriptorCounts[i] must be less than or equal to slink::VkDescriptorSetLayoutBinding::descriptorCount for the corresponding binding used to create pSetLayouts[i]", + "text": "If pSetLayouts[i] was created with an element of pBindingFlags that includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, and VkDescriptorSetVariableDescriptorCountAllocateInfo is included in the pNext chain, and VkDescriptorSetVariableDescriptorCountAllocateInfo::descriptorSetCount is not zero, then VkDescriptorSetVariableDescriptorCountAllocateInfo::pDescriptorCounts[i] must be less than or equal to VkDescriptorSetLayoutBinding::descriptorCount for the corresponding binding used to create pSetLayouts[i]", "page": "vkspec" }, { @@ -27499,7 +27740,7 @@ }, { "vuid": "VUID-vkUpdateDescriptorSets-None-03047", - "text": "Descriptor bindings updated by this command which were created without the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT or VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT bits set must not be used by any command that was recorded to a command buffer which is in the pending state", + "text": "The dstSet member of each element of pDescriptorWrites or pDescriptorCopies for bindings which were created without the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT or VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT bits set must not be used by any command that was recorded to a command buffer which is in the pending state", "page": "vkspec" }, { @@ -28012,7 +28253,7 @@ }, { "vuid": "VUID-VkCopyDescriptorSet-srcSet-04885", - "text": "If srcSet’s layout was created with neither VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT nor VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT flags set, then dstSet’s layout must have been created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT flag set", + "text": "If srcSet’s layout was created without either the VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT flag or the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT flag set, then dstSet’s layout must have been created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT flag set", "page": "vkspec" }, { @@ -28022,7 +28263,7 @@ }, { "vuid": "VUID-VkCopyDescriptorSet-srcSet-04887", - "text": "If the descriptor pool from which srcSet was allocated was created with neither VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT nor VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT flags set, then the descriptor pool from which dstSet was allocated must have been created without the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set", + "text": "If the descriptor pool from which srcSet was allocated was created without either the VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT flag or the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set, then the descriptor pool from which dstSet was allocated must have been created without the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set", "page": "vkspec" }, { @@ -28752,7 +28993,7 @@ }, { "vuid": "VUID-vkGetDescriptorEXT-dataSize-08125", - "text": "dataSize must equal the size of a descriptor of type VkDescriptorGetInfoEXT::type determined by the value in VkPhysicalDeviceDescriptorBufferPropertiesEXT, or VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT::combinedImageSamplerDensityMapDescriptorSize if pDescriptorInfo specifies a VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER whose VkSampler was created with VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT set", + "text": "dataSize must equal the size of a descriptor of type VkDescriptorGetInfoEXT::type determined by the value in VkPhysicalDeviceDescriptorBufferPropertiesEXT , or determined by VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT::combinedImageSamplerDensityMapDescriptorSize if pDescriptorInfo specifies a VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER whose VkSampler was created with VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT set", "page": "vkspec" }, { @@ -32515,6 +32756,11 @@ "text": "If the queryType used to create queryPool was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the index parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06692", + "text": "If the queryType used to create queryPool was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT and not VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT, the index must be zero", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06689", "text": "If the queryType used to create queryPool was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT the VkCommandPool that commandBuffer was allocated from must support graphics operations", @@ -32530,11 +32776,6 @@ "text": "If the queryType used to create queryPool was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT and the primitivesGeneratedQueryWithNonZeroStreams feature is not enabled, the index parameter must be zero", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06692", - "text": "If the queryType used to create queryPool was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT and not VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT, the index must be zero", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06693", "text": "If the queryType used to create queryPool was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT then primitivesGeneratedQuery must be enabled", @@ -32767,6 +33008,11 @@ }, "vkGetQueryPoolResults": { "core": [ + { + "vuid": "VUID-vkGetQueryPoolResults-None-09401", + "text": "All queries used by the command must not be uninitialized", + "page": "vkspec" + }, { "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813", "text": "firstQuery must be less than the number of queries in queryPool", @@ -32866,6 +33112,11 @@ }, "vkCmdCopyQueryPoolResults": { "core": [ + { + "vuid": "VUID-vkCmdCopyQueryPoolResults-None-09402", + "text": "All queries used by the command must not be uninitialized when the command is executed", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819", "text": "dstOffset must be less than the size of dstBuffer", @@ -34015,11 +34266,6 @@ "text": "aspectMask must not include VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT for any index i", "page": "vkspec" }, - { - "vuid": "VUID-VkClearAttachment-clearValue-00021", - "text": "clearValue must be a valid VkClearValue union", - "page": "vkspec" - }, { "vuid": "VUID-VkClearAttachment-aspectMask-parameter", "text": "aspectMask must be a valid combination of VkImageAspectFlagBits values", @@ -34828,7 +35074,7 @@ }, { "vuid": "VUID-vkCmdCopyImage-srcSubresource-07968", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { @@ -34848,7 +35094,7 @@ }, { "vuid": "VUID-vkCmdCopyImage-dstSubresource-07968", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -35359,7 +35605,7 @@ }, { "vuid": "VUID-VkCopyImageInfo2-srcSubresource-07968", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { @@ -35379,7 +35625,7 @@ }, { "vuid": "VUID-VkCopyImageInfo2-dstSubresource-07968", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -35497,7 +35743,7 @@ }, { "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-07968", - "text": "The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions , if imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -35761,7 +36007,7 @@ }, { "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-07968", - "text": "The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions , if imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { @@ -36188,7 +36434,7 @@ }, { "vuid": "VUID-VkCopyBufferToImageInfo2-imageSubresource-07968", - "text": "The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions , if imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -36481,7 +36727,7 @@ }, { "vuid": "VUID-VkCopyImageToBufferInfo2-imageSubresource-07968", - "text": "The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions , if imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { @@ -36767,7 +37013,7 @@ }, { "vuid": "VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-07968", - "text": "The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions , if imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -37049,7 +37295,7 @@ }, { "vuid": "VUID-VkCopyImageToMemoryInfoEXT-imageSubresource-07968", - "text": "The imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions , if imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If imageSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, imageSubresource.baseArrayLayer + imageSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { @@ -37336,7 +37582,7 @@ }, { "vuid": "VUID-VkCopyImageToImageInfoEXT-srcSubresource-07968", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { @@ -37461,7 +37707,7 @@ }, { "vuid": "VUID-VkCopyImageToImageInfoEXT-dstSubresource-07968", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -38011,12 +38257,12 @@ }, { "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -38373,12 +38619,12 @@ }, { "vuid": "VUID-VkBlitImageInfo2-srcSubresource-01707", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { "vuid": "VUID-VkBlitImageInfo2-dstSubresource-01708", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -38680,12 +38926,12 @@ }, { "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -38992,12 +39238,12 @@ }, { "vuid": "VUID-VkResolveImageInfo2-srcSubresource-01711", - "text": "The srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions , if srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", + "text": "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "page": "vkspec" }, { "vuid": "VUID-VkResolveImageInfo2-dstSubresource-01712", - "text": "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions , if dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS and maintenance5 is not enabled, must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", + "text": "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "page": "vkspec" }, { @@ -39728,7 +39974,7 @@ }, { "vuid": "VUID-vkCmdDraw-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -40078,17 +40324,17 @@ }, { "vuid": "VUID-vkCmdDraw-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40128,7 +40374,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40138,7 +40384,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40148,7 +40394,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40168,7 +40414,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40288,12 +40534,12 @@ }, { "vuid": "VUID-vkCmdDraw-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -40308,17 +40554,17 @@ }, { "vuid": "VUID-vkCmdDraw-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -40343,12 +40589,12 @@ }, { "vuid": "VUID-vkCmdDraw-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40378,7 +40624,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -40398,7 +40644,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -40553,7 +40799,7 @@ }, { "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40783,7 +41029,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40851,6 +41097,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDraw-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -40858,7 +41109,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40868,17 +41119,17 @@ }, { "vuid": "VUID-vkCmdDraw-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40888,17 +41139,17 @@ }, { "vuid": "VUID-vkCmdDraw-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40908,7 +41159,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40958,7 +41209,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -40998,7 +41249,7 @@ }, { "vuid": "VUID-vkCmdDraw-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41061,16 +41312,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDraw-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDraw-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDraw-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -41098,22 +41364,22 @@ }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -41133,7 +41399,7 @@ }, { "vuid": "VUID-vkCmdDraw-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -41146,6 +41412,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDraw-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -41161,6 +41432,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDraw-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDraw-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -41288,7 +41564,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41343,7 +41619,7 @@ }, { "vuid": "VUID-vkCmdDraw-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41361,64 +41637,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDraw-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDraw-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDraw-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDraw-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDraw-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDraw-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41507,7 +41763,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -41857,17 +42113,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41907,7 +42163,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41917,7 +42173,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41927,7 +42183,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -41947,7 +42203,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42067,12 +42323,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -42087,17 +42343,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -42122,12 +42378,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42157,7 +42413,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -42177,7 +42433,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -42332,7 +42588,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42562,7 +42818,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42630,6 +42886,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexed-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -42637,7 +42898,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42647,17 +42908,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42667,17 +42928,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42687,7 +42948,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42737,7 +42998,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42777,7 +43038,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -42840,16 +43101,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -42877,22 +43153,22 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -42912,7 +43188,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -42925,6 +43201,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexed-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -42940,6 +43221,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexed-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -43067,7 +43353,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43122,7 +43408,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexed-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43140,64 +43426,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawIndexed-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawIndexed-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexed-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexed-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexed-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43301,7 +43567,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -43651,17 +43917,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43701,7 +43967,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43711,7 +43977,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43721,7 +43987,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43741,7 +44007,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43861,12 +44127,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -43881,17 +44147,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -43916,12 +44182,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -43951,7 +44217,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -43971,7 +44237,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -44126,7 +44392,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44356,7 +44622,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44424,6 +44690,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -44431,7 +44702,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44441,17 +44712,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44461,17 +44732,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44481,7 +44752,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44531,7 +44802,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44571,7 +44842,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44634,16 +44905,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -44671,22 +44957,22 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -44706,7 +44992,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -44719,6 +45005,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -44734,6 +45025,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -44861,7 +45157,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44916,7 +45212,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -44934,64 +45230,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawMultiEXT-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiEXT-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiEXT-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiEXT-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45100,7 +45376,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -45450,17 +45726,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45500,7 +45776,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45510,7 +45786,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45520,7 +45796,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45540,7 +45816,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45660,12 +45936,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -45680,17 +45956,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -45715,12 +45991,12 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -45750,7 +46026,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -45770,7 +46046,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -45925,7 +46201,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46155,7 +46431,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46223,6 +46499,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -46230,7 +46511,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46240,17 +46521,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46260,17 +46541,17 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46280,7 +46561,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46330,7 +46611,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46370,7 +46651,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46433,16 +46714,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -46470,22 +46766,22 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -46505,7 +46801,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -46518,6 +46814,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -46533,6 +46834,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -46660,7 +46966,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46715,7 +47021,7 @@ }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46733,64 +47039,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -46919,7 +47205,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -47269,17 +47555,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47319,7 +47605,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47329,7 +47615,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47339,7 +47625,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47359,7 +47645,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47479,12 +47765,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -47499,17 +47785,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -47534,12 +47820,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47569,7 +47855,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -47589,7 +47875,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -47744,7 +48030,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -47974,7 +48260,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48042,6 +48328,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirect-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -48049,7 +48340,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48059,17 +48350,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48079,17 +48370,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48099,7 +48390,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48149,7 +48440,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48189,7 +48480,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48252,16 +48543,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -48289,22 +48595,22 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -48324,7 +48630,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -48337,6 +48643,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirect-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -48352,6 +48663,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirect-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -48479,7 +48795,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48519,7 +48835,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirect-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48537,64 +48853,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawIndirect-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawIndirect-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirect-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirect-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirect-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -48752,7 +49048,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -49102,17 +49398,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49152,7 +49448,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49162,7 +49458,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49172,7 +49468,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49192,7 +49488,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49312,12 +49608,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -49332,17 +49628,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -49367,12 +49663,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49402,7 +49698,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -49422,7 +49718,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -49577,7 +49873,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49807,7 +50103,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49875,6 +50171,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -49882,7 +50183,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49892,17 +50193,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49912,17 +50213,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49932,7 +50233,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -49982,7 +50283,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -50022,7 +50323,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -50085,16 +50386,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -50122,22 +50438,22 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -50157,7 +50473,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -50170,6 +50486,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -50185,6 +50506,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -50312,7 +50638,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -50352,7 +50678,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -50370,64 +50696,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawIndirectCount-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectCount-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectCount-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectCount-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -50601,7 +50907,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -50951,17 +51257,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51001,7 +51307,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51011,7 +51317,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51021,7 +51327,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51041,7 +51347,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51161,12 +51467,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -51181,17 +51487,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -51216,12 +51522,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51251,7 +51557,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -51271,7 +51577,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -51426,7 +51732,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51656,7 +51962,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51724,6 +52030,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -51731,7 +52042,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51741,17 +52052,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51761,17 +52072,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51781,7 +52092,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51831,7 +52142,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51871,7 +52182,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -51934,16 +52245,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -51971,22 +52297,22 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -52006,7 +52332,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -52019,6 +52345,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -52034,6 +52365,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -52161,7 +52497,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52201,7 +52537,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52219,64 +52555,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirect-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52449,7 +52765,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -52799,17 +53115,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52849,7 +53165,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52859,7 +53175,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52869,7 +53185,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -52889,7 +53205,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53009,12 +53325,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -53029,17 +53345,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -53064,12 +53380,12 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53099,7 +53415,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -53119,7 +53435,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -53274,7 +53590,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53504,7 +53820,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53572,6 +53888,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -53579,7 +53900,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53589,17 +53910,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53609,17 +53930,17 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53629,7 +53950,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53679,7 +54000,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53719,7 +54040,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -53782,16 +54103,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -53819,22 +54155,22 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -53854,7 +54190,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -53867,6 +54203,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -53882,6 +54223,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -54009,7 +54355,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54049,7 +54395,7 @@ }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54067,64 +54413,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54308,7 +54634,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -54658,17 +54984,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54708,7 +55034,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54718,7 +55044,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54728,7 +55054,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54748,7 +55074,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54868,12 +55194,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -54888,17 +55214,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -54923,12 +55249,12 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -54958,7 +55284,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -54978,7 +55304,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -55133,7 +55459,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55363,7 +55689,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55431,6 +55757,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -55438,7 +55769,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55448,17 +55779,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55468,17 +55799,17 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55488,7 +55819,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55538,7 +55869,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55578,7 +55909,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55641,16 +55972,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -55678,22 +56024,22 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -55713,7 +56059,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -55726,6 +56072,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -55741,6 +56092,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -55868,7 +56224,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55908,7 +56264,7 @@ }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -55926,64 +56282,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56234,7 +56570,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -56584,17 +56920,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56634,7 +56970,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56644,7 +56980,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56654,7 +56990,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56674,7 +57010,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56794,12 +57130,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -56814,17 +57150,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -56849,12 +57185,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -56884,7 +57220,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -56904,7 +57240,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -57059,7 +57395,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57289,7 +57625,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57357,6 +57693,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -57364,7 +57705,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57374,17 +57715,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57394,17 +57735,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57414,7 +57755,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57464,7 +57805,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57504,7 +57845,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57567,16 +57908,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -57604,22 +57960,22 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -57639,7 +57995,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -57652,6 +58008,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -57667,6 +58028,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -57794,7 +58160,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksNV-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -57923,7 +58289,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -58273,17 +58639,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58323,7 +58689,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58333,7 +58699,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58343,7 +58709,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58363,7 +58729,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58483,12 +58849,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -58503,17 +58869,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -58538,12 +58904,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58573,7 +58939,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -58593,7 +58959,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -58748,7 +59114,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -58978,7 +59344,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59046,6 +59412,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -59053,7 +59424,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59063,17 +59434,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59083,17 +59454,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59103,7 +59474,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59153,7 +59524,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59193,7 +59564,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59256,16 +59627,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -59293,22 +59679,22 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -59328,7 +59714,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -59341,6 +59727,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -59356,6 +59747,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -59483,7 +59879,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -59671,7 +60067,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -60021,17 +60417,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60071,7 +60467,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60081,7 +60477,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60091,7 +60487,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60111,7 +60507,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60231,12 +60627,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -60251,17 +60647,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -60286,12 +60682,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60321,7 +60717,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -60341,7 +60737,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -60496,7 +60892,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60726,7 +61122,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60794,6 +61190,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -60801,7 +61202,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60811,17 +61212,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60831,17 +61232,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60851,7 +61252,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60901,7 +61302,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -60941,7 +61342,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -61004,16 +61405,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -61041,22 +61457,22 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -61076,7 +61492,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -61089,6 +61505,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -61104,6 +61525,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -61231,7 +61657,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -61440,7 +61866,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -61790,17 +62216,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -61840,7 +62266,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -61850,7 +62276,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -61860,7 +62286,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -61880,7 +62306,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62000,12 +62426,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -62020,17 +62446,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -62055,12 +62481,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62090,7 +62516,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -62110,7 +62536,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -62265,7 +62691,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62495,7 +62921,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62563,6 +62989,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -62570,7 +63001,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62580,17 +63011,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62600,17 +63031,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62620,7 +63051,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62670,7 +63101,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62710,7 +63141,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -62773,16 +63204,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -62810,22 +63256,22 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -62845,7 +63291,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -62858,6 +63304,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -62873,6 +63324,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -63000,7 +63456,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksEXT-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63164,7 +63620,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -63514,17 +63970,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63564,7 +64020,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63574,7 +64030,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63584,7 +64040,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63604,7 +64060,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63724,12 +64180,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -63744,17 +64200,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -63779,12 +64235,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -63814,7 +64270,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -63834,7 +64290,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -63989,7 +64445,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64219,7 +64675,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64287,6 +64743,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -64294,7 +64755,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64304,17 +64765,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64324,17 +64785,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64344,7 +64805,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64394,7 +64855,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64434,7 +64895,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64497,16 +64958,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -64534,22 +65010,22 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -64569,7 +65045,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -64582,6 +65058,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -64597,6 +65078,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -64724,7 +65210,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -64947,7 +65433,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -65297,17 +65783,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -65347,7 +65833,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -65357,7 +65843,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -65367,7 +65853,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -65387,7 +65873,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -65507,12 +65993,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -65527,17 +66013,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -65562,12 +66048,12 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -65597,7 +66083,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -65617,7 +66103,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -65772,7 +66258,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66002,7 +66488,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66070,6 +66556,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -66077,7 +66568,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66087,17 +66578,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66107,17 +66598,17 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66127,7 +66618,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66177,7 +66668,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66217,7 +66708,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66280,16 +66771,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -66317,22 +66823,22 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -66352,7 +66858,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -66365,6 +66871,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -66380,6 +66891,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -66507,7 +67023,7 @@ }, { "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -66716,7 +67232,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -67066,17 +67582,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67116,7 +67632,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67126,7 +67642,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67136,7 +67652,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67156,7 +67672,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67276,12 +67792,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -67296,17 +67812,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -67331,12 +67847,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67366,7 +67882,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -67386,7 +67902,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -67541,7 +68057,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67771,7 +68287,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67839,6 +68355,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -67846,7 +68367,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67856,17 +68377,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67876,17 +68397,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67896,7 +68417,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67946,7 +68467,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -67986,7 +68507,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68049,16 +68570,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -68086,22 +68622,22 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -68121,7 +68657,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -68134,6 +68670,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -68149,6 +68690,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterHUAWEI-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -68276,7 +68822,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterHUAWEI-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68420,7 +68966,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -68770,17 +69316,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68820,7 +69366,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68830,7 +69376,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68840,7 +69386,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68860,7 +69406,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -68980,12 +69526,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -69000,17 +69546,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -69035,12 +69581,12 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69070,7 +69616,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -69090,7 +69636,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -69245,7 +69791,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69475,7 +70021,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69543,6 +70089,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -69550,7 +70101,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69560,17 +70111,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69580,17 +70131,17 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69600,7 +70151,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69650,7 +70201,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69690,7 +70241,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -69753,16 +70304,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -69790,22 +70356,22 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -69825,7 +70391,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -69838,6 +70404,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -69853,6 +70424,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -69980,7 +70556,7 @@ }, { "vuid": "VUID-vkCmdDrawClusterIndirectHUAWEI-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -70621,8 +71197,8 @@ "vkCmdSetTessellationDomainOriginEXT": { "core": [ { - "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-None-08576", - "text": "Either the extendedDynamicState3TessellationDomainOrigin feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -70956,8 +71532,8 @@ "vkCmdSetViewportSwizzleNV": { "core": [ { - "vuid": "VUID-vkCmdSetViewportSwizzleNV-None-08578", - "text": "Either the extendedDynamicState3ViewportSwizzle feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetViewportSwizzleNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71038,8 +71614,8 @@ "vkCmdSetProvokingVertexModeEXT": { "core": [ { - "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-None-08580", - "text": "Either the extendedDynamicState3ProvokingVertexMode feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetProvokingVertexModeEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71077,8 +71653,8 @@ "vkCmdSetDepthClampEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetDepthClampEnableEXT-None-08582", - "text": "Either the extendedDynamicState3DepthClampEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetDepthClampEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71111,8 +71687,8 @@ "vkCmdSetDepthClipEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetDepthClipEnableEXT-None-08584", - "text": "Either the extendedDynamicState3DepthClipEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetDepthClipEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71159,8 +71735,8 @@ "vkCmdSetDepthClipNegativeOneToOneEXT": { "core": [ { - "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-None-08586", - "text": "Either the extendedDynamicState3DepthClipNegativeOneToOne feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71207,8 +71783,8 @@ "vkCmdSetViewportWScalingEnableNV": { "core": [ { - "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-None-08594", - "text": "Either the extendedDynamicState3ViewportWScalingEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetViewportWScalingEnableNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71780,8 +72356,8 @@ "vkCmdSetRasterizationStreamEXT": { "core": [ { - "vuid": "VUID-vkCmdSetRasterizationStreamEXT-None-08550", - "text": "Either the extendedDynamicState3RasterizationStream feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetRasterizationStreamEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71838,8 +72414,8 @@ "vkCmdSetRasterizationSamplesEXT": { "core": [ { - "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-None-08552", - "text": "Either the extendedDynamicState3RasterizationSamples feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetRasterizationSamplesEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -71910,8 +72486,8 @@ "vkCmdSetSampleLocationsEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-None-08554", - "text": "Either the extendedDynamicState3SampleLocationsEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -72285,8 +72861,8 @@ "vkCmdSetShadingRateImageEnableNV": { "core": [ { - "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-None-08556", - "text": "Either the extendedDynamicState3ShadingRateImageEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetShadingRateImageEnableNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -72572,8 +73148,8 @@ "vkCmdSetLineRasterizationModeEXT": { "core": [ { - "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-None-08558", - "text": "Either the extendedDynamicState3LineRasterizationMode feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetLineRasterizationModeEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -72621,8 +73197,8 @@ "vkCmdSetLineStippleEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetLineStippleEnableEXT-None-08560", - "text": "Either the extendedDynamicState3LineStippleEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetLineStippleEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -72776,8 +73352,8 @@ "vkCmdSetPolygonModeEXT": { "core": [ { - "vuid": "VUID-vkCmdSetPolygonModeEXT-None-08566", - "text": "Either the extendedDynamicState3PolygonMode feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetPolygonModeEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -72984,8 +73560,8 @@ "vkCmdSetConservativeRasterizationModeEXT": { "core": [ { - "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-None-08570", - "text": "Either the extendedDynamicState3ConservativeRasterizationMode feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -73018,8 +73594,8 @@ "vkCmdSetExtraPrimitiveOverestimationSizeEXT": { "core": [ { - "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-None-08572", - "text": "Either the extendedDynamicState3ExtraPrimitiveOverestimationSize feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -73399,8 +73975,8 @@ "vkCmdSetSampleMaskEXT": { "core": [ { - "vuid": "VUID-vkCmdSetSampleMaskEXT-None-08504", - "text": "Either the extendedDynamicState3SampleMask feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetSampleMaskEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -73438,8 +74014,8 @@ "vkCmdSetAlphaToCoverageEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-None-08506", - "text": "Either the extendedDynamicState3AlphaToCoverageEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -73467,8 +74043,8 @@ "vkCmdSetAlphaToOneEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-None-08508", - "text": "Either the extendedDynamicState3AlphaToOneEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -73933,8 +74509,8 @@ "vkCmdSetRepresentativeFragmentTestEnableNV": { "core": [ { - "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-None-08522", - "text": "Either the extendedDynamicState3RepresentativeFragmentTestEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -73981,8 +74557,8 @@ "vkCmdSetCoverageToColorEnableNV": { "core": [ { - "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-None-08524", - "text": "Either the extendedDynamicState3CoverageToColorEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetCoverageToColorEnableNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74010,8 +74586,8 @@ "vkCmdSetCoverageToColorLocationNV": { "core": [ { - "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-None-08526", - "text": "Either the extendedDynamicState3CoverageToColorLocation feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetCoverageToColorLocationNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74058,8 +74634,8 @@ "vkCmdSetCoverageReductionModeNV": { "core": [ { - "vuid": "VUID-vkCmdSetCoverageReductionModeNV-None-08528", - "text": "Either the extendedDynamicState3CoverageReductionMode feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetCoverageReductionModeNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74149,8 +74725,8 @@ "vkCmdSetCoverageModulationModeNV": { "core": [ { - "vuid": "VUID-vkCmdSetCoverageModulationModeNV-None-08530", - "text": "Either the extendedDynamicState3CoverageModulationMode feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetCoverageModulationModeNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74183,8 +74759,8 @@ "vkCmdSetCoverageModulationTableEnableNV": { "core": [ { - "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-None-08532", - "text": "Either the extendedDynamicState3CoverageModulationTableEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74212,8 +74788,8 @@ "vkCmdSetCoverageModulationTableNV": { "core": [ { - "vuid": "VUID-vkCmdSetCoverageModulationTableNV-None-08534", - "text": "Either the extendedDynamicState3CoverageModulationTable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetCoverageModulationTableNV-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74399,8 +74975,8 @@ "vkCmdSetColorBlendEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetColorBlendEnableEXT-None-08536", - "text": "Either the extendedDynamicState3ColorBlendEnable feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetColorBlendEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74438,8 +75014,8 @@ "vkCmdSetColorBlendEquationEXT": { "core": [ { - "vuid": "VUID-vkCmdSetColorBlendEquationEXT-None-08538", - "text": "Either the extendedDynamicState3ColorBlendEquation feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetColorBlendEquationEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74546,8 +75122,8 @@ "vkCmdSetColorWriteMaskEXT": { "core": [ { - "vuid": "VUID-vkCmdSetColorWriteMaskEXT-None-08540", - "text": "Either the extendedDynamicState3ColorWriteMask feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetColorWriteMaskEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74638,8 +75214,8 @@ "vkCmdSetColorBlendAdvancedEXT": { "core": [ { - "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-None-08592", - "text": "Either the extendedDynamicState3ColorBlendAdvanced feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74706,13 +75282,8 @@ "vkCmdSetLogicOpEnableEXT": { "core": [ { - "vuid": "VUID-vkCmdSetLogicOpEnableEXT-None-08542", - "text": "Either the extendedDynamicState3LogicOpEnable feature or the shaderObject feature or both must be enabled", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdSetLogicOpEnableEXT-logicOp-07366", - "text": "If the logicOp feature is not enabled, logicOpEnable must be VK_FALSE", + "vuid": "VUID-vkCmdSetLogicOpEnableEXT-None-09423", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74740,8 +75311,8 @@ "vkCmdSetLogicOpEXT": { "core": [ { - "vuid": "VUID-vkCmdSetLogicOpEXT-None-08544", - "text": "Either the extendedDynamicState2LogicOp feature or the shaderObject feature or both must be enabled", + "vuid": "VUID-vkCmdSetLogicOpEXT-None-09422", + "text": "At least one of the following must be true:
\n\n
", "page": "vkspec" }, { @@ -74922,7 +75493,7 @@ }, { "vuid": "VUID-vkCmdDispatch-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -75296,7 +75867,7 @@ }, { "vuid": "VUID-vkCmdDispatchIndirect-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -75694,7 +76265,7 @@ }, { "vuid": "VUID-vkCmdDispatchBase-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -76088,7 +76659,7 @@ }, { "vuid": "VUID-vkCmdSubpassShadingHUAWEI-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -76388,6 +76959,99 @@ } ] }, + "vkCmdCudaLaunchKernelNV": { + "core": [ + { + "vuid": "VUID-vkCmdCudaLaunchKernelNV-commandBuffer-parameter", + "text": "commandBuffer must be a valid VkCommandBuffer handle", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdCudaLaunchKernelNV-pLaunchInfo-parameter", + "text": "pLaunchInfo must be a valid pointer to a valid VkCudaLaunchInfoNV structure", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdCudaLaunchKernelNV-commandBuffer-recording", + "text": "commandBuffer must be in the recording state", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdCudaLaunchKernelNV-commandBuffer-cmdpool", + "text": "The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations", + "page": "vkspec" + }, + { + "vuid": "VUID-vkCmdCudaLaunchKernelNV-videocoding", + "text": "This command must only be called outside of a video coding scope", + "page": "vkspec" + } + ] + }, + "VkCudaLaunchInfoNV": { + "core": [ + { + "vuid": "VUID-VkCudaLaunchInfoNV-gridDimX-09406", + "text": "gridDimX must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[0]", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-gridDimY-09407", + "text": "gridDimY must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[1]", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-gridDimZ-09408", + "text": "gridDimZ must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[2]", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-paramCount-09409", + "text": "paramCount must be the total amount of parameters listed in the pParams table.", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-pParams-09410", + "text": "pParams must be a pointer to a table of paramCount parameters, corresponding to the arguments of function.", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-extraCount-09411", + "text": "extraCount must be 0", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-pExtras-09412", + "text": "pExtras must be NULL", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-pNext-pNext", + "text": "pNext must be NULL", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-function-parameter", + "text": "function must be a valid VkCudaFunctionNV handle", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-pParams-parameter", + "text": "If paramCount is not 0, and pParams is not NULL, pParams must be a valid pointer to an array of paramCount bytes", + "page": "vkspec" + }, + { + "vuid": "VUID-VkCudaLaunchInfoNV-pExtras-parameter", + "text": "If extraCount is not 0, and pExtras is not NULL, pExtras must be a valid pointer to an array of extraCount bytes", + "page": "vkspec" + } + ] + }, "vkCreateIndirectCommandsLayoutNV": { "core": [ { @@ -76983,7 +77647,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -77333,17 +77997,17 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08617", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08618", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08619", - "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetLineWidth must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -77383,7 +78047,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08623", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilCompareMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -77393,7 +78057,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08624", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilWriteMask must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -77403,7 +78067,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08625", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetStencilTestEnable in the current command buffer set stencilTestEnable to VK_TRUE, vkCmdSetStencilReference must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -77423,7 +78087,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08626", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetSampleLocationsEnableEXT in the current command buffer set sampleLocationsEnable to VK_TRUE, then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -77543,12 +78207,12 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09232", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then vkCmdSetViewportWScalingNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08636", - "text": "If a shader object is bound to any graphics stage, and the VK_NV_clip_space_w_scaling extension is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the VK_NV_clip_space_w_scaling extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetViewportWScalingEnableNV in the current command buffer set viewportWScalingEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -77563,17 +78227,17 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09233", - "text": "If the shadingRateImage feature is enabled, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetCoarseSampleOrderNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-shadingRateImage-09234", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then vkCmdSetViewportShadingRatePaletteNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08637", - "text": "If a shader object is bound to any graphics stage, and the shadingRateImage feature is enabled on the device, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "text": "If the shadingRateImage feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetShadingRateImageEnableNV in the current command buffer set shadingRateImageEnable to VK_TRUE, then the viewportCount parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, { @@ -77598,12 +78262,12 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-exclusiveScissor-09235", - "text": "If a shader object is bound to any graphics stage, and the exclusiveScissor feature is enabled, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, then vkCmdSetExclusiveScissorEnableNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08638", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", + "text": "If the exclusiveScissor feature is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetExclusiveScissorEnableNV in the current command buffer set any element of pExclusiveScissorEnables to VK_TRUE, then vkCmdSetExclusiveScissorNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -77633,7 +78297,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08641", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the logicOp feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLogicOpEnableEXT set logicOpEnable to VK_TRUE, then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp must be a valid VkLogicOp value", "page": "vkspec" }, { @@ -77653,7 +78317,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08643", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then for each color attachment in the render pass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, then the corresponding member of pColorBlendEnables in the most recent call to vkCmdSetColorBlendEnableEXT in the current command buffer that affected that attachment index must have been VK_FALSE", "page": "vkspec" }, { @@ -77808,7 +78472,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09236", - "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78038,7 +78702,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08658", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetColorBlendEnableEXT for any attachment set that attachment’s value in pColorBlendEnables to VK_TRUE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78106,6 +78770,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09416", + "text": "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07636", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT dynamic state enabled then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", @@ -78113,7 +78782,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08665", - "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_provoking_vertex extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetProvokingVertexModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78123,17 +78792,17 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08666", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08667", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08668", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineRasterizationModeEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78143,17 +78812,17 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08669", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPolygonModeEXT in the current command buffer set polygonMode to VK_POLYGON_MODE_LINE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08670", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the vertex stage, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to any line topology, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08671", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the tessellation evaluation or geometry stage, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object that outputs line primitives is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT or VK_SHADER_STAGE_GEOMETRY_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetLineStippleEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78163,7 +78832,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08672", - "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_EXT_line_rasterization extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetLineStippleEnableEXT in the current command buffer set stippledLineEnable to VK_TRUE, then vkCmdSetLineStippleEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78213,7 +78882,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08677", - "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetCoverageToColorEnableNV in the current command buffer set coverageToColorEnable to VK_TRUE, then vkCmdSetCoverageToColorLocationNV must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78253,7 +78922,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipelineFragmentShadingRate-09238", - "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", + "text": "If the pipelineFragmentShadingRate feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetFragmentShadingRateKHR must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78316,16 +78985,31 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09417", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07477", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09418", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07478", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09419", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorWriteMaskEXT calls must specify the color write mask for all active color attachments in the current subpass", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07479", "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendAdvancedEXT calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled", @@ -78353,22 +79037,22 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07484", - "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT bit set", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07485", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07486", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples parameter equaling rasterizationSamples", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07487", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", + "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT state enabled, and if sampleLocationsEnable was VK_TRUE in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample", "page": "vkspec" }, { @@ -78388,7 +79072,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageModulationTableEnable-07488", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", + "text": "If a shader object is bound to any graphics stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV state enabled, and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable to VK_TRUE, then the coverageModulationTableCount parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples divided by the number of color samples in the current subpass", "page": "vkspec" }, { @@ -78401,6 +79085,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09420", + "text": "If the VK_NV_fragment_coverage_to_color extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable to VK_TRUE, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV coverageToColorLocation, with a VkFormat of VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R32_UINT, or VK_FORMAT_R32_SINT", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageReductionMode-07491", "text": "If this VK_NV_coverage_reduction_mode extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT states enabled, the current coverage reduction mode coverageReductionMode, then the current rasterizationSamples, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", @@ -78416,6 +79105,11 @@ "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV dynamic states enabled then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", "page": "vkspec" }, + { + "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-09421", + "text": "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, then the viewportCount parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount parameter in the last call to vkCmdSetViewportWithCount", + "page": "vkspec" + }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07494", "text": "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", @@ -78543,7 +79237,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08880", - "text": "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage and the attachmentFeedbackLoopDynamicState feature is enabled on the device, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", + "text": "If the attachmentFeedbackLoopDynamicState feature is enabled on the device, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetAttachmentFeedbackLoopEnableEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78583,7 +79277,7 @@ }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07842", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state enabled then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -78601,64 +79295,44 @@ "text": "If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides parameter of vkCmdBindVertexBuffers2EXT must not be NULL", "page": "vkspec" }, - { - "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08881", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetPrimitiveTopology must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04914", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-Input-07939", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then all variables with the Input storage class decorated with Location in the Vertex Execution Model OpEntryPoint must contain a location in VkVertexInputAttributeDescription2EXT::location", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-Input-08734", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled then the numeric type associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be the same as VkVertexInputAttributeDescription2EXT::format", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-format-08936", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-format-08937", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-09203", - "text": "If there is a shader object bound to a graphics stage or the currently bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08882", - "text": "If a shader object is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then all Input variables at the corresponding Location in the Vertex Execution Model OpEntryPoint must not use components that are not present in the format", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04875", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-08883", - "text": "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage, then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage and the most recent call to vkCmdSetPrimitiveTopology in the current command buffer set primitiveTopology to VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04879", - "text": "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", - "page": "vkspec" - }, - { - "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-08884", - "text": "If a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", + "text": "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called in the current command buffer prior to this drawing command", "page": "vkspec" }, { @@ -86913,7 +87587,7 @@ }, { "vuid": "VUID-vkCmdTraceRaysNV-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -87402,7 +88076,7 @@ }, { "vuid": "VUID-vkCmdTraceRaysKHR-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -88034,7 +88708,7 @@ }, { "vuid": "VUID-vkCmdTraceRaysIndirectKHR-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -88602,7 +89276,7 @@ }, { "vuid": "VUID-vkCmdTraceRaysIndirect2KHR-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -89157,6 +89831,11 @@ "text": "The dstAddress must be 4 byte aligned", "page": "vkspec" }, + { + "vuid": "VUID-VkDecompressMemoryRegionNV-decompressionMethod-09395", + "text": "If decompressionMethod is VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV, then decompressedSize must be less than or equal to 65536 bytes", + "page": "vkspec" + }, { "vuid": "VUID-VkDecompressMemoryRegionNV-dstAddress-07688", "text": "The memory in range dstAddress and dstAddress + decompressedSize must be valid and bound to a VkDeviceMemory object", @@ -92671,7 +93350,7 @@ }, { "vuid": "VUID-vkCmdDispatchGraphAMDX-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -93090,7 +93769,7 @@ }, { "vuid": "VUID-vkCmdDispatchGraphIndirectAMDX-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -93529,7 +94208,7 @@ }, { "vuid": "VUID-vkCmdDispatchGraphIndirectCountAMDX-cubicRangeClamp-09212", - "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command
\n
\n
must not have a VkSamplerReductionModeCreateInfo
\n
\n

reductionMode equal to\nVK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM

\n
\n
\n
", + "text": "If the cubicRangeClamp feature is not enabled, then any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must not have a VkSamplerReductionModeCreateInfo::reductionMode equal to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM", "page": "vkspec" }, { @@ -95815,6 +96494,15 @@ } ] }, + "VkPhysicalDeviceCudaKernelLaunchFeaturesNV": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceCudaKernelLaunchFeaturesNV-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV", + "page": "vkspec" + } + ] + }, "VkPhysicalDeviceExternalFormatResolveFeaturesANDROID": { "core": [ { @@ -95824,6 +96512,15 @@ } ] }, + "VkPhysicalDeviceSchedulingControlsFeaturesARM": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceSchedulingControlsFeaturesARM-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM", + "page": "vkspec" + } + ] + }, "VkPhysicalDevicePushDescriptorPropertiesKHR": { "core": [ { @@ -96469,6 +97166,15 @@ } ] }, + "VkPhysicalDeviceCudaKernelLaunchPropertiesNV": { + "core": [ + { + "vuid": "VUID-VkPhysicalDeviceCudaKernelLaunchPropertiesNV-sType-sType", + "text": "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV", + "page": "vkspec" + } + ] + }, "VkPhysicalDeviceExternalFormatResolvePropertiesANDROID": { "core": [ { diff --git a/registry/vk.xml b/registry/vk.xml index b3a939b..3d8405a 100644 --- a/registry/vk.xml +++ b/registry/vk.xml @@ -175,7 +175,7 @@ branch of the member gitlab server. #define VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 268 +#define VK_HEADER_VERSION 269 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) // Version of this file @@ -482,6 +482,7 @@ typedef void* MTLSharedEvent_id; typedef VkFlags VkPresentScalingFlagsEXT; typedef VkFlags VkPresentGravityFlagsEXT; typedef VkFlags VkShaderCreateFlagsEXT; + typedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagsARM; Video Core extension typedef VkFlags VkVideoCodecOperationFlagsKHR; @@ -867,6 +868,7 @@ typedef void* MTLSharedEvent_id; + Enumerated types in the header, but not used by the API @@ -7599,6 +7601,36 @@ typedef void* MTLSharedEvent_id; uint32_t minBufferCountForDedicatedSlack uint32_t minBufferCountForSharedSlack + VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaModuleNV) + VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaFunctionNV) + + VkStructureType sType + const void* pNext + size_t dataSize + const void* pData + + + VkStructureType sType + const void* pNext + VkCudaModuleNV module + const char* pName + + + VkStructureType sType + const void* pNext + VkCudaFunctionNV function + uint32_t gridDimX + uint32_t gridDimY + uint32_t gridDimZ + uint32_t blockDimX + uint32_t blockDimY + uint32_t blockDimZ + uint32_t sharedMemBytes + size_t paramCount + const void* const * pParams + size_t extraCount + const void* const * pExtras + VkStructureType sType void* pNext @@ -8776,9 +8808,35 @@ typedef void* MTLSharedEvent_id; VkStructureType sType const void* pNext - uint32_t presentModeCount + uint32_t presentModeCount VkPresentModeKHR* pPresentModes + + VkStructureType sType + void* pNext + VkBool32 cudaKernelLaunchFeatures + + + VkStructureType sType + void* pNext + uint32_t computeCapabilityMinor + uint32_t computeCapabilityMajor + + + VkStructureType sType + void* pNext + uint32_t shaderCoreCount + + + VkStructureType sType + void* pNext + VkBool32 schedulingControls + + + VkStructureType sType + void* pNext + VkPhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags + @@ -10436,6 +10494,9 @@ typedef void* MTLSharedEvent_id; + + + @@ -13748,7 +13809,7 @@ typedef void* MTLSharedEvent_id; VkDevice device VkFaultQueryBehavior faultQueryBehavior VkBool32* pUnrecordedFaults - uint32_t* pFaultCount + uint32_t* pFaultCount VkFaultData* pFaults @@ -14596,6 +14657,44 @@ typedef void* MTLSharedEvent_id; VkBufferCollectionFUCHSIA collection VkBufferCollectionPropertiesFUCHSIA* pProperties + + VkResult vkCreateCudaModuleNV + VkDevice device + const VkCudaModuleCreateInfoNV* pCreateInfo + const VkAllocationCallbacks* pAllocator + VkCudaModuleNV* pModule + + + VkResult vkGetCudaModuleCacheNV + VkDevice device + VkCudaModuleNV module + size_t* pCacheSize + void* pCacheData + + + VkResult vkCreateCudaFunctionNV + VkDevice device + const VkCudaFunctionCreateInfoNV* pCreateInfo + const VkAllocationCallbacks* pAllocator + VkCudaFunctionNV* pFunction + + + void vkDestroyCudaModuleNV + VkDevice device + VkCudaModuleNV module + const VkAllocationCallbacks* pAllocator + + + void vkDestroyCudaFunctionNV + VkDevice device + VkCudaFunctionNV function + const VkAllocationCallbacks* pAllocator + + + void vkCmdCudaLaunchKernelNV + VkCommandBuffer commandBuffer + const VkCudaLaunchInfoNV* pLaunchInfo + void vkCmdBeginRendering VkCommandBuffer commandBuffer @@ -20698,10 +20797,32 @@ typedef void* MTLSharedEvent_id; - + - - + + + + + + + + + + + + + + + + + + + + + + + + @@ -22067,10 +22188,18 @@ typedef void* MTLSharedEvent_id; - + - - + + + + + + + + + + @@ -22683,8 +22812,8 @@ typedef void* MTLSharedEvent_id; - - + +