vulkan-2.1.0.0: src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
{-# language Strict #-}
{-# language CPP #-}
{-# language GeneralizedNewtypeDeriving #-}
{-# language PatternSynonyms #-}
{-# language OverloadedStrings #-}
{-# language DuplicateRecordFields #-}
module Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing
( VkDescriptorBindingFlagBitsEXT(..)
, pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
, pattern VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
, pattern VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
, pattern VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
, pattern VK_ERROR_FRAGMENTATION_EXT
, pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT
, pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT
, pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT
, pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT
, pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT
, pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
, pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
, pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION
, pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
, VkPhysicalDeviceDescriptorIndexingFeaturesEXT(..)
, VkPhysicalDeviceDescriptorIndexingPropertiesEXT(..)
, VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(..)
, VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(..)
, VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(..)
, VkDescriptorBindingFlagsEXT
) where
import Data.Bits
( Bits
, FiniteBits
)
import Data.String
( IsString
)
import Data.Word
( Word32
)
import Foreign.Ptr
( Ptr
, plusPtr
)
import Foreign.Storable
( Storable
, Storable(..)
)
import GHC.Read
( choose
, expectP
)
import Text.ParserCombinators.ReadPrec
( (+++)
, prec
, step
)
import Text.Read
( Read(..)
, parens
)
import Text.Read.Lex
( Lexeme(Ident)
)
import Graphics.Vulkan.Core10.Core
( VkBool32(..)
, VkResult(..)
, VkStructureType(..)
, VkFlags
)
import Graphics.Vulkan.Core10.DescriptorSet
( VkDescriptorPoolCreateFlagBits(..)
, VkDescriptorSetLayoutCreateFlagBits(..)
)
-- ** VkDescriptorBindingFlagBitsEXT
-- | VkDescriptorBindingFlagBitsEXT - Bitmask specifying descriptor set
-- layout binding properties
--
-- = Description
--
-- - @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ indicates that if
-- descriptors in this binding are updated between when the descriptor
-- set is bound in a command buffer and when that command buffer is
-- submitted to a queue, then the submission will use the most recently
-- set descriptors for this binding and the updates do not invalidate
-- the command buffer. Descriptor bindings created with this flag are
-- also partially exempt from the external synchronization requirement
-- in
-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR'
-- and 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets'.
-- They /can/ be updated concurrently with the set being bound to a
-- command buffer in another thread, but not concurrently with the set
-- being reset or freed.
--
-- - @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ indicates that
-- descriptors in this binding that are not /dynamically used/ need not
-- contain valid descriptors at the time the descriptors are consumed.
-- A descriptor is dynamically used if any shader invocation executes
-- an instruction that performs any memory access using the descriptor.
--
-- - @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@
-- indicates that descriptors in this binding /can/ be updated after a
-- command buffer has bound this descriptor set, or while a command
-- buffer that uses this descriptor set is pending execution, as long
-- as the descriptors that are updated are not used by those command
-- buffers. If @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ is also
-- set, then descriptors /can/ be updated as long as they are not
-- dynamically used by any shader invocations. If
-- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ is not set, then
-- descriptors /can/ be updated as long as they are not statically used
-- by any shader invocations.
--
-- - @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@ indicates
-- that this descriptor binding has a variable size that will be
-- specified when a descriptor set is allocated using this layout. The
-- value of @descriptorCount@ is treated as an upper bound on the size
-- of the binding. This /must/ only be used for the last binding in the
-- descriptor set layout (i.e. the binding with the largest value of
-- @binding@). For the purposes of counting against limits such as
-- @maxDescriptorSet@* and @maxPerStageDescriptor@*, the full value of
-- @descriptorCount@ is counted.
--
-- __Note__
--
-- Note that while @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ and
-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ both involve
-- updates to descriptor sets after they are bound,
-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ is a weaker
-- requirement since it is only about descriptors that are not used,
-- whereas @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ requires the
-- implementation to observe updates to descriptors that are used.
--
-- = See Also
--
-- 'VkDescriptorBindingFlagsEXT'
newtype VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBitsEXT VkFlags
deriving (Eq, Ord, Storable, Bits, FiniteBits)
instance Show VkDescriptorBindingFlagBitsEXT where
showsPrec _ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"
showsPrec _ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"
showsPrec _ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"
showsPrec _ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"
showsPrec p (VkDescriptorBindingFlagBitsEXT x) = showParen (p >= 11) (showString "VkDescriptorBindingFlagBitsEXT " . showsPrec 11 x)
instance Read VkDescriptorBindingFlagBitsEXT where
readPrec = parens ( choose [ ("VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT", pure VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT)
, ("VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT", pure VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT)
, ("VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT", pure VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT)
, ("VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT", pure VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT)
] +++
prec 10 (do
expectP (Ident "VkDescriptorBindingFlagBitsEXT")
v <- step readPrec
pure (VkDescriptorBindingFlagBitsEXT v)
)
)
-- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"
pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT :: VkDescriptorBindingFlagBitsEXT
pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000001
-- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"
pattern VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT :: VkDescriptorBindingFlagBitsEXT
pattern VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000002
-- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"
pattern VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT :: VkDescriptorBindingFlagBitsEXT
pattern VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000004
-- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"
pattern VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT :: VkDescriptorBindingFlagBitsEXT
pattern VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000008
-- No documentation found for Nested "VkResult" "VK_ERROR_FRAGMENTATION_EXT"
pattern VK_ERROR_FRAGMENTATION_EXT :: VkResult
pattern VK_ERROR_FRAGMENTATION_EXT = VkResult (-1000161000)
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"
pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VkStructureType 1000161000
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"
pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VkStructureType 1000161001
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"
pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VkStructureType 1000161002
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"
pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VkStructureType 1000161003
-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"
pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT :: VkStructureType
pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VkStructureType 1000161004
-- | @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@
-- specifies that descriptor sets using this layout /must/ be allocated
-- from a descriptor pool created with the
-- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ bit set.
-- Descriptor set layouts created with this bit set have alternate limits
-- for the maximum number of descriptors per-stage and per-pipeline layout.
-- The non-UpdateAfterBind limits only count descriptors in sets created
-- without this flag. The UpdateAfterBind limits count all descriptors, but
-- the limits /may/ be higher than the non-UpdateAfterBind limits.
pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT :: VkDescriptorSetLayoutCreateFlagBits
pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VkDescriptorSetLayoutCreateFlagBits 0x00000002
-- | @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ specifies that
-- descriptor sets allocated from this pool /can/ include bindings with the
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set. It is valid
-- to allocate descriptor sets that have bindings that don’t set the
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit from a pool that
-- has @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ set.
pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT :: VkDescriptorPoolCreateFlagBits
pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VkDescriptorPoolCreateFlagBits 0x00000002
-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"
pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION :: Integral a => a
pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2
-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"
pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME :: (Eq a ,IsString a) => a
pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing"
-- | VkPhysicalDeviceDescriptorIndexingFeaturesEXT - Structure describing
-- descriptor indexing features that can be supported by an implementation
--
-- = Members
--
-- The members of the @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@
-- structure describe the following features:
--
-- = Description
--
-- - @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays
-- of input attachments /can/ be indexed by dynamically uniform integer
-- expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ /must/ be indexed only by
-- constant integral expressions when aggregated into arrays in shader
-- code. This also indicates whether shader modules /can/ declare the
-- @InputAttachmentArrayDynamicIndexingEXT@ capability.
--
-- - @shaderUniformTexelBufferArrayDynamicIndexing@ indicates whether
-- arrays of uniform texel buffers /can/ be indexed by dynamically
-- uniform integer expressions in shader code. If this feature is not
-- enabled, resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ /must/ be indexed only by
-- constant integral expressions when aggregated into arrays in shader
-- code. This also indicates whether shader modules /can/ declare the
-- @UniformTexelBufferArrayDynamicIndexingEXT@ capability.
--
-- - @shaderStorageTexelBufferArrayDynamicIndexing@ indicates whether
-- arrays of storage texel buffers /can/ be indexed by dynamically
-- uniform integer expressions in shader code. If this feature is not
-- enabled, resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ /must/ be indexed only by
-- constant integral expressions when aggregated into arrays in shader
-- code. This also indicates whether shader modules /can/ declare the
-- @StorageTexelBufferArrayDynamicIndexingEXT@ capability.
--
-- - @shaderUniformBufferArrayNonUniformIndexing@ indicates whether
-- arrays of uniform buffers /can/ be indexed by non-uniform integer
-- expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or
-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @UniformBufferArrayNonUniformIndexingEXT@ capability.
--
-- - @shaderSampledImageArrayNonUniformIndexing@ indicates whether arrays
-- of samplers or sampled images /can/ be indexed by non-uniform
-- integer expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of @VK_DESCRIPTOR_TYPE_SAMPLER@,
-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or
-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @SampledImageArrayNonUniformIndexingEXT@ capability.
--
-- - @shaderStorageBufferArrayNonUniformIndexing@ indicates whether
-- arrays of storage buffers /can/ be indexed by non-uniform integer
-- expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or
-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @StorageBufferArrayNonUniformIndexingEXT@ capability.
--
-- - @shaderStorageImageArrayNonUniformIndexing@ indicates whether arrays
-- of storage images /can/ be indexed by non-uniform integer
-- expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @StorageImageArrayNonUniformIndexingEXT@ capability.
--
-- - @shaderInputAttachmentArrayNonUniformIndexing@ indicates whether
-- arrays of input attachments /can/ be indexed by non-uniform integer
-- expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @InputAttachmentArrayNonUniformIndexingEXT@ capability.
--
-- - @shaderUniformTexelBufferArrayNonUniformIndexing@ indicates whether
-- arrays of uniform texel buffers /can/ be indexed by non-uniform
-- integer expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @UniformTexelBufferArrayNonUniformIndexingEXT@
-- capability.
--
-- - @shaderStorageTexelBufferArrayNonUniformIndexing@ indicates whether
-- arrays of storage texel buffers /can/ be indexed by non-uniform
-- integer expressions in shader code. If this feature is not enabled,
-- resources with a descriptor type of
-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ /must/ not be indexed by
-- non-uniform integer expressions when aggregated into arrays in
-- shader code. This also indicates whether shader modules /can/
-- declare the @StorageTexelBufferArrayNonUniformIndexingEXT@
-- capability.
--
-- - @descriptorBindingUniformBufferUpdateAfterBind@ indicates whether
-- the implementation supports updating uniform buffer descriptors
-- after a set is bound. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used
-- with @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@.
--
-- - @descriptorBindingSampledImageUpdateAfterBind@ indicates whether the
-- implementation supports updating sampled image descriptors after a
-- set is bound. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used
-- with @VK_DESCRIPTOR_TYPE_SAMPLER@,
-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or
-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@.
--
-- - @descriptorBindingStorageImageUpdateAfterBind@ indicates whether the
-- implementation supports updating storage image descriptors after a
-- set is bound. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used
-- with @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@.
--
-- - @descriptorBindingStorageBufferUpdateAfterBind@ indicates whether
-- the implementation supports updating storage buffer descriptors
-- after a set is bound. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used
-- with @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@.
--
-- - @descriptorBindingUniformTexelBufferUpdateAfterBind@ indicates
-- whether the implementation supports updating uniform texel buffer
-- descriptors after a set is bound. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used
-- with @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@.
--
-- - @descriptorBindingStorageTexelBufferUpdateAfterBind@ indicates
-- whether the implementation supports updating storage texel buffer
-- descriptors after a set is bound. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used
-- with @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@.
--
-- - @descriptorBindingUpdateUnusedWhilePending@ indicates whether the
-- implementation supports updating descriptors while the set is in
-- use. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ /must/
-- not be used.
--
-- - @descriptorBindingPartiallyBound@ indicates whether the
-- implementation supports statically using a descriptor set binding in
-- which some descriptors are not valid. If this feature is not
-- enabled, @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ /must/ not
-- be used.
--
-- - @descriptorBindingVariableDescriptorCount@ indicates whether the
-- implementation supports descriptor sets with a variable-sized last
-- binding. If this feature is not enabled,
-- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@ /must/ not
-- be used.
--
-- - @runtimeDescriptorArray@ indicates whether the implementation
-- supports the SPIR-V RuntimeDescriptorArrayEXT capability. If this
-- feature is not enabled, descriptors /must/ not be declared in
-- runtime arrays.
--
-- If the @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@ structure is
-- included in the @pNext@ chain of
-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2KHR',
-- it is filled with values indicating whether each feature is supported.
-- @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@ /can/ also be used in
-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo'
-- to enable features.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT@
--
-- = See Also
--
-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeaturesEXT
{ -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "sType"
vkSType :: VkStructureType
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "pNext"
vkPNext :: Ptr ()
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderInputAttachmentArrayDynamicIndexing"
vkShaderInputAttachmentArrayDynamicIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformTexelBufferArrayDynamicIndexing"
vkShaderUniformTexelBufferArrayDynamicIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageTexelBufferArrayDynamicIndexing"
vkShaderStorageTexelBufferArrayDynamicIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformBufferArrayNonUniformIndexing"
vkShaderUniformBufferArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderSampledImageArrayNonUniformIndexing"
vkShaderSampledImageArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageBufferArrayNonUniformIndexing"
vkShaderStorageBufferArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageImageArrayNonUniformIndexing"
vkShaderStorageImageArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderInputAttachmentArrayNonUniformIndexing"
vkShaderInputAttachmentArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformTexelBufferArrayNonUniformIndexing"
vkShaderUniformTexelBufferArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageTexelBufferArrayNonUniformIndexing"
vkShaderStorageTexelBufferArrayNonUniformIndexing :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUniformBufferUpdateAfterBind"
vkDescriptorBindingUniformBufferUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingSampledImageUpdateAfterBind"
vkDescriptorBindingSampledImageUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageImageUpdateAfterBind"
vkDescriptorBindingStorageImageUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageBufferUpdateAfterBind"
vkDescriptorBindingStorageBufferUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUniformTexelBufferUpdateAfterBind"
vkDescriptorBindingUniformTexelBufferUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageTexelBufferUpdateAfterBind"
vkDescriptorBindingStorageTexelBufferUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUpdateUnusedWhilePending"
vkDescriptorBindingUpdateUnusedWhilePending :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingPartiallyBound"
vkDescriptorBindingPartiallyBound :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingVariableDescriptorCount"
vkDescriptorBindingVariableDescriptorCount :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "runtimeDescriptorArray"
vkRuntimeDescriptorArray :: VkBool32
}
deriving (Eq, Show)
instance Storable VkPhysicalDeviceDescriptorIndexingFeaturesEXT where
sizeOf ~_ = 96
alignment ~_ = 8
peek ptr = VkPhysicalDeviceDescriptorIndexingFeaturesEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 44)
<*> peek (ptr `plusPtr` 48)
<*> peek (ptr `plusPtr` 52)
<*> peek (ptr `plusPtr` 56)
<*> peek (ptr `plusPtr` 60)
<*> peek (ptr `plusPtr` 64)
<*> peek (ptr `plusPtr` 68)
<*> peek (ptr `plusPtr` 72)
<*> peek (ptr `plusPtr` 76)
<*> peek (ptr `plusPtr` 80)
<*> peek (ptr `plusPtr` 84)
<*> peek (ptr `plusPtr` 88)
<*> peek (ptr `plusPtr` 92)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 16) (vkShaderInputAttachmentArrayDynamicIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 20) (vkShaderUniformTexelBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 24) (vkShaderStorageTexelBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 28) (vkShaderUniformBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 32) (vkShaderSampledImageArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 36) (vkShaderStorageBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 40) (vkShaderStorageImageArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 44) (vkShaderInputAttachmentArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 48) (vkShaderUniformTexelBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 52) (vkShaderStorageTexelBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 56) (vkDescriptorBindingUniformBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 60) (vkDescriptorBindingSampledImageUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 64) (vkDescriptorBindingStorageImageUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 68) (vkDescriptorBindingStorageBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 72) (vkDescriptorBindingUniformTexelBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 76) (vkDescriptorBindingStorageTexelBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 80) (vkDescriptorBindingUpdateUnusedWhilePending (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 84) (vkDescriptorBindingPartiallyBound (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 88) (vkDescriptorBindingVariableDescriptorCount (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
*> poke (ptr `plusPtr` 92) (vkRuntimeDescriptorArray (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))
-- | VkPhysicalDeviceDescriptorIndexingPropertiesEXT - Structure describing
-- descriptor indexing properties that can be supported by an
-- implementation
--
-- = Members
--
-- The members of the @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@
-- structure describe the following implementation-dependent limits:
--
-- = Description
--
-- - @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of
-- descriptors (summed over all descriptor types) that /can/ be created
-- across all pools that are created with the
-- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ bit set. Pool
-- creation /may/ fail when this limit is exceeded, or when the space
-- this limit represents can’t satisfy a pool creation due to
-- fragmentation.
--
-- - @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean
-- value indicating whether uniform buffer descriptors natively support
-- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic
-- instance of an instruction that nonuniformly indexes an array of
-- uniform buffers /may/ execute multiple times in order to access all
-- the descriptors.
--
-- - @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value
-- indicating whether sampler and image descriptors natively support
-- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic
-- instance of an instruction that nonuniformly indexes an array of
-- samplers or images /may/ execute multiple times in order to access
-- all the descriptors.
--
-- - @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean
-- value indicating whether storage buffer descriptors natively support
-- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic
-- instance of an instruction that nonuniformly indexes an array of
-- storage buffers /may/ execute multiple times in order to access all
-- the descriptors.
--
-- - @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value
-- indicating whether storage image descriptors natively support
-- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic
-- instance of an instruction that nonuniformly indexes an array of
-- storage images /may/ execute multiple times in order to access all
-- the descriptors.
--
-- - @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean
-- value indicating whether input attachment descriptors natively
-- support nonuniform indexing. If this is @VK_FALSE@, then a single
-- dynamic instance of an instruction that nonuniformly indexes an
-- array of input attachments /may/ execute multiple times in order to
-- access all the descriptors.
--
-- - @robustBufferAccessUpdateAfterBind@ is a boolean value indicating
-- whether
-- [@robustBufferAccess@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)
-- /can/ be enabled in a device simultaneously with
-- @descriptorBindingUniformBufferUpdateAfterBind@,
-- @descriptorBindingStorageBufferUpdateAfterBind@,
-- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or
-- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is
-- @VK_FALSE@, then either @robustBufferAccess@ /must/ be disabled or
-- all of these update-after-bind features /must/ be disabled.
--
-- - @quadDivergentImplicitLod@ is a boolean value indicating whether
-- implicit level of detail calculations for image operations have
-- well-defined results when the image and\/or sampler objects used for
-- the instruction are not uniform within a quad. See [Derivative Image
-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-derivative-image-operations).
--
-- - @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to
-- @maxPerStageDescriptorSamplers@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxPerStageDescriptorUpdateAfterBindUniformBuffers@ is similar to
-- @maxPerStageDescriptorUniformBuffers@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxPerStageDescriptorUpdateAfterBindStorageBuffers@ is similar to
-- @maxPerStageDescriptorStorageBuffers@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxPerStageDescriptorUpdateAfterBindSampledImages@ is similar to
-- @maxPerStageDescriptorSampledImages@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxPerStageDescriptorUpdateAfterBindStorageImages@ is similar to
-- @maxPerStageDescriptorStorageImages@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxPerStageDescriptorUpdateAfterBindInputAttachments@ is similar to
-- @maxPerStageDescriptorInputAttachments@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxPerStageUpdateAfterBindResources@ is similar to
-- @maxPerStageResources@ but counts descriptors from descriptor sets
-- created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindSamplers@ is similar to
-- @maxDescriptorSetSamplers@ but counts descriptors from descriptor
-- sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindUniformBuffers@ is similar to
-- @maxDescriptorSetUniformBuffers@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ is similar to
-- @maxDescriptorSetUniformBuffersDynamic@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindStorageBuffers@ is similar to
-- @maxDescriptorSetStorageBuffers@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ is similar to
-- @maxDescriptorSetStorageBuffersDynamic@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindSampledImages@ is similar to
-- @maxDescriptorSetSampledImages@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindStorageImages@ is similar to
-- @maxDescriptorSetStorageImages@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- - @maxDescriptorSetUpdateAfterBindInputAttachments@ is similar to
-- @maxDescriptorSetInputAttachments@ but counts descriptors from
-- descriptor sets created with or without the
-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit
-- set.
--
-- If the @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@ structure is
-- included in the @pNext@ chain of
-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2KHR',
-- it is filled with the implementation-dependent limits.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT@
--
-- = See Also
--
-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingPropertiesEXT
{ -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "sType"
vkSType :: VkStructureType
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "pNext"
vkPNext :: Ptr ()
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxUpdateAfterBindDescriptorsInAllPools"
vkMaxUpdateAfterBindDescriptorsInAllPools :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderUniformBufferArrayNonUniformIndexingNative"
vkShaderUniformBufferArrayNonUniformIndexingNative :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderSampledImageArrayNonUniformIndexingNative"
vkShaderSampledImageArrayNonUniformIndexingNative :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderStorageBufferArrayNonUniformIndexingNative"
vkShaderStorageBufferArrayNonUniformIndexingNative :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderStorageImageArrayNonUniformIndexingNative"
vkShaderStorageImageArrayNonUniformIndexingNative :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderInputAttachmentArrayNonUniformIndexingNative"
vkShaderInputAttachmentArrayNonUniformIndexingNative :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "robustBufferAccessUpdateAfterBind"
vkRobustBufferAccessUpdateAfterBind :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "quadDivergentImplicitLod"
vkQuadDivergentImplicitLod :: VkBool32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindSamplers"
vkMaxPerStageDescriptorUpdateAfterBindSamplers :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
vkMaxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
vkMaxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindSampledImages"
vkMaxPerStageDescriptorUpdateAfterBindSampledImages :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindStorageImages"
vkMaxPerStageDescriptorUpdateAfterBindStorageImages :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindInputAttachments"
vkMaxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageUpdateAfterBindResources"
vkMaxPerStageUpdateAfterBindResources :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindSamplers"
vkMaxDescriptorSetUpdateAfterBindSamplers :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindUniformBuffers"
vkMaxDescriptorSetUpdateAfterBindUniformBuffers :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
vkMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageBuffers"
vkMaxDescriptorSetUpdateAfterBindStorageBuffers :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
vkMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindSampledImages"
vkMaxDescriptorSetUpdateAfterBindSampledImages :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageImages"
vkMaxDescriptorSetUpdateAfterBindStorageImages :: Word32
, -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindInputAttachments"
vkMaxDescriptorSetUpdateAfterBindInputAttachments :: Word32
}
deriving (Eq, Show)
instance Storable VkPhysicalDeviceDescriptorIndexingPropertiesEXT where
sizeOf ~_ = 112
alignment ~_ = 8
peek ptr = VkPhysicalDeviceDescriptorIndexingPropertiesEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 20)
<*> peek (ptr `plusPtr` 24)
<*> peek (ptr `plusPtr` 28)
<*> peek (ptr `plusPtr` 32)
<*> peek (ptr `plusPtr` 36)
<*> peek (ptr `plusPtr` 40)
<*> peek (ptr `plusPtr` 44)
<*> peek (ptr `plusPtr` 48)
<*> peek (ptr `plusPtr` 52)
<*> peek (ptr `plusPtr` 56)
<*> peek (ptr `plusPtr` 60)
<*> peek (ptr `plusPtr` 64)
<*> peek (ptr `plusPtr` 68)
<*> peek (ptr `plusPtr` 72)
<*> peek (ptr `plusPtr` 76)
<*> peek (ptr `plusPtr` 80)
<*> peek (ptr `plusPtr` 84)
<*> peek (ptr `plusPtr` 88)
<*> peek (ptr `plusPtr` 92)
<*> peek (ptr `plusPtr` 96)
<*> peek (ptr `plusPtr` 100)
<*> peek (ptr `plusPtr` 104)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 16) (vkMaxUpdateAfterBindDescriptorsInAllPools (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 20) (vkShaderUniformBufferArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 24) (vkShaderSampledImageArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 28) (vkShaderStorageBufferArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 32) (vkShaderStorageImageArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 36) (vkShaderInputAttachmentArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 40) (vkRobustBufferAccessUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 44) (vkQuadDivergentImplicitLod (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 48) (vkMaxPerStageDescriptorUpdateAfterBindSamplers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 52) (vkMaxPerStageDescriptorUpdateAfterBindUniformBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 56) (vkMaxPerStageDescriptorUpdateAfterBindStorageBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 60) (vkMaxPerStageDescriptorUpdateAfterBindSampledImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 64) (vkMaxPerStageDescriptorUpdateAfterBindStorageImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 68) (vkMaxPerStageDescriptorUpdateAfterBindInputAttachments (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 72) (vkMaxPerStageUpdateAfterBindResources (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 76) (vkMaxDescriptorSetUpdateAfterBindSamplers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 80) (vkMaxDescriptorSetUpdateAfterBindUniformBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 84) (vkMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 88) (vkMaxDescriptorSetUpdateAfterBindStorageBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 92) (vkMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 96) (vkMaxDescriptorSetUpdateAfterBindSampledImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 100) (vkMaxDescriptorSetUpdateAfterBindStorageImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
*> poke (ptr `plusPtr` 104) (vkMaxDescriptorSetUpdateAfterBindInputAttachments (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))
-- | VkDescriptorSetLayoutBindingFlagsCreateInfoEXT - Structure specifying
-- creation flags for descriptor set layout bindings
--
-- = Description
--
-- If @bindingCount@ is zero or if this structure is not in the @pNext@
-- chain, the 'VkDescriptorBindingFlagsEXT' for each descriptor set layout
-- binding is considered to be zero. Otherwise, the descriptor set layout
-- binding at
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@pBindings@[i]
-- uses the flags in @pBindingFlags@[i].
--
-- == Valid Usage
--
-- - If @bindingCount@ is not zero, @bindingCount@ /must/ equal
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@bindingCount@
--
-- - If
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@flags@
-- includes @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@,
-- then all elements of @pBindingFlags@ /must/ not include
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@,
-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@, or
-- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@
--
-- - If an element of @pBindingFlags@ includes
-- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@, then all
-- other elements of
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@pBindings@
-- /must/ have a smaller value of @binding@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingUniformBufferUpdateAfterBind@
-- is not enabled, all bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingSampledImageUpdateAfterBind@
-- is not enabled, all bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_SAMPLER@,
-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or
-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingStorageImageUpdateAfterBind@
-- is not enabled, all bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingStorageBufferUpdateAfterBind@
-- is not enabled, all bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingUniformTexelBufferUpdateAfterBind@
-- is not enabled, all bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingStorageTexelBufferUpdateAfterBind@
-- is not enabled, all bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - All bindings with descriptor type
-- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@,
-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, or
-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ not use
-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingUpdateUnusedWhilePending@
-- is not enabled, all elements of @pBindingFlags@ /must/ not include
-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingPartiallyBound@
-- is not enabled, all elements of @pBindingFlags@ /must/ not include
-- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@
--
-- - If
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingVariableDescriptorCount@
-- is not enabled, all elements of @pBindingFlags@ /must/ not include
-- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@
--
-- - If an element of @pBindingFlags@ includes
-- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@, that
-- element’s @descriptorType@ /must/ not be
-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ or
-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT@
--
-- - If @bindingCount@ is not @0@, @pBindingFlags@ /must/ be a valid
-- pointer to an array of @bindingCount@ valid combinations of
-- 'VkDescriptorBindingFlagBitsEXT' values
--
-- - Each element of @pBindingFlags@ /must/ not be @0@
--
-- = See Also
--
-- 'VkDescriptorBindingFlagsEXT',
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @bindingCount@ is zero or the number of elements in @pBindingFlags@.
vkBindingCount :: Word32
, -- | @pBindingFlags@ is a pointer to an array of
-- 'VkDescriptorBindingFlagsEXT' bitfields, one for each descriptor set
-- layout binding.
vkPBindingFlags :: Ptr VkDescriptorBindingFlagsEXT
}
deriving (Eq, Show)
instance Storable VkDescriptorSetLayoutBindingFlagsCreateInfoEXT where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkDescriptorSetLayoutBindingFlagsCreateInfoEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))
*> poke (ptr `plusPtr` 16) (vkBindingCount (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))
*> poke (ptr `plusPtr` 24) (vkPBindingFlags (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))
-- | VkDescriptorSetVariableDescriptorCountAllocateInfoEXT - Structure
-- specifying additional allocation parameters for descriptor sets
--
-- = Description
--
-- If @descriptorSetCount@ is zero or this structure is not included in the
-- @pNext@ chain, then the variable lengths are considered to be zero.
-- Otherwise, @pDescriptorCounts@[i] is the number of descriptors in the
-- variable count descriptor binding in the corresponding descriptor set
-- layout. If
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo'::@pSetLayouts@[i]
-- does not include a variable count descriptor binding, then
-- @pDescriptorCounts@[i] is ignored.
--
-- == Valid Usage
--
-- - If @descriptorSetCount@ is not zero, @descriptorSetCount@ /must/
-- equal
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo'::@descriptorSetCount@
--
-- - If
-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo'::@pSetLayouts@[i]
-- has a variable descriptor count binding, then @pDescriptorCounts@[i]
-- /must/ be less than or equal to the descriptor count specified for
-- that binding when the descriptor set layout was created.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT@
--
-- - If @descriptorSetCount@ is not @0@, @pDescriptorCounts@ /must/ be a
-- valid pointer to an array of @descriptorSetCount@ @uint32_t@ values
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @descriptorSetCount@ is zero or the number of elements in
-- @pDescriptorCounts@.
vkDescriptorSetCount :: Word32
, -- | @pDescriptorCounts@ is an array of descriptor counts, with each member
-- specifying the number of descriptors in a variable descriptor count
-- binding in the corresponding descriptor set being allocated.
vkPDescriptorCounts :: Ptr Word32
}
deriving (Eq, Show)
instance Storable VkDescriptorSetVariableDescriptorCountAllocateInfoEXT where
sizeOf ~_ = 32
alignment ~_ = 8
peek ptr = VkDescriptorSetVariableDescriptorCountAllocateInfoEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
<*> peek (ptr `plusPtr` 24)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))
*> poke (ptr `plusPtr` 16) (vkDescriptorSetCount (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))
*> poke (ptr `plusPtr` 24) (vkPDescriptorCounts (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))
-- | VkDescriptorSetVariableDescriptorCountLayoutSupportEXT - Structure
-- returning information about whether a descriptor set layout can be
-- supported
--
-- = Description
--
-- If the create info includes a variable-sized descriptor, then
-- @supported@ is determined assuming the requested size of the
-- variable-sized descriptor, and @maxVariableDescriptorCount@ is set to
-- the maximum size of that descriptor that /can/ be successfully created
-- (which is greater than or equal to the requested size passed in). If the
-- create info does not include a variable-sized descriptor or if the
-- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingVariableDescriptorCount@
-- feature is not enabled, then @maxVariableDescriptorCount@ is set to
-- zero. For the purposes of this command, a variable-sized descriptor
-- binding with a @descriptorCount@ of zero is treated as if the
-- @descriptorCount@ is one, and thus the binding is not ignored and the
-- maximum descriptor count will be returned. If the layout is not
-- supported, then the value written to @maxVariableDescriptorCount@ is
-- undefined.
--
-- == Valid Usage (Implicit)
--
-- - @sType@ /must/ be
-- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT@
--
-- = See Also
--
-- 'Graphics.Vulkan.Core10.Core.VkStructureType'
data VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
{ -- | @sType@ is the type of this structure.
vkSType :: VkStructureType
, -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.
vkPNext :: Ptr ()
, -- | @maxVariableDescriptorCount@ indicates the maximum number of descriptors
-- supported in the highest numbered binding of the layout, if that binding
-- is variable-sized.
vkMaxVariableDescriptorCount :: Word32
}
deriving (Eq, Show)
instance Storable VkDescriptorSetVariableDescriptorCountLayoutSupportEXT where
sizeOf ~_ = 24
alignment ~_ = 8
peek ptr = VkDescriptorSetVariableDescriptorCountLayoutSupportEXT <$> peek (ptr `plusPtr` 0)
<*> peek (ptr `plusPtr` 8)
<*> peek (ptr `plusPtr` 16)
poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetVariableDescriptorCountLayoutSupportEXT))
*> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetVariableDescriptorCountLayoutSupportEXT))
*> poke (ptr `plusPtr` 16) (vkMaxVariableDescriptorCount (poked :: VkDescriptorSetVariableDescriptorCountLayoutSupportEXT))
-- No documentation found for TopLevel "VkDescriptorBindingFlagsEXT"
type VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlagBitsEXT