| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Graphics.Vulkan.Core10.DeviceInitialization
- newtype VkImageTiling = VkImageTiling Int32
- pattern VK_IMAGE_TILING_OPTIMAL :: VkImageTiling
- pattern VK_IMAGE_TILING_LINEAR :: VkImageTiling
- newtype VkImageType = VkImageType Int32
- pattern VK_IMAGE_TYPE_1D :: VkImageType
- pattern VK_IMAGE_TYPE_2D :: VkImageType
- pattern VK_IMAGE_TYPE_3D :: VkImageType
- newtype VkPhysicalDeviceType = VkPhysicalDeviceType Int32
- pattern VK_PHYSICAL_DEVICE_TYPE_OTHER :: VkPhysicalDeviceType
- pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU :: VkPhysicalDeviceType
- pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU :: VkPhysicalDeviceType
- pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU :: VkPhysicalDeviceType
- pattern VK_PHYSICAL_DEVICE_TYPE_CPU :: VkPhysicalDeviceType
- newtype VkSystemAllocationScope = VkSystemAllocationScope Int32
- pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND :: VkSystemAllocationScope
- pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT :: VkSystemAllocationScope
- pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE :: VkSystemAllocationScope
- pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE :: VkSystemAllocationScope
- pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE :: VkSystemAllocationScope
- newtype VkInternalAllocationType = VkInternalAllocationType Int32
- pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: VkInternalAllocationType
- newtype VkInstanceCreateFlags = VkInstanceCreateFlags VkFlags
- newtype VkQueueFlagBits = VkQueueFlagBits VkFlags
- pattern VK_QUEUE_GRAPHICS_BIT :: VkQueueFlagBits
- pattern VK_QUEUE_COMPUTE_BIT :: VkQueueFlagBits
- pattern VK_QUEUE_TRANSFER_BIT :: VkQueueFlagBits
- pattern VK_QUEUE_SPARSE_BINDING_BIT :: VkQueueFlagBits
- newtype VkMemoryPropertyFlagBits = VkMemoryPropertyFlagBits VkFlags
- pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT :: VkMemoryPropertyFlagBits
- pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT :: VkMemoryPropertyFlagBits
- pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT :: VkMemoryPropertyFlagBits
- pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT :: VkMemoryPropertyFlagBits
- pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT :: VkMemoryPropertyFlagBits
- newtype VkMemoryHeapFlagBits = VkMemoryHeapFlagBits VkFlags
- pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT :: VkMemoryHeapFlagBits
- newtype VkImageUsageFlagBits = VkImageUsageFlagBits VkFlags
- pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_SAMPLED_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_STORAGE_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: VkImageUsageFlagBits
- pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT :: VkImageUsageFlagBits
- newtype VkImageCreateFlagBits = VkImageCreateFlagBits VkFlags
- pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT :: VkImageCreateFlagBits
- pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT :: VkImageCreateFlagBits
- pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT :: VkImageCreateFlagBits
- pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT :: VkImageCreateFlagBits
- pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT :: VkImageCreateFlagBits
- newtype VkFormatFeatureFlagBits = VkFormatFeatureFlagBits VkFlags
- pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_BLIT_DST_BIT :: VkFormatFeatureFlagBits
- pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT :: VkFormatFeatureFlagBits
- newtype VkSampleCountFlagBits = VkSampleCountFlagBits VkFlags
- pattern VK_SAMPLE_COUNT_1_BIT :: VkSampleCountFlagBits
- pattern VK_SAMPLE_COUNT_2_BIT :: VkSampleCountFlagBits
- pattern VK_SAMPLE_COUNT_4_BIT :: VkSampleCountFlagBits
- pattern VK_SAMPLE_COUNT_8_BIT :: VkSampleCountFlagBits
- pattern VK_SAMPLE_COUNT_16_BIT :: VkSampleCountFlagBits
- pattern VK_SAMPLE_COUNT_32_BIT :: VkSampleCountFlagBits
- pattern VK_SAMPLE_COUNT_64_BIT :: VkSampleCountFlagBits
- type VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256
- pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE :: Integral a => a
- type VK_UUID_SIZE = 16
- pattern VK_UUID_SIZE :: Integral a => a
- type VK_MAX_MEMORY_TYPES = 32
- pattern VK_MAX_MEMORY_TYPES :: Integral a => a
- type VK_MAX_MEMORY_HEAPS = 16
- pattern VK_MAX_MEMORY_HEAPS :: Integral a => a
- type PFN_vkInternalAllocationNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())
- type PFN_vkInternalFreeNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())
- type PFN_vkReallocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pOriginal" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))
- type PFN_vkAllocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))
- type PFN_vkFreeFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pMemory" ::: Ptr ()) -> IO ())
- type PFN_vkVoidFunction = Ptr (() -> IO ())
- type VkInstance = Ptr VkInstance_T
- type VkPhysicalDevice = Ptr VkPhysicalDevice_T
- type VkDevice = Ptr VkDevice_T
- vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult
- vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()
- vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult
- vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction
- vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction
- vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()
- vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()
- vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()
- vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()
- vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()
- vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult
- data VkExtent3D = VkExtent3D {}
- data VkPhysicalDeviceProperties = VkPhysicalDeviceProperties {
- vkApiVersion :: Word32
- vkDriverVersion :: Word32
- vkVendorID :: Word32
- vkDeviceID :: Word32
- vkDeviceType :: VkPhysicalDeviceType
- vkDeviceName :: Vector VK_MAX_PHYSICAL_DEVICE_NAME_SIZE CChar
- vkPipelineCacheUUID :: Vector VK_UUID_SIZE Word8
- vkLimits :: VkPhysicalDeviceLimits
- vkSparseProperties :: VkPhysicalDeviceSparseProperties
- data VkApplicationInfo = VkApplicationInfo {}
- data VkAllocationCallbacks = VkAllocationCallbacks {}
- data VkInstanceCreateInfo = VkInstanceCreateInfo {}
- data VkQueueFamilyProperties = VkQueueFamilyProperties {}
- data VkPhysicalDeviceMemoryProperties = VkPhysicalDeviceMemoryProperties {}
- data VkMemoryType = VkMemoryType {}
- data VkMemoryHeap = VkMemoryHeap {}
- data VkFormatProperties = VkFormatProperties {}
- data VkImageFormatProperties = VkImageFormatProperties {}
- data VkPhysicalDeviceFeatures = VkPhysicalDeviceFeatures {
- vkRobustBufferAccess :: VkBool32
- vkFullDrawIndexUint32 :: VkBool32
- vkImageCubeArray :: VkBool32
- vkIndependentBlend :: VkBool32
- vkGeometryShader :: VkBool32
- vkTessellationShader :: VkBool32
- vkSampleRateShading :: VkBool32
- vkDualSrcBlend :: VkBool32
- vkLogicOp :: VkBool32
- vkMultiDrawIndirect :: VkBool32
- vkDrawIndirectFirstInstance :: VkBool32
- vkDepthClamp :: VkBool32
- vkDepthBiasClamp :: VkBool32
- vkFillModeNonSolid :: VkBool32
- vkDepthBounds :: VkBool32
- vkWideLines :: VkBool32
- vkLargePoints :: VkBool32
- vkAlphaToOne :: VkBool32
- vkMultiViewport :: VkBool32
- vkSamplerAnisotropy :: VkBool32
- vkTextureCompressionETC2 :: VkBool32
- vkTextureCompressionASTC_LDR :: VkBool32
- vkTextureCompressionBC :: VkBool32
- vkOcclusionQueryPrecise :: VkBool32
- vkPipelineStatisticsQuery :: VkBool32
- vkVertexPipelineStoresAndAtomics :: VkBool32
- vkFragmentStoresAndAtomics :: VkBool32
- vkShaderTessellationAndGeometryPointSize :: VkBool32
- vkShaderImageGatherExtended :: VkBool32
- vkShaderStorageImageExtendedFormats :: VkBool32
- vkShaderStorageImageMultisample :: VkBool32
- vkShaderStorageImageReadWithoutFormat :: VkBool32
- vkShaderStorageImageWriteWithoutFormat :: VkBool32
- vkShaderUniformBufferArrayDynamicIndexing :: VkBool32
- vkShaderSampledImageArrayDynamicIndexing :: VkBool32
- vkShaderStorageBufferArrayDynamicIndexing :: VkBool32
- vkShaderStorageImageArrayDynamicIndexing :: VkBool32
- vkShaderClipDistance :: VkBool32
- vkShaderCullDistance :: VkBool32
- vkShaderFloat64 :: VkBool32
- vkShaderInt64 :: VkBool32
- vkShaderInt16 :: VkBool32
- vkShaderResourceResidency :: VkBool32
- vkShaderResourceMinLod :: VkBool32
- vkSparseBinding :: VkBool32
- vkSparseResidencyBuffer :: VkBool32
- vkSparseResidencyImage2D :: VkBool32
- vkSparseResidencyImage3D :: VkBool32
- vkSparseResidency2Samples :: VkBool32
- vkSparseResidency4Samples :: VkBool32
- vkSparseResidency8Samples :: VkBool32
- vkSparseResidency16Samples :: VkBool32
- vkSparseResidencyAliased :: VkBool32
- vkVariableMultisampleRate :: VkBool32
- vkInheritedQueries :: VkBool32
- data VkPhysicalDeviceSparseProperties = VkPhysicalDeviceSparseProperties {}
- data VkPhysicalDeviceLimits = VkPhysicalDeviceLimits {
- vkMaxImageDimension1D :: Word32
- vkMaxImageDimension2D :: Word32
- vkMaxImageDimension3D :: Word32
- vkMaxImageDimensionCube :: Word32
- vkMaxImageArrayLayers :: Word32
- vkMaxTexelBufferElements :: Word32
- vkMaxUniformBufferRange :: Word32
- vkMaxStorageBufferRange :: Word32
- vkMaxPushConstantsSize :: Word32
- vkMaxMemoryAllocationCount :: Word32
- vkMaxSamplerAllocationCount :: Word32
- vkBufferImageGranularity :: VkDeviceSize
- vkSparseAddressSpaceSize :: VkDeviceSize
- vkMaxBoundDescriptorSets :: Word32
- vkMaxPerStageDescriptorSamplers :: Word32
- vkMaxPerStageDescriptorUniformBuffers :: Word32
- vkMaxPerStageDescriptorStorageBuffers :: Word32
- vkMaxPerStageDescriptorSampledImages :: Word32
- vkMaxPerStageDescriptorStorageImages :: Word32
- vkMaxPerStageDescriptorInputAttachments :: Word32
- vkMaxPerStageResources :: Word32
- vkMaxDescriptorSetSamplers :: Word32
- vkMaxDescriptorSetUniformBuffers :: Word32
- vkMaxDescriptorSetUniformBuffersDynamic :: Word32
- vkMaxDescriptorSetStorageBuffers :: Word32
- vkMaxDescriptorSetStorageBuffersDynamic :: Word32
- vkMaxDescriptorSetSampledImages :: Word32
- vkMaxDescriptorSetStorageImages :: Word32
- vkMaxDescriptorSetInputAttachments :: Word32
- vkMaxVertexInputAttributes :: Word32
- vkMaxVertexInputBindings :: Word32
- vkMaxVertexInputAttributeOffset :: Word32
- vkMaxVertexInputBindingStride :: Word32
- vkMaxVertexOutputComponents :: Word32
- vkMaxTessellationGenerationLevel :: Word32
- vkMaxTessellationPatchSize :: Word32
- vkMaxTessellationControlPerVertexInputComponents :: Word32
- vkMaxTessellationControlPerVertexOutputComponents :: Word32
- vkMaxTessellationControlPerPatchOutputComponents :: Word32
- vkMaxTessellationControlTotalOutputComponents :: Word32
- vkMaxTessellationEvaluationInputComponents :: Word32
- vkMaxTessellationEvaluationOutputComponents :: Word32
- vkMaxGeometryShaderInvocations :: Word32
- vkMaxGeometryInputComponents :: Word32
- vkMaxGeometryOutputComponents :: Word32
- vkMaxGeometryOutputVertices :: Word32
- vkMaxGeometryTotalOutputComponents :: Word32
- vkMaxFragmentInputComponents :: Word32
- vkMaxFragmentOutputAttachments :: Word32
- vkMaxFragmentDualSrcAttachments :: Word32
- vkMaxFragmentCombinedOutputResources :: Word32
- vkMaxComputeSharedMemorySize :: Word32
- vkMaxComputeWorkGroupCount :: Vector 3 Word32
- vkMaxComputeWorkGroupInvocations :: Word32
- vkMaxComputeWorkGroupSize :: Vector 3 Word32
- vkSubPixelPrecisionBits :: Word32
- vkSubTexelPrecisionBits :: Word32
- vkMipmapPrecisionBits :: Word32
- vkMaxDrawIndexedIndexValue :: Word32
- vkMaxDrawIndirectCount :: Word32
- vkMaxSamplerLodBias :: CFloat
- vkMaxSamplerAnisotropy :: CFloat
- vkMaxViewports :: Word32
- vkMaxViewportDimensions :: Vector 2 Word32
- vkViewportBoundsRange :: Vector 2 CFloat
- vkViewportSubPixelBits :: Word32
- vkMinMemoryMapAlignment :: CSize
- vkMinTexelBufferOffsetAlignment :: VkDeviceSize
- vkMinUniformBufferOffsetAlignment :: VkDeviceSize
- vkMinStorageBufferOffsetAlignment :: VkDeviceSize
- vkMinTexelOffset :: Int32
- vkMaxTexelOffset :: Word32
- vkMinTexelGatherOffset :: Int32
- vkMaxTexelGatherOffset :: Word32
- vkMinInterpolationOffset :: CFloat
- vkMaxInterpolationOffset :: CFloat
- vkSubPixelInterpolationOffsetBits :: Word32
- vkMaxFramebufferWidth :: Word32
- vkMaxFramebufferHeight :: Word32
- vkMaxFramebufferLayers :: Word32
- vkFramebufferColorSampleCounts :: VkSampleCountFlags
- vkFramebufferDepthSampleCounts :: VkSampleCountFlags
- vkFramebufferStencilSampleCounts :: VkSampleCountFlags
- vkFramebufferNoAttachmentsSampleCounts :: VkSampleCountFlags
- vkMaxColorAttachments :: Word32
- vkSampledImageColorSampleCounts :: VkSampleCountFlags
- vkSampledImageIntegerSampleCounts :: VkSampleCountFlags
- vkSampledImageDepthSampleCounts :: VkSampleCountFlags
- vkSampledImageStencilSampleCounts :: VkSampleCountFlags
- vkStorageImageSampleCounts :: VkSampleCountFlags
- vkMaxSampleMaskWords :: Word32
- vkTimestampComputeAndGraphics :: VkBool32
- vkTimestampPeriod :: CFloat
- vkMaxClipDistances :: Word32
- vkMaxCullDistances :: Word32
- vkMaxCombinedClipAndCullDistances :: Word32
- vkDiscreteQueuePriorities :: Word32
- vkPointSizeRange :: Vector 2 CFloat
- vkLineWidthRange :: Vector 2 CFloat
- vkPointSizeGranularity :: CFloat
- vkLineWidthGranularity :: CFloat
- vkStrictLines :: VkBool32
- vkStandardSampleLocations :: VkBool32
- vkOptimalBufferCopyOffsetAlignment :: VkDeviceSize
- vkOptimalBufferCopyRowPitchAlignment :: VkDeviceSize
- vkNonCoherentAtomSize :: VkDeviceSize
- type VkQueueFlags = VkQueueFlagBits
- type VkMemoryPropertyFlags = VkMemoryPropertyFlagBits
- type VkMemoryHeapFlags = VkMemoryHeapFlagBits
- type VkImageUsageFlags = VkImageUsageFlagBits
- type VkImageCreateFlags = VkImageCreateFlagBits
- type VkFormatFeatureFlags = VkFormatFeatureFlagBits
- type VkSampleCountFlags = VkSampleCountFlagBits
- type VkDeviceSize = Word64
Documentation
newtype VkImageTiling Source #
VkImageTiling - Specifies the tiling arrangement of data in an image
See Also
VkImageCreateInfo,
VkPhysicalDeviceImageFormatInfo2,
VkPhysicalDeviceSparseImageFormatInfo2,
vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
vkGetPhysicalDeviceImageFormatProperties,
vkGetPhysicalDeviceSparseImageFormatProperties
Constructors
| VkImageTiling Int32 |
pattern VK_IMAGE_TILING_OPTIMAL :: VkImageTiling Source #
VK_IMAGE_TILING_OPTIMAL specifies optimal tiling (texels are laid out
in an implementation-dependent arrangement, for more optimal memory
access).
pattern VK_IMAGE_TILING_LINEAR :: VkImageTiling Source #
VK_IMAGE_TILING_LINEAR specifies linear tiling (texels are laid out in
memory in row-major order, possibly with some padding on each row).
newtype VkImageType Source #
VkImageType - Specifies the type of an image object
See Also
VkImageCreateInfo,
VkPhysicalDeviceImageFormatInfo2,
VkPhysicalDeviceSparseImageFormatInfo2,
vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
vkGetPhysicalDeviceImageFormatProperties,
vkGetPhysicalDeviceSparseImageFormatProperties
Constructors
| VkImageType Int32 |
Instances
pattern VK_IMAGE_TYPE_1D :: VkImageType Source #
VK_IMAGE_TYPE_1D specifies a one-dimensional image.
pattern VK_IMAGE_TYPE_2D :: VkImageType Source #
VK_IMAGE_TYPE_2D specifies a two-dimensional image.
pattern VK_IMAGE_TYPE_3D :: VkImageType Source #
VK_IMAGE_TYPE_3D specifies a three-dimensional image.
newtype VkPhysicalDeviceType Source #
VkPhysicalDeviceType - Supported physical device types
Description
VK_PHYSICAL_DEVICE_TYPE_OTHER- the device does not match any other available types.
VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU- the device is typically one embedded in or tightly coupled with the host.VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU- the device is typically a separate processor connected to the host via an interlink.VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU- the device is typically a virtual node in a virtualization environment.VK_PHYSICAL_DEVICE_TYPE_CPU- the device is typically running on the same processors as the host.
The physical device type is advertised for informational purposes only, and does not directly affect the operation of the system. However, the device type may correlate with other advertised properties or capabilities of the system, such as how many memory heaps there are.
See Also
Constructors
| VkPhysicalDeviceType Int32 |
pattern VK_PHYSICAL_DEVICE_TYPE_OTHER :: VkPhysicalDeviceType Source #
pattern VK_PHYSICAL_DEVICE_TYPE_CPU :: VkPhysicalDeviceType Source #
newtype VkSystemAllocationScope Source #
VkSystemAllocationScope - Allocation scope
Description
VK_SYSTEM_ALLOCATION_SCOPE_COMMANDspecifies that the allocation is scoped to the duration of the Vulkan command.
VK_SYSTEM_ALLOCATION_SCOPE_OBJECTspecifies that the allocation is scoped to the lifetime of the Vulkan object that is being created or used.VK_SYSTEM_ALLOCATION_SCOPE_CACHEspecifies that the allocation is scoped to the lifetime of aVkPipelineCacheorVkValidationCacheEXTobject.VK_SYSTEM_ALLOCATION_SCOPE_DEVICEspecifies that the allocation is scoped to the lifetime of the Vulkan device.VK_SYSTEM_ALLOCATION_SCOPE_INSTANCEspecifies that the allocation is scoped to the lifetime of the Vulkan instance.
Most Vulkan commands operate on a single object, or there is a sole
object that is being created or manipulated. When an allocation uses an
allocation scope of VK_SYSTEM_ALLOCATION_SCOPE_OBJECT or
VK_SYSTEM_ALLOCATION_SCOPE_CACHE, the allocation is scoped to the
object being created or manipulated.
When an implementation requires host memory, it will make callbacks to the application using the most specific allocator and allocation scope available:
- If an allocation is scoped to the duration of a command, the
allocator will use the
VK_SYSTEM_ALLOCATION_SCOPE_COMMANDallocation scope. The most specific allocator available is used: if the object being created or manipulated has an allocator, that object’s allocator will be used, else if the parentVkDevicehas an allocator it will be used, else if the parentVkInstancehas an allocator it will be used. Else, - If an allocation is associated with an object of type
VkValidationCacheEXTorVkPipelineCache, the allocator will use theVK_SYSTEM_ALLOCATION_SCOPE_CACHEallocation scope. The most specific allocator available is used (cache, else device, else instance). Else, - If an allocation is scoped to the lifetime of an object, that object
is being created or manipulated by the command, and that object’s
type is not
VkDeviceorVkInstance, the allocator will use an allocation scope ofVK_SYSTEM_ALLOCATION_SCOPE_OBJECT. The most specific allocator available is used (object, else device, else instance). Else, - If an allocation is scoped to the lifetime of a device, the
allocator will use an allocation scope of
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE. The most specific allocator available is used (device, else instance). Else, - If the allocation is scoped to the lifetime of an instance and the
instance has an allocator, its allocator will be used with an
allocation scope of
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE. - Otherwise an implementation will allocate memory through an alternative mechanism that is unspecified.
See Also
Constructors
| VkSystemAllocationScope Int32 |
newtype VkInternalAllocationType Source #
VkInternalAllocationType - Allocation type
See Also
PFN_vkInternalAllocationNotification, PFN_vkInternalFreeNotification
Constructors
| VkInternalAllocationType Int32 |
pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: VkInternalAllocationType Source #
VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE specifies that the allocation
is intended for execution by the host.
newtype VkInstanceCreateFlags Source #
VkInstanceCreateFlags - Reserved for future use
Description
VkInstanceCreateFlags is a bitmask type for setting a mask, but is
currently reserved for future use.
See Also
Constructors
| VkInstanceCreateFlags VkFlags |
newtype VkQueueFlagBits Source #
VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue family
Description
VK_QUEUE_GRAPHICS_BITspecifies that queues in this queue family support graphics operations.
VK_QUEUE_COMPUTE_BITspecifies that queues in this queue family support compute operations.VK_QUEUE_TRANSFER_BITspecifies that queues in this queue family support transfer operations.VK_QUEUE_SPARSE_BINDING_BITspecifies that queues in this queue family support sparse memory management operations (see Sparse Resources). If any of the sparse resource features are enabled, then at least one queue family must support this bit.
If an implementation exposes any queue family that supports graphics operations, at least one queue family of at least one physical device exposed by the implementation must support both graphics and compute operations.
Note
All commands that are allowed on a queue that supports transfer
operations are also allowed on a queue that supports either graphics or
compute operations. Thus, if the capabilities of a queue family include
VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT, then reporting the
VK_QUEUE_TRANSFER_BIT capability separately for that queue family is
optional.
For further details see Queues.
See Also
Constructors
| VkQueueFlagBits VkFlags |
pattern VK_QUEUE_GRAPHICS_BIT :: VkQueueFlagBits Source #
pattern VK_QUEUE_COMPUTE_BIT :: VkQueueFlagBits Source #
pattern VK_QUEUE_TRANSFER_BIT :: VkQueueFlagBits Source #
pattern VK_QUEUE_SPARSE_BINDING_BIT :: VkQueueFlagBits Source #
newtype VkMemoryPropertyFlagBits Source #
VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory type
See Also
Constructors
| VkMemoryPropertyFlagBits VkFlags |
pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT :: VkMemoryPropertyFlagBits Source #
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit specifies that memory
allocated with this type is the most efficient for device access. This
property will be set if and only if the memory type belongs to a heap
with the VK_MEMORY_HEAP_DEVICE_LOCAL_BIT set.
pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT :: VkMemoryPropertyFlagBits Source #
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT bit specifies that memory
allocated with this type can be mapped for host access using
vkMapMemory.
pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT :: VkMemoryPropertyFlagBits Source #
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bit specifies that the host cache
management commands
vkFlushMappedMemoryRanges and
vkInvalidateMappedMemoryRanges are not
needed to flush host writes to the device or make device writes visible
to the host, respectively.
pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT :: VkMemoryPropertyFlagBits Source #
VK_MEMORY_PROPERTY_HOST_CACHED_BIT bit specifies that memory allocated
with this type is cached on the host. Host memory accesses to uncached
memory are slower than to cached memory, however uncached memory is
always host coherent.
pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT :: VkMemoryPropertyFlagBits Source #
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit specifies that the memory
type only allows device access to the memory. Memory types must not
have both VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally, the object’s
backing memory may be provided by the implementation lazily as
specified in
Lazily Allocated Memory.
newtype VkMemoryHeapFlagBits Source #
Constructors
| VkMemoryHeapFlagBits VkFlags |
pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT :: VkMemoryHeapFlagBits Source #
VK_MEMORY_HEAP_DEVICE_LOCAL_BIT specifies that the heap corresponds to
device local memory. Device local memory may have different
performance characteristics than host local memory, and may support
different memory property flags.
newtype VkImageUsageFlagBits Source #
Constructors
| VkImageUsageFlagBits VkFlags |
pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_TRANSFER_SRC_BIT specifies that the image can be used
as the source of a transfer command.
pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_TRANSFER_DST_BIT specifies that the image can be used
as the destination of a transfer command.
pattern VK_IMAGE_USAGE_SAMPLED_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_SAMPLED_BIT specifies that the image can be used to
create a VkImageView suitable for occupying a VkDescriptorSet slot
either of type VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and be sampled by a shader.
pattern VK_IMAGE_USAGE_STORAGE_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_STORAGE_BIT specifies that the image can be used to
create a VkImageView suitable for occupying a VkDescriptorSet slot
of type VK_DESCRIPTOR_TYPE_STORAGE_IMAGE.
pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT specifies that the image can be
used to create a VkImageView suitable for use as a color or resolve
attachment in a VkFramebuffer.
pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT specifies that the image
can be used to create a VkImageView suitable for use as a
depth/stencil attachment in a VkFramebuffer.
pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT specifies that the memory
bound to this image will have been allocated with the
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT (see
{html_spec_relative}#memory for more
detail). This bit can be set for any image that can be used to
create a VkImageView suitable for use as a color, resolve,
depth/stencil, or input attachment.
pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT :: VkImageUsageFlagBits Source #
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT specifies that the image can be
used to create a VkImageView suitable for occupying VkDescriptorSet
slot of type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; be read from a
shader as an input attachment; and be used as an input attachment in a
framebuffer.
newtype VkImageCreateFlagBits Source #
VkImageCreateFlagBits - Bitmask specifying additional parameters of an image
Description
VK_IMAGE_CREATE_SPARSE_BINDING_BITspecifies that the image will be backed using sparse memory binding.
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BITspecifies that the image can be partially backed using sparse memory binding. Images created with this flag must also be created with theVK_IMAGE_CREATE_SPARSE_BINDING_BITflag.VK_IMAGE_CREATE_SPARSE_ALIASED_BITspecifies that the image will be backed using sparse memory binding with memory ranges that might also simultaneously be backing another image (or another portion of the same image). Images created with this flag must also be created with theVK_IMAGE_CREATE_SPARSE_BINDING_BITflagVK_IMAGE_CREATE_MUTABLE_FORMAT_BITspecifies that the image can be used to create aVkImageViewwith a different format from the image. For multi-planar formats,VK_IMAGE_CREATE_MUTABLE_FORMAT_BITspecifies that aVkImageViewcan be created of a plane of the image.VK_IMAGE_CREATE_CUBE_COMPATIBLE_BITspecifies that the image can be used to create aVkImageViewof typeVK_IMAGE_VIEW_TYPE_CUBEorVK_IMAGE_VIEW_TYPE_CUBE_ARRAY.VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BITspecifies that the image can be used to create aVkImageViewof typeVK_IMAGE_VIEW_TYPE_2DorVK_IMAGE_VIEW_TYPE_2D_ARRAY.VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BITspecifies that the image can be used with a non-zero value of thesplitInstanceBindRegionCountmember of aVkBindImageMemoryDeviceGroupInfostructure passed intovkBindImageMemory2. This flag also has the effect of making the image use the standard sparse image block dimensions.VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BITspecifies that the image having a compressed format can be used to create aVkImageViewwith an uncompressed format where each texel in the image view corresponds to a compressed texel block of the image.VK_IMAGE_CREATE_EXTENDED_USAGE_BITspecifies that the image can be created with usage flags that are not supported for the format the image is created with but are supported for at least one format aVkImageViewcreated from the image can have.VK_IMAGE_CREATE_DISJOINT_BITspecifies that an image with a multi-planar format must have each plane separately bound to memory, rather than having a single memory binding for the whole image; the presence of this bit distinguishes a disjoint image from an image without this bit set.VK_IMAGE_CREATE_ALIAS_BITspecifies that two images created with the same creation parameters and aliased to the same memory can interpret the contents of the memory consistently with each other, subject to the rules described in the Memory Aliasing section. This flag further specifies that each plane of a disjoint image can share an in-memory non-linear representation with single-plane images, and that a single-plane image can share an in-memory non-linear representation with a plane of a multi-planar disjoint image, according to the rules in {html_spec_relative}#features-formats-compatible-planes. If thepNextchain includes aVkExternalMemoryImageCreateInfoorVkExternalMemoryImageCreateInfoNVstructure whosehandleTypesmember is not0, it is as ifVK_IMAGE_CREATE_ALIAS_BITis set.VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXTspecifies that an image with a depth or depth/stencil format can be used with custom sample locations when used as a depth/stencil attachment.
See Sparse Resource Features and Sparse Physical Device Features for more details.
See Also
Constructors
| VkImageCreateFlagBits VkFlags |
newtype VkFormatFeatureFlagBits Source #
VkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer
Description
The following bits may be set in linearTilingFeatures and
optimalTilingFeatures, specifying that the features are supported by
images or
image views created with the queried
vkGetPhysicalDeviceFormatProperties::format:
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BITspecifies that an image view can be sampled from.VK_FORMAT_FEATURE_STORAGE_IMAGE_BITspecifies that an image view can be used as a storage images.VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BITspecifies that an image view can be used as storage image that supports atomic operations.VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITspecifies that an image view can be used as a framebuffer color attachment and as an input attachment.VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BITspecifies that an image view can be used as a framebuffer color attachment that supports blending and as an input attachment.VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITspecifies that an image view can be used as a framebuffer depth/stencil attachment and as an input attachment.VK_FORMAT_FEATURE_BLIT_SRC_BITspecifies that an image can be used assrcImagefor thevkCmdBlitImagecommand.VK_FORMAT_FEATURE_BLIT_DST_BITspecifies that an image can be used asdstImagefor thevkCmdBlitImagecommand.VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITspecifies that ifVK_FORMAT_FEATURE_SAMPLED_IMAGE_BITis also set, an image view can be used with a sampler that has either ofmagFilterorminFilterset toVK_FILTER_LINEAR, ormipmapModeset toVK_SAMPLER_MIPMAP_MODE_LINEAR. IfVK_FORMAT_FEATURE_BLIT_SRC_BITis also set, an image can be used as thesrcImagetovkCmdBlitImagewith afilterofVK_FILTER_LINEAR. This bit must only be exposed for formats that also support theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BITorVK_FORMAT_FEATURE_BLIT_SRC_BIT.If the format being queried is a depth/stencil format, this bit only specifies that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range [0,1] and should be proportional to, or a weighted average of, the number of comparison passes or failures.
VK_FORMAT_FEATURE_TRANSFER_SRC_BITspecifies that an image can be used as a source image for copy commands.VK_FORMAT_FEATURE_TRANSFER_DST_BITspecifies that an image can be used as a destination image for copy commands and clear commands.VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXTspecifiesVkImagecan be used as a sampled image with a min or maxVkSamplerReductionModeEXT. This bit must only be exposed for formats that also support theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT.VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMGspecifies thatVkImagecan be used with a sampler that has either ofmagFilterorminFilterset toVK_FILTER_CUBIC_IMG, or be the source image for a blit withfilterset toVK_FILTER_CUBIC_IMG. This bit must only be exposed for formats that also support theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. If the format being queried is a depth/stencil format, this only specifies that the depth aspect is cubic filterable.VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BITspecifies that an application can define a sampler Y’CBCR conversion using this format as a source, and that an image of this format can be used with aVkSamplerYcbcrConversionCreateInfoxChromaOffsetand/oryChromaOffsetofVK_CHROMA_LOCATION_MIDPOINT. Otherwise bothxChromaOffsetandyChromaOffsetmust beVK_CHROMA_LOCATION_COSITED_EVEN. If a format does not incorporate chroma downsampling (it is not a “422” or “420” format) but the implementation supports sampler Y’CBCR conversion for this format, the implementation must setVK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT.VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BITspecifies that an application can define a sampler Y’CBCR conversion using this format as a source, and that an image of this format can be used with aVkSamplerYcbcrConversionCreateInfoxChromaOffsetand/oryChromaOffsetofVK_CHROMA_LOCATION_COSITED_EVEN. Otherwise bothxChromaOffsetandyChromaOffsetmust beVK_CHROMA_LOCATION_MIDPOINT. If neitherVK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BITnorVK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BITis set, the application must not define a sampler Y’CBCR conversion using this format as a source.VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BITspecifies that the format can do linear sampler filtering (min/magFilter) whilst sampler Y’CBCR conversion is enabled.VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BITspecifies that the format can have different chroma, min, and mag filters.VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BITspecifies that reconstruction is explicit, as described in {html_spec_relative}#textures-chroma-reconstruction. If this bit is not present, reconstruction is implicit by default.VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BITspecifies that reconstruction can be forcibly made explicit by settingVkSamplerYcbcrConversionCreateInfo::forceExplicitReconstructiontoVK_TRUE.VK_FORMAT_FEATURE_DISJOINT_BITspecifies that a multi-planar image can have theVK_IMAGE_CREATE_DISJOINT_BITset during image creation. An implementation must not setVK_FORMAT_FEATURE_DISJOINT_BITfor single-plane formats.
The following bits may be set in bufferFeatures, specifying that the
features are supported by buffers or
buffer views created with the
queried vkGetPhysicalDeviceProperties::format:
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BITspecifies that the format can be used to create a buffer view that can be bound to aVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERdescriptor.VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BITspecifies that the format can be used to create a buffer view that can be bound to aVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERdescriptor.VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BITspecifies that atomic operations are supported onVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERwith this format.VK_FORMAT_FEATURE_VERTEX_BUFFER_BITspecifies that the format can be used as a vertex attribute format (VkVertexInputAttributeDescription::format).
See Also
Constructors
| VkFormatFeatureFlagBits VkFlags |
newtype VkSampleCountFlagBits Source #
VkSampleCountFlagBits - Bitmask specifying sample counts supported for an image used for storage operations
See Also
VkAttachmentDescription,
VkImageCreateInfo,
VkPhysicalDeviceSparseImageFormatInfo2,
VkPipelineMultisampleStateCreateInfo,
VkSampleCountFlags,
VkSampleLocationsInfoEXT,
vkGetPhysicalDeviceMultisamplePropertiesEXT,
vkGetPhysicalDeviceSparseImageFormatProperties
Constructors
| VkSampleCountFlagBits VkFlags |
pattern VK_SAMPLE_COUNT_1_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_1_BIT specifies an image with one sample per pixel.
pattern VK_SAMPLE_COUNT_2_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_2_BIT specifies an image with 2 samples per pixel.
pattern VK_SAMPLE_COUNT_4_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_4_BIT specifies an image with 4 samples per pixel.
pattern VK_SAMPLE_COUNT_8_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_8_BIT specifies an image with 8 samples per pixel.
pattern VK_SAMPLE_COUNT_16_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_16_BIT specifies an image with 16 samples per pixel.
pattern VK_SAMPLE_COUNT_32_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_32_BIT specifies an image with 32 samples per pixel.
pattern VK_SAMPLE_COUNT_64_BIT :: VkSampleCountFlagBits Source #
VK_SAMPLE_COUNT_64_BIT specifies an image with 64 samples per pixel.
type VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 Source #
pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE :: Integral a => a Source #
type VK_UUID_SIZE = 16 Source #
pattern VK_UUID_SIZE :: Integral a => a Source #
type VK_MAX_MEMORY_TYPES = 32 Source #
pattern VK_MAX_MEMORY_TYPES :: Integral a => a Source #
type VK_MAX_MEMORY_HEAPS = 16 Source #
pattern VK_MAX_MEMORY_HEAPS :: Integral a => a Source #
type PFN_vkInternalAllocationNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ()) Source #
PFN_vkInternalAllocationNotification - Application-defined memory allocation notification function
Parameters
pUserDatais the value specified forVkAllocationCallbacks::pUserDatain the allocator specified by the application.
sizeis the requested size of an allocation.allocationTypeis aVkInternalAllocationTypevalue specifying the requested type of an allocation.allocationScopeis aVkSystemAllocationScopevalue specifying the allocation scope of the lifetime of the allocation, as described here.
Description
This is a purely informational callback.
See Also
type PFN_vkInternalFreeNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ()) Source #
PFN_vkInternalFreeNotification - Application-defined memory free notification function
Parameters
pUserDatais the value specified forVkAllocationCallbacks::pUserDatain the allocator specified by the application.
sizeis the requested size of an allocation.allocationTypeis aVkInternalAllocationTypevalue specifying the requested type of an allocation.allocationScopeis aVkSystemAllocationScopevalue specifying the allocation scope of the lifetime of the allocation, as described here.
Description
See Also
type PFN_vkReallocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pOriginal" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ())) Source #
PFN_vkReallocationFunction - Application-defined memory reallocation function
Parameters
pUserDatais the value specified forVkAllocationCallbacks::pUserDatain the allocator specified by the application.
pOriginalmust be eitherNULLor a pointer previously returned bypfnReallocationorpfnAllocationof the same allocator.sizeis the size in bytes of the requested allocation.alignmentis the requested alignment of the allocation in bytes and must be a power of two.allocationScopeis aVkSystemAllocationScopevalue specifying the allocation scope of the lifetime of the allocation, as described here.
Description
pfnReallocation must return an allocation with enough space for
size bytes, and the contents of the original allocation from bytes
zero to min(original size, new size) - 1 must be preserved in the
returned allocation. If size is larger than the old size, the contents
of the additional space are undefined. If satisfying these requirements
involves creating a new allocation, then the old allocation should be
freed.
If pOriginal is NULL, then pfnReallocation must behave
equivalently to a call to PFN_vkAllocationFunction with the same
parameter values (without pOriginal).
If size is zero, then pfnReallocation must behave equivalently to
a call to PFN_vkFreeFunction with the same pUserData parameter
value, and pMemory equal to pOriginal.
If pOriginal is non-NULL, the implementation must ensure that
alignment is equal to the alignment used to originally allocate
pOriginal.
If this function fails and pOriginal is non-NULL the application
must not free the old allocation.
pfnReallocation must follow the same
rules for return values as PFN_vkAllocationFunction.
See Also
type PFN_vkAllocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ())) Source #
PFN_vkAllocationFunction - Application-defined memory allocation function
Parameters
pUserDatais the value specified forVkAllocationCallbacks::pUserDatain the allocator specified by the application.
sizeis the size in bytes of the requested allocation.alignmentis the requested alignment of the allocation in bytes and must be a power of two.allocationScopeis aVkSystemAllocationScopevalue specifying the allocation scope of the lifetime of the allocation, as described here.
Description
If pfnAllocation is unable to allocate the requested memory, it must
return NULL. If the allocation was successful, it must return a
valid pointer to memory allocation containing at least size bytes, and
with the pointer value being a multiple of alignment.
Note
Correct Vulkan operation cannot be assumed if the application does not follow these rules.
For example, pfnAllocation (or pfnReallocation) could cause
termination of running Vulkan instance(s) on a failed allocation for
debugging purposes, either directly or indirectly. In these
circumstances, it cannot be assumed that any part of any affected
VkInstance objects are going to operate correctly (even
vkDestroyInstance), and the application must ensure it cleans up
properly via other means (e.g. process termination).
If pfnAllocation returns NULL, and if the implementation is unable
to continue correct processing of the current command without the
requested allocation, it must treat this as a run-time error, and
generate VK_ERROR_OUT_OF_HOST_MEMORY at the appropriate time for the
command in which the condition was detected, as described in
Return Codes.
If the implementation is able to continue correct processing of the
current command without the requested allocation, then it may do so,
and must not generate VK_ERROR_OUT_OF_HOST_MEMORY as a result of
this failed allocation.
See Also
type PFN_vkFreeFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pMemory" ::: Ptr ()) -> IO ()) Source #
PFN_vkFreeFunction - Application-defined memory free function
Parameters
pUserDatais the value specified forVkAllocationCallbacks::pUserDatain the allocator specified by the application.
pMemoryis the allocation to be freed.
Description
pMemory may be NULL, which the callback must handle safely. If
pMemory is non-NULL, it must be a pointer previously allocated by
pfnAllocation or pfnReallocation. The application should free this
memory.
See Also
type PFN_vkVoidFunction = Ptr (() -> IO ()) Source #
PFN_vkVoidFunction - Dummy function pointer type returned by queries
Parameters
Description
See Also
type VkInstance = Ptr VkInstance_T Source #
VkInstance - Opaque handle to a instance object
Description
See Also
vkCreateAndroidSurfaceKHR,
vkCreateDebugReportCallbackEXT,
vkCreateDebugUtilsMessengerEXT,
vkCreateDisplayPlaneSurfaceKHR,
vkCreateIOSSurfaceMVK,
vkCreateInstance,
vkCreateMacOSSurfaceMVK,
vkCreateMirSurfaceKHR,
vkCreateViSurfaceNN,
vkCreateWaylandSurfaceKHR,
vkCreateWin32SurfaceKHR,
vkCreateXcbSurfaceKHR,
vkCreateXlibSurfaceKHR,
vkDebugReportMessageEXT,
vkDestroyDebugReportCallbackEXT,
vkDestroyDebugUtilsMessengerEXT,
vkDestroyInstance,
vkDestroySurfaceKHR,
vkEnumeratePhysicalDeviceGroups,
vkEnumeratePhysicalDeviceGroupsKHR,
vkEnumeratePhysicalDevices, vkGetInstanceProcAddr,
vkSubmitDebugUtilsMessageEXT
type VkPhysicalDevice = Ptr VkPhysicalDevice_T Source #
VkPhysicalDevice - Opaque handle to a physical device object
Description
See Also
VkDeviceGroupDeviceCreateInfo,
VkPhysicalDeviceGroupProperties,
vkAcquireXlibDisplayEXT,
vkCreateDevice,
vkCreateDisplayModeKHR,
vkEnumerateDeviceExtensionProperties,
vkEnumerateDeviceLayerProperties,
vkEnumeratePhysicalDevices,
vkGetDisplayModePropertiesKHR,
vkGetDisplayPlaneCapabilitiesKHR,
vkGetDisplayPlaneSupportedDisplaysKHR,
vkGetPhysicalDeviceDisplayPlanePropertiesKHR,
vkGetPhysicalDeviceDisplayPropertiesKHR,
vkGetPhysicalDeviceExternalBufferProperties,
vkGetPhysicalDeviceExternalBufferPropertiesKHR,
vkGetPhysicalDeviceExternalFenceProperties,
vkGetPhysicalDeviceExternalFencePropertiesKHR,
vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
vkGetPhysicalDeviceExternalSemaphoreProperties,
vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
vkGetPhysicalDeviceFeatures,
vkGetPhysicalDeviceFeatures2,
vkGetPhysicalDeviceFeatures2KHR,
vkGetPhysicalDeviceFormatProperties,
vkGetPhysicalDeviceFormatProperties2,
vkGetPhysicalDeviceFormatProperties2KHR,
vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,
vkGetPhysicalDeviceImageFormatProperties,
vkGetPhysicalDeviceImageFormatProperties2,
vkGetPhysicalDeviceImageFormatProperties2KHR,
vkGetPhysicalDeviceMemoryProperties,
vkGetPhysicalDeviceMemoryProperties2,
vkGetPhysicalDeviceMemoryProperties2KHR,
vkGetPhysicalDeviceMirPresentationSupportKHR,
vkGetPhysicalDeviceMultisamplePropertiesEXT,
vkGetPhysicalDevicePresentRectanglesKHR,
vkGetPhysicalDeviceProperties,
vkGetPhysicalDeviceProperties2,
vkGetPhysicalDeviceProperties2KHR,
vkGetPhysicalDeviceQueueFamilyProperties,
vkGetPhysicalDeviceQueueFamilyProperties2,
vkGetPhysicalDeviceQueueFamilyProperties2KHR,
vkGetPhysicalDeviceSparseImageFormatProperties,
vkGetPhysicalDeviceSparseImageFormatProperties2,
vkGetPhysicalDeviceSparseImageFormatProperties2KHR,
vkGetPhysicalDeviceSurfaceCapabilities2EXT,
vkGetPhysicalDeviceSurfaceCapabilities2KHR,
vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
vkGetPhysicalDeviceSurfaceFormats2KHR,
vkGetPhysicalDeviceSurfaceFormatsKHR,
vkGetPhysicalDeviceSurfacePresentModesKHR,
vkGetPhysicalDeviceSurfaceSupportKHR,
vkGetPhysicalDeviceWaylandPresentationSupportKHR,
vkGetPhysicalDeviceWin32PresentationSupportKHR,
vkGetPhysicalDeviceXcbPresentationSupportKHR,
vkGetPhysicalDeviceXlibPresentationSupportKHR,
vkGetRandROutputDisplayEXT,
vkReleaseDisplayEXT
type VkDevice = Ptr VkDevice_T Source #
VkDevice - Opaque handle to a device object
Description
See Also
vkAcquireNextImage2KHR,
vkAcquireNextImageKHR,
vkAllocateCommandBuffers,
vkAllocateDescriptorSets,
vkAllocateMemory,
vkBindBufferMemory,
vkBindBufferMemory2,
vkBindBufferMemory2KHR,
vkBindImageMemory,
vkBindImageMemory2,
vkBindImageMemory2KHR,
vkCreateBuffer,
vkCreateBufferView,
vkCreateCommandPool,
vkCreateComputePipelines,
vkCreateDescriptorPool,
vkCreateDescriptorSetLayout,
vkCreateDescriptorUpdateTemplate,
vkCreateDescriptorUpdateTemplateKHR,
vkCreateDevice,
vkCreateEvent,
vkCreateFence,
vkCreateFramebuffer,
vkCreateGraphicsPipelines,
vkCreateImage,
vkCreateImageView,
vkCreateIndirectCommandsLayoutNVX,
vkCreateObjectTableNVX,
vkCreatePipelineCache,
vkCreatePipelineLayout,
vkCreateQueryPool,
vkCreateRenderPass,
vkCreateSampler,
vkCreateSamplerYcbcrConversion,
vkCreateSamplerYcbcrConversionKHR,
vkCreateSemaphore,
vkCreateShaderModule,
vkCreateSharedSwapchainsKHR,
vkCreateSwapchainKHR,
vkCreateValidationCacheEXT,
vkDebugMarkerSetObjectNameEXT,
vkDebugMarkerSetObjectTagEXT,
vkDestroyBuffer,
vkDestroyBufferView,
vkDestroyCommandPool,
vkDestroyDescriptorPool,
vkDestroyDescriptorSetLayout,
vkDestroyDescriptorUpdateTemplate,
vkDestroyDescriptorUpdateTemplateKHR,
vkDestroyDevice,
vkDestroyEvent,
vkDestroyFence,
vkDestroyFramebuffer,
vkDestroyImage,
vkDestroyImageView,
vkDestroyIndirectCommandsLayoutNVX,
vkDestroyObjectTableNVX,
vkDestroyPipeline,
vkDestroyPipelineCache,
vkDestroyPipelineLayout,
vkDestroyQueryPool,
vkDestroyRenderPass,
vkDestroySampler,
vkDestroySamplerYcbcrConversion,
vkDestroySamplerYcbcrConversionKHR,
vkDestroySemaphore,
vkDestroyShaderModule,
vkDestroySwapchainKHR,
vkDestroyValidationCacheEXT,
vkDeviceWaitIdle,
vkDisplayPowerControlEXT,
vkFlushMappedMemoryRanges,
vkFreeCommandBuffers,
vkFreeDescriptorSets,
vkFreeMemory,
vkGetAndroidHardwareBufferPropertiesANDROID,
vkGetBufferMemoryRequirements,
vkGetBufferMemoryRequirements2,
vkGetBufferMemoryRequirements2KHR,
vkGetDescriptorSetLayoutSupport,
vkGetDescriptorSetLayoutSupportKHR,
vkGetDeviceGroupPeerMemoryFeatures,
vkGetDeviceGroupPeerMemoryFeaturesKHR,
vkGetDeviceGroupPresentCapabilitiesKHR,
vkGetDeviceGroupSurfacePresentModesKHR,
vkGetDeviceMemoryCommitment,
vkGetDeviceProcAddr, vkGetDeviceQueue,
vkGetDeviceQueue2,
vkGetEventStatus,
vkGetFenceFdKHR,
vkGetFenceStatus,
vkGetFenceWin32HandleKHR,
vkGetImageMemoryRequirements,
vkGetImageMemoryRequirements2,
vkGetImageMemoryRequirements2KHR,
vkGetImageSparseMemoryRequirements,
vkGetImageSparseMemoryRequirements2,
vkGetImageSparseMemoryRequirements2KHR,
vkGetImageSubresourceLayout,
vkGetMemoryAndroidHardwareBufferANDROID,
vkGetMemoryFdKHR,
vkGetMemoryFdPropertiesKHR,
vkGetMemoryHostPointerPropertiesEXT,
vkGetMemoryWin32HandleKHR,
vkGetMemoryWin32HandleNV,
vkGetMemoryWin32HandlePropertiesKHR,
vkGetPastPresentationTimingGOOGLE,
vkGetPipelineCacheData,
vkGetQueryPoolResults,
vkGetRefreshCycleDurationGOOGLE,
vkGetRenderAreaGranularity,
vkGetSemaphoreFdKHR,
vkGetSemaphoreWin32HandleKHR,
vkGetShaderInfoAMD,
vkGetSwapchainCounterEXT,
vkGetSwapchainImagesKHR,
vkGetSwapchainStatusKHR,
vkGetValidationCacheDataEXT,
vkImportFenceFdKHR,
vkImportFenceWin32HandleKHR,
vkImportSemaphoreFdKHR,
vkImportSemaphoreWin32HandleKHR,
vkInvalidateMappedMemoryRanges,
vkMapMemory,
vkMergePipelineCaches,
vkMergeValidationCachesEXT,
vkRegisterDeviceEventEXT,
vkRegisterDisplayEventEXT,
vkRegisterObjectsNVX,
vkResetCommandPool,
vkResetDescriptorPool,
vkResetEvent,
vkResetFences,
vkSetDebugUtilsObjectNameEXT,
vkSetDebugUtilsObjectTagEXT,
vkSetEvent,
vkSetHdrMetadataEXT,
vkTrimCommandPool,
vkTrimCommandPoolKHR,
vkUnmapMemory,
vkUnregisterObjectsNVX,
vkUpdateDescriptorSetWithTemplate,
vkUpdateDescriptorSetWithTemplateKHR,
vkUpdateDescriptorSets,
vkWaitForFences
vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult Source #
vkCreateInstance - Create a new Vulkan instance
Parameters
pCreateInfopoints to an instance ofVkInstanceCreateInfocontrolling creation of the instance.
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pInstancepoints aVkInstancehandle in which the resulting instance is returned.
Description
vkCreateInstance verifies that the requested layers exist. If not,
vkCreateInstance will return VK_ERROR_LAYER_NOT_PRESENT. Next
vkCreateInstance verifies that the requested extensions are supported
(e.g. in the implementation or in any enabled instance layer) and if any
requested extension is not supported, vkCreateInstance must return
VK_ERROR_EXTENSION_NOT_PRESENT. After verifying and enabling the
instance layers and extensions the VkInstance object is created and
returned to the application. If a requested extension is only supported
by a layer, both the layer and the extension need to be specified at
vkCreateInstance time for the creation to succeed.
Valid Usage
- All
required extensions
for each extension in the
VkInstanceCreateInfo::ppEnabledExtensionNameslist must also be present in that list.
Valid Usage (Implicit)
pCreateInfomust be a valid pointer to a validVkInstanceCreateInfostructure
- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure pInstancemust be a valid pointer to aVkInstancehandle
Return Codes
- Success
- -
VK_SUCCESS
- Failure
- -
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
VK_ERROR_INITIALIZATION_FAILED
VK_ERROR_LAYER_NOT_PRESENT
VK_ERROR_EXTENSION_NOT_PRESENT
VK_ERROR_INCOMPATIBLE_DRIVER
See Also
vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () Source #
vkDestroyInstance - Destroy an instance of Vulkan
Parameters
instanceis the handle of the instance to destroy.
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.
Description
Valid Usage
- All child objects created using
instancemust have been destroyed prior to destroyinginstance
- If
VkAllocationCallbackswere provided wheninstancewas created, a compatible set of callbacks must be provided here - If no
VkAllocationCallbackswere provided wheninstancewas created,pAllocatormust beNULL
Valid Usage (Implicit)
- If
instanceis notNULL,instancemust be a validVkInstancehandle
- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validVkAllocationCallbacksstructure
Host Synchronization
- Host access to
instancemust be externally synchronized
See Also
vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult Source #
vkEnumeratePhysicalDevices - Enumerates the physical devices accessible to a Vulkan instance
Parameters
instanceis a handle to a Vulkan instance previously created withvkCreateInstance.
pPhysicalDeviceCountis a pointer to an integer related to the number of physical devices available or queried, as described below.pPhysicalDevicesis eitherNULLor a pointer to an array ofVkPhysicalDevicehandles.
Description
If pPhysicalDevices is NULL, then the number of physical devices
available is returned in pPhysicalDeviceCount. Otherwise,
pPhysicalDeviceCount must point to a variable set by the user to the
number of elements in the pPhysicalDevices array, and on return the
variable is overwritten with the number of handles actually written to
pPhysicalDevices. If pPhysicalDeviceCount is less than the number of
physical devices available, at most pPhysicalDeviceCount structures
will be written. If pPhysicalDeviceCount is smaller than the number of
physical devices available, VK_INCOMPLETE will be returned instead of
VK_SUCCESS, to indicate that not all the available physical devices
were returned.
Valid Usage (Implicit)
instancemust be a validVkInstancehandle
pPhysicalDeviceCountmust be a valid pointer to auint32_tvalue- If the value referenced by
pPhysicalDeviceCountis not0, andpPhysicalDevicesis notNULL,pPhysicalDevicesmust be a valid pointer to an array ofpPhysicalDeviceCountVkPhysicalDevicehandles
Return Codes
- Success
- -
VK_SUCCESSVK_INCOMPLETE
- Failure
- -
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
VK_ERROR_INITIALIZATION_FAILED
See Also
vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction Source #
vkGetDeviceProcAddr - Return a function pointer for a command
Parameters
The table below defines the various use cases for vkGetDeviceProcAddr
and expected return value for each case.
Description
The returned function pointer is of type PFN_vkVoidFunction, and must
be cast to the type of the command being queried. The function pointer
must only be called with a dispatchable object (the first parameter)
that is device or a child of device.
+-----------------------+-----------------------+-----------------------+ | @device@ | @pName@ | return value | +=======================+=======================+=======================+ | @NULL@ | * | undefined | +-----------------------+-----------------------+-----------------------+ | invalid device | * | undefined | +-----------------------+-----------------------+-----------------------+ | device | @NULL@ | undefined | +-----------------------+-----------------------+-----------------------+ | device | core device-level | fp | | | Vulkan command | | +-----------------------+-----------------------+-----------------------+ | device | enabled device | fp | | | extension commands | | +-----------------------+-----------------------+-----------------------+ | device | * (any @pName@ not | @NULL@ | | | covered above) | | +-----------------------+-----------------------+-----------------------+ vkGetDeviceProcAddr behavior
Valid Usage (Implicit)
devicemust be a validVkDevicehandle
pNamemust be a null-terminated UTF-8 string
See Also
vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction Source #
vkGetInstanceProcAddr - Return a function pointer for a command
Parameters
instanceis the instance that the function pointer will be compatible with, orNULLfor commands not dependent on any instance.
pNameis the name of the command to obtain.
Description
vkGetInstanceProcAddr itself is obtained in a platform- and loader-
specific manner. Typically, the loader library will export this command
as a function symbol, so applications can link against the loader
library, or load it dynamically and look up the symbol using
platform-specific APIs.
The table below defines the various use cases for
vkGetInstanceProcAddr and expected return value (“fp” is “function
pointer”) for each case.
The returned function pointer is of type PFN_vkVoidFunction, and must
be cast to the type of the command being queried.
+-----------------------+-----------------------+-----------------------+ | @instance@ | @pName@ | return value | +=======================+=======================+=======================+ | * | @NULL@ | undefined | +-----------------------+-----------------------+-----------------------+ | invalid instance | * | undefined | +-----------------------+-----------------------+-----------------------+ | @NULL@ | 'Graphics.Vulkan.Core | fp | | | 10.ExtensionDiscovery | | | | .vkEnumerateInstanceE | | | | xtensionProperties' | | +-----------------------+-----------------------+-----------------------+ | @NULL@ | 'Graphics.Vulkan.Core | fp | | | 10.LayerDiscovery.vkE | | | | numerateInstanceLayer | | | | Properties' | | +-----------------------+-----------------------+-----------------------+ | @NULL@ | 'vkCreateInstance' | fp | +-----------------------+-----------------------+-----------------------+ | @NULL@ | * (any @pName@ not | @NULL@ | | | covered above) | | +-----------------------+-----------------------+-----------------------+ | instance | core Vulkan command | fp1 | +-----------------------+-----------------------+-----------------------+ | instance | enabled instance | fp1 | | | extension commands | | | | for @instance@ | | +-----------------------+-----------------------+-----------------------+ | instance | available device | fp1 | | | extension2 commands | | | | for @instance@ | | +-----------------------+-----------------------+-----------------------+ | instance | * (any @pName@ not | @NULL@ | | | covered above) | | +-----------------------+-----------------------+-----------------------+ vkGetInstanceProcAddr behavior
- 1
- The returned function pointer must only be called with a
dispatchable object (the first parameter) that is
instanceor a child ofinstance, e.g.VkInstance,VkPhysicalDevice,VkDevice,VkQueue, orVkCommandBuffer. - 2
- An “available device extension” is a device extension supported by
any physical device enumerated by
instance.
Valid Usage (Implicit)
- If
instanceis notNULL,instancemust be a validVkInstancehandle
pNamemust be a null-terminated UTF-8 string
See Also
vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO () Source #
vkGetPhysicalDeviceProperties - Returns properties of a physical device
Parameters
physicalDeviceis the handle to the physical device whose properties will be queried.
pPropertiespoints to an instance of theVkPhysicalDevicePropertiesstructure, that will be filled with returned information.
Description
Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandle
pPropertiesmust be a valid pointer to aVkPhysicalDevicePropertiesstructure
See Also
vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO () Source #
vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the queues of the specified physical device
Parameters
physicalDeviceis the handle to the physical device whose properties will be queried.
pQueueFamilyPropertyCountis a pointer to an integer related to the number of queue families available or queried, as described below.pQueueFamilyPropertiesis eitherNULLor a pointer to an array ofVkQueueFamilyPropertiesstructures.
Description
If pQueueFamilyProperties is NULL, then the number of queue families
available is returned in pQueueFamilyPropertyCount. Otherwise,
pQueueFamilyPropertyCount must point to a variable set by the user
to the number of elements in the pQueueFamilyProperties array, and on
return the variable is overwritten with the number of structures
actually written to pQueueFamilyProperties. If
pQueueFamilyPropertyCount is less than the number of queue families
available, at most pQueueFamilyPropertyCount structures will be
written.
Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandle
pQueueFamilyPropertyCountmust be a valid pointer to auint32_tvalue- If the value referenced by
pQueueFamilyPropertyCountis not0, andpQueueFamilyPropertiesis notNULL,pQueueFamilyPropertiesmust be a valid pointer to an array ofpQueueFamilyPropertyCountVkQueueFamilyPropertiesstructures
See Also
vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO () Source #
vkGetPhysicalDeviceMemoryProperties - Reports memory information for the specified physical device
Parameters
physicalDeviceis the handle to the device to query.
pMemoryPropertiespoints to an instance ofVkPhysicalDeviceMemoryPropertiesstructure in which the properties are returned.
Description
Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandle
pMemoryPropertiesmust be a valid pointer to aVkPhysicalDeviceMemoryPropertiesstructure
See Also
vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO () Source #
vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device
Parameters
physicalDeviceis the physical device from which to query the supported features.
pFeaturesis a pointer to aVkPhysicalDeviceFeaturesstructure in which the physical device features are returned. For each feature, a value ofVK_TRUEspecifies that the feature is supported on this physical device, andVK_FALSEspecifies that the feature is not supported.
Description
Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandle
pFeaturesmust be a valid pointer to aVkPhysicalDeviceFeaturesstructure
See Also
vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO () Source #
vkGetPhysicalDeviceFormatProperties - Lists physical device’s format capabilities
Parameters
physicalDeviceis the physical device from which to query the format properties.
formatis the format whose properties are queried.pFormatPropertiesis a pointer to aVkFormatPropertiesstructure in which physical device properties forformatare returned.
Description
Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandle
formatmust be a validVkFormatvaluepFormatPropertiesmust be a valid pointer to aVkFormatPropertiesstructure
See Also
vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult Source #
vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image format capabilities
Parameters
physicalDeviceis the physical device from which to query the image capabilities.
formatis aVkFormatvalue specifying the image format, corresponding toVkImageCreateInfo::format.typeis aVkImageTypevalue specifying the image type, corresponding toVkImageCreateInfo::imageType.tilingis aVkImageTilingvalue specifying the image tiling, corresponding toVkImageCreateInfo::tiling.usageis a bitmask ofVkImageUsageFlagBitsspecifying the intended usage of the image, corresponding toVkImageCreateInfo::usage.flagsis a bitmask ofVkImageCreateFlagBitsspecifying additional parameters of the image, corresponding toVkImageCreateInfo::flags.pImageFormatPropertiespoints to an instance of theVkImageFormatPropertiesstructure in which capabilities are returned.
Description
The format, type, tiling, usage, and flags parameters
correspond to parameters that would be consumed by
vkCreateImage (as members of
VkImageCreateInfo).
If format is not a supported image format, or if the combination of
format, type, tiling, usage, and flags is not supported for
images, then vkGetPhysicalDeviceImageFormatProperties returns
VK_ERROR_FORMAT_NOT_SUPPORTED.
The limitations on an image format that are reported by
vkGetPhysicalDeviceImageFormatProperties have the following property:
if usage1 and usage2 of type VkImageUsageFlags are such that the
bits set in usage1 are a subset of the bits set in usage2, and
flags1 and flags2 of type VkImageCreateFlags are such that the
bits set in flags1 are a subset of the bits set in flags2, then the
limitations for usage1 and flags1 must be no more strict than the
limitations for usage2 and flags2, for all values of format,
type, and tiling.
Valid Usage (Implicit)
physicalDevicemust be a validVkPhysicalDevicehandle
formatmust be a validVkFormatvaluetypemust be a validVkImageTypevaluetilingmust be a validVkImageTilingvalueusagemust be a valid combination ofVkImageUsageFlagBitsvaluesusagemust not be0flagsmust be a valid combination ofVkImageCreateFlagBitsvaluespImageFormatPropertiesmust be a valid pointer to aVkImageFormatPropertiesstructure
Return Codes
- Success
- -
VK_SUCCESS
- Failure
- -
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
VK_ERROR_FORMAT_NOT_SUPPORTED
See Also
VkFormat, VkImageCreateFlags,
VkImageFormatProperties, VkImageTiling, VkImageType,
VkImageUsageFlags, VkPhysicalDevice
data VkExtent3D Source #
VkExtent3D - Structure specifying a three-dimensional extent
Description
See Also
VkBufferImageCopy,
VkImageCopy,
VkImageCreateInfo,
VkImageFormatProperties,
VkImageResolve,
VkQueueFamilyProperties,
VkSparseImageFormatProperties,
VkSparseImageMemoryBind
Constructors
| VkExtent3D | |
Instances
data VkPhysicalDeviceProperties Source #
VkPhysicalDeviceProperties - Structure specifying physical device properties
Description
The vendorID and deviceID fields are provided to allow applications
to adapt to device characteristics that are not adequately exposed by
other Vulkan queries.
Note
These may include performance profiles, hardware errata, or other characteristics.
The vendor identified by vendorID is the entity responsible for the
most salient characteristics of the underlying implementation of the
VkPhysicalDevice being queried.
Note
For example, in the case of a discrete GPU implementation, this should be the GPU chipset vendor. In the case of a hardware accelerator integrated into a system-on-chip (SoC), this should be the supplier of the silicon IP used to create the accelerator.
If the vendor has a
PCI vendor ID, the low
16 bits of vendorID must contain that PCI vendor ID, and the
remaining bits must be set to zero. Otherwise, the value returned
must be a valid Khronos vendor ID, obtained as described in the
Vulkan Documentation and Extensions
document in the section “Registering a Vendor ID with Khronos”. Khronos
vendor IDs are allocated starting at 0x10000, to distinguish them from
the PCI vendor ID namespace.
The vendor is also responsible for the value returned in deviceID. If
the implementation is driven primarily by a
PCI device with a
PCI device ID, the low 16 bits of deviceID
must contain that PCI device ID, and the remaining bits must be set
to zero. Otherwise, the choice of what values to return may be
dictated by operating system or platform policies - but should
uniquely identify both the device version and any major configuration
options (for example, core count in the case of multicore devices).
Note
The same device ID should be used for all physical implementations of that device version and configuration. For example, all uses of a specific silicon IP GPU version and configuration should use the same device ID, even if those uses occur in different SoCs.
See Also
VkPhysicalDeviceLimits,
VkPhysicalDeviceProperties2,
VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType,
vkGetPhysicalDeviceProperties
Constructors
| VkPhysicalDeviceProperties | |
Fields
| |
data VkApplicationInfo Source #
VkApplicationInfo - Structure specifying application info
Description
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_APPLICATION_INFO
pNextmust beNULL- If
pApplicationNameis notNULL,pApplicationNamemust be a null-terminated UTF-8 string - If
pEngineNameis notNULL,pEngineNamemust be a null-terminated UTF-8 string
See Also
Constructors
| VkApplicationInfo | |
Fields
| |
data VkAllocationCallbacks Source #
VkAllocationCallbacks - Structure containing callback function pointers for memory allocation
Description
Valid Usage
pfnAllocationmust be a valid pointer to a valid user-definedPFN_vkAllocationFunction
pfnReallocationmust be a valid pointer to a valid user-definedPFN_vkReallocationFunctionpfnFreemust be a valid pointer to a valid user-definedPFN_vkFreeFunction- If either of
pfnInternalAllocationorpfnInternalFreeis notNULL, both must be valid callbacks
See Also
PFN_vkAllocationFunction, PFN_vkFreeFunction,
PFN_vkInternalAllocationNotification,
PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
vkAllocateMemory,
vkCreateAndroidSurfaceKHR,
vkCreateBuffer,
vkCreateBufferView,
vkCreateCommandPool,
vkCreateComputePipelines,
vkCreateDebugReportCallbackEXT,
vkCreateDebugUtilsMessengerEXT,
vkCreateDescriptorPool,
vkCreateDescriptorSetLayout,
vkCreateDescriptorUpdateTemplate,
vkCreateDescriptorUpdateTemplateKHR,
vkCreateDevice,
vkCreateDisplayModeKHR,
vkCreateDisplayPlaneSurfaceKHR,
vkCreateEvent,
vkCreateFence,
vkCreateFramebuffer,
vkCreateGraphicsPipelines,
vkCreateIOSSurfaceMVK,
vkCreateImage,
vkCreateImageView,
vkCreateIndirectCommandsLayoutNVX,
vkCreateInstance,
vkCreateMacOSSurfaceMVK,
vkCreateMirSurfaceKHR,
vkCreateObjectTableNVX,
vkCreatePipelineCache,
vkCreatePipelineLayout,
vkCreateQueryPool,
vkCreateRenderPass,
vkCreateSampler,
vkCreateSamplerYcbcrConversion,
vkCreateSamplerYcbcrConversionKHR,
vkCreateSemaphore,
vkCreateShaderModule,
vkCreateSharedSwapchainsKHR,
vkCreateSwapchainKHR,
vkCreateValidationCacheEXT,
vkCreateViSurfaceNN,
vkCreateWaylandSurfaceKHR,
vkCreateWin32SurfaceKHR,
vkCreateXcbSurfaceKHR,
vkCreateXlibSurfaceKHR,
vkDestroyBuffer,
vkDestroyBufferView,
vkDestroyCommandPool,
vkDestroyDebugReportCallbackEXT,
vkDestroyDebugUtilsMessengerEXT,
vkDestroyDescriptorPool,
vkDestroyDescriptorSetLayout,
vkDestroyDescriptorUpdateTemplate,
vkDestroyDescriptorUpdateTemplateKHR,
vkDestroyDevice,
vkDestroyEvent,
vkDestroyFence,
vkDestroyFramebuffer,
vkDestroyImage,
vkDestroyImageView,
vkDestroyIndirectCommandsLayoutNVX,
vkDestroyInstance,
vkDestroyObjectTableNVX,
vkDestroyPipeline,
vkDestroyPipelineCache,
vkDestroyPipelineLayout,
vkDestroyQueryPool,
vkDestroyRenderPass,
vkDestroySampler,
vkDestroySamplerYcbcrConversion,
vkDestroySamplerYcbcrConversionKHR,
vkDestroySemaphore,
vkDestroyShaderModule,
vkDestroySurfaceKHR,
vkDestroySwapchainKHR,
vkDestroyValidationCacheEXT,
vkFreeMemory,
vkRegisterDeviceEventEXT,
vkRegisterDisplayEventEXT
Constructors
| VkAllocationCallbacks | |
Fields
| |
data VkInstanceCreateInfo Source #
VkInstanceCreateInfo - Structure specifying parameters of a newly created instance
Description
Valid Usage (Implicit)
sTypemust beVK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofVkDebugReportCallbackCreateInfoEXT,VkDebugUtilsMessengerCreateInfoEXT, orVkValidationFlagsEXT - Each
sTypemember in thepNextchain must be unique flagsmust be0- If
pApplicationInfois notNULL,pApplicationInfomust be a valid pointer to a validVkApplicationInfostructure - If
enabledLayerCountis not0,ppEnabledLayerNamesmust be a valid pointer to an array ofenabledLayerCountnull-terminated UTF-8 strings - If
enabledExtensionCountis not0,ppEnabledExtensionNamesmust be a valid pointer to an array ofenabledExtensionCountnull-terminated UTF-8 strings
See Also
VkApplicationInfo, VkInstanceCreateFlags,
VkStructureType, vkCreateInstance
Constructors
| VkInstanceCreateInfo | |
Fields
| |
data VkQueueFamilyProperties Source #
VkQueueFamilyProperties - Structure providing information about a queue family
Description
The value returned in minImageTransferGranularity has a unit of
compressed texel blocks for images having a block-compressed format, and
a unit of texels otherwise.
Possible values of minImageTransferGranularity are:
(0,0,0) which indicates that only whole mip levels must be transferred using the image transfer operations on the corresponding queues. In this case, the following restrictions apply to all offset and extent parameters of image transfer operations:
- The
x,y, andzmembers of aVkOffset3Dparameter must always be zero. - The
width,height, anddepthmembers of aVkExtent3Dparameter must always match the width, height, and depth of the image subresource corresponding to the parameter, respectively.
- The
(Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In this case the following restrictions apply to all image transfer operations:
x,y, andzof aVkOffset3Dparameter must be integer multiples of Ax, Ay, and Az, respectively.widthof aVkExtent3Dparameter must be an integer multiple of Ax, or elsex+widthmust equal the width of the image subresource corresponding to the parameter.heightof aVkExtent3Dparameter must be an integer multiple of Ay, or elsey+heightmust equal the height of the image subresource corresponding to the parameter.depthof aVkExtent3Dparameter must be an integer multiple of Az, or elsez+depthmust equal the depth of the image subresource corresponding to the parameter.- If the format of the image corresponding to the parameters is one of the block-compressed formats then for the purposes of the above calculations the granularity must be scaled up by the compressed texel block dimensions.
Queues supporting graphics and/or compute operations must report
(1,1,1) in minImageTransferGranularity, meaning that there are no
additional restrictions on the granularity of image transfer operations
for these queues. Other queues supporting image transfer operations are
only required to support whole mip level transfers, thus
minImageTransferGranularity for queues belonging to such queue
families may be (0,0,0).
The Device Memory section describes memory properties queried from the physical device.
For physical device feature queries see the Features chapter.
See Also
VkExtent3D,
VkQueueFamilyProperties2,
VkQueueFlags, vkGetPhysicalDeviceQueueFamilyProperties
Constructors
| VkQueueFamilyProperties | |
Fields
| |
data VkPhysicalDeviceMemoryProperties Source #
VkPhysicalDeviceMemoryProperties - Structure specifying physical device memory properties
Description
The VkPhysicalDeviceMemoryProperties structure describes a number of
memory heaps as well as a number of memory types that can be used
to access memory allocated in those heaps. Each heap describes a memory
resource of a particular size, and each memory type describes a set of
memory properties (e.g. host cached vs uncached) that can be used with
a given memory heap. Allocations using a particular memory type will
consume resources from the heap indicated by that memory type’s heap
index. More than one memory type may share each heap, and the heaps
and memory types provide a mechanism to advertise an accurate size of
the physical memory resources while allowing the memory to be used with
a variety of different properties.
The number of memory heaps is given by memoryHeapCount and is less
than or equal to VK_MAX_MEMORY_HEAPS. Each heap is described by an
element of the memoryHeaps array as a VkMemoryHeap structure. The
number of memory types available across all memory heaps is given by
memoryTypeCount and is less than or equal to VK_MAX_MEMORY_TYPES.
Each memory type is described by an element of the memoryTypes array
as a VkMemoryType structure.
At least one heap must include VK_MEMORY_HEAP_DEVICE_LOCAL_BIT in
VkMemoryHeap::flags. If there are multiple heaps that all have
similar performance characteristics, they may all include
VK_MEMORY_HEAP_DEVICE_LOCAL_BIT. In a unified memory architecture
(UMA) system there is often only a single memory heap which is
considered to be equally “local” to the host and to the device, and such
an implementation must advertise the heap as device-local.
Each memory type returned by vkGetPhysicalDeviceMemoryProperties
must have its propertyFlags set to one of the following values:
- 0
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BITVK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BITVK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BITVK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BITVK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BITVK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BITVK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
There must be at least one memory type with both the
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bits set in its propertyFlags.
There must be at least one memory type with the
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set in its propertyFlags.
For each pair of elements X and Y returned in memoryTypes,
X must be placed at a lower index position than Y if:
- either the set of bit flags returned in the
propertyFlagsmember of X is a strict subset of the set of bit flags returned in thepropertyFlagsmember of Y. - or the
propertyFlagsmembers of X and Y are equal, and X belongs to a memory heap with greater performance (as determined in an implementation-specific manner).
Note
There is no ordering requirement between X and Y elements for
the case their propertyFlags members are not in a subset relation.
That potentially allows more than one possible way to order the same set
of memory types. Notice that the
list of all allowed memory property flag combinations
is written in the required order. But if instead
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT was before
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, the list would still be in the
required order.
This ordering requirement enables applications to use a simple search loop to select the desired memory type along the lines of:
// Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties`
int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties,
uint32_t memoryTypeBitsRequirement,
VkMemoryPropertyFlags requiredProperties) {
const uint32_t memoryCount = pMemoryProperties->memoryTypeCount;
for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) {
const uint32_t memoryTypeBits = (1 << memoryIndex);
const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits;
const VkMemoryPropertyFlags properties =
pMemoryProperties->memoryTypes[memoryIndex].propertyFlags;
const bool hasRequiredProperties =
(properties & requiredProperties) == requiredProperties;
if (isRequiredMemoryType && hasRequiredProperties)
return static_cast<int32_t>(memoryIndex);
}
// failed to find memory type
return -1;
}
// Try to find an optimal memory type, or if it does not exist try fallback memory type
// `device` is the VkDevice
// `image` is the VkImage that requires memory to be bound
// `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties
// `requiredProperties` are the property flags that must be present
// `optimalProperties` are the property flags that are preferred by the application
VkMemoryRequirements memoryRequirements;
vkGetImageMemoryRequirements(device, image, &memoryRequirements);
int32_t memoryType =
findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties);
if (memoryType == -1) // not found; try fallback properties
memoryType =
findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);See Also
VkMemoryHeap, VkMemoryType,
VkPhysicalDeviceMemoryProperties2,
vkGetPhysicalDeviceMemoryProperties
Constructors
| VkPhysicalDeviceMemoryProperties | |
Fields
| |
data VkMemoryType Source #
VkMemoryType - Structure specifying memory type
Description
See Also
Constructors
| VkMemoryType | |
Fields
| |
Instances
data VkMemoryHeap Source #
VkMemoryHeap - Structure specifying a memory heap
Description
See Also
VkDeviceSize, VkMemoryHeapFlags, VkPhysicalDeviceMemoryProperties
Constructors
| VkMemoryHeap | |
Fields
| |
Instances
data VkFormatProperties Source #
VkFormatProperties - Structure specifying image format properties
Description
Note
If no format feature flags are supported, the format itself is not supported, and images of that format cannot be created.
If format is a block-compression format, then buffers must not
support any features for the format.
See Also
VkFormatFeatureFlags,
VkFormatProperties2,
vkGetPhysicalDeviceFormatProperties
Constructors
| VkFormatProperties | |
Fields
| |
data VkImageFormatProperties Source #
VkImageFormatProperties - Structure specifying a image format properties
Members
maxExtentare the maximum image dimensions. See the Allowed Extent Values section below for how these values are constrained bytype.
maxMipLevelsis the maximum number of mipmap levels.maxMipLevelsmust be equal to ⌈log2(max(width,height,depth))⌉ + 1, wherewidth,height, anddepthare taken from the corresponding members ofmaxExtent, except when one of the following conditions is true, in which case it may instead be1:vkGetPhysicalDeviceImageFormatProperties::tilingwasVK_IMAGE_TILING_LINEAR- the
VkPhysicalDeviceImageFormatInfo2::pNextchain included an instance ofVkPhysicalDeviceExternalImageFormatInfowith a handle type included in thehandleTypesmember for which mipmap image support is not required
maxArrayLayersis the maximum number of array layers.maxArrayLayersmust either be equal to 1 or be greater than or equal to themaxImageArrayLayersmember ofVkPhysicalDeviceLimits. A value of 1 is valid only iftilingisVK_IMAGE_TILING_LINEARor iftypeisVK_IMAGE_TYPE_3D.sampleCountsis a bitmask ofVkSampleCountFlagBitsspecifying all the supported sample counts for this image as described below.maxResourceSizeis an upper bound on the total image size in bytes, inclusive of all image subresources. Implementations may have an address space limit on total size of a resource, which is advertised by this property.maxResourceSizemust be at least 231.
Description
Note
There is no mechanism to query the size of an image before creating it,
to compare that size against maxResourceSize. If an application
attempts to create an image that exceeds this limit, the creation will
fail and vkCreateImage will return
VK_ERROR_OUT_OF_DEVICE_MEMORY. While the advertised limit must be at
least 231, it may not be possible to create an image that approaches
that size, particularly for VK_IMAGE_TYPE_1D.
If the combination of parameters to
vkGetPhysicalDeviceImageFormatProperties is not supported by the
implementation for use in vkCreateImage,
then all members of VkImageFormatProperties will be filled with zero.
Note
Filling VkImageFormatProperties with zero for unsupported formats is
an exception to the usual rule that output structures have undefined
contents on error. This exception was unintentional, but is preserved
for backwards compatibility.
See Also
VkDeviceSize, VkExtent3D,
VkExternalImageFormatPropertiesNV,
VkImageFormatProperties2,
VkSampleCountFlags, vkGetPhysicalDeviceImageFormatProperties
Constructors
| VkImageFormatProperties | |
data VkPhysicalDeviceFeatures Source #
VkPhysicalDeviceFeatures - Structure describing the fine-grained features that can be supported by an implementation
Members
The members of the VkPhysicalDeviceFeatures structure describe the
following features:
Description
robustBufferAccessspecifies that accesses to buffers are bounds-checked against the range of the buffer descriptor (as determined byVkDescriptorBufferInfo::range,VkBufferViewCreateInfo::range, or the size of the buffer). Out of bounds accesses must not cause application termination, and the effects of shader loads, stores, and atomics must conform to an implementation-dependent behavior as described below.A buffer access is considered to be out of bounds if any of the following are true:
- The pointer was formed by
OpImageTexelPointerand the coordinate is less than zero or greater than or equal to the number of whole elements in the bound range. The pointer was not formed by
OpImageTexelPointerand the object pointed to is not wholly contained within the bound range. This includes accesses performed via /variable pointers/ where the buffer descriptor being accessed cannot be statically determined. Uninitialized pointers and pointers equal toOpConstantNullare treated as pointing to a zero-sized object, so all accesses through such pointers are considered to be out of bounds.Note
If a SPIR-V
OpLoadinstruction loads a structure and the tail end of the structure is out of bounds, then all members of the structure are considered out of bounds even if the members at the end are not statically used.- If any buffer access in a given SPIR-V block is determined to be out of bounds, then any other access of the same type (load, store, or atomic) in the same SPIR-V block that accesses an address less than 16 bytes away from the out of bounds address may also be considered out of bounds.
- The pointer was formed by
Out-of-bounds buffer loads will return any of the following values:
- Values from anywhere within the memory range(s) bound to the buffer (possibly including bytes of memory past the end of the buffer, up to the end of the bound range).
Zero values, or (0,0,0,x) vectors for vector reads where x is a valid value represented in the type of the vector components and may be any of:
- 0, 1, or the maximum representable positive integer value, for signed or unsigned integer components
- 0.0 or 1.0, for floating-point components
- Out-of-bounds writes may modify values within the memory range(s) bound to the buffer, but must not modify any other memory.
- Out-of-bounds atomics may modify values within the memory range(s) bound to the buffer, but must not modify any other memory, and return an undefined value.
Vertex input attributes are considered out of bounds if the offset of the attribute in the bound vertex buffer range plus the size of the attribute is greater than either:
vertexBufferRangeSize, ifbindingStride== 0; or- (
vertexBufferRangeSize- (vertexBufferRangeSize%bindingStride))
where
vertexBufferRangeSizeis the byte size of the memory range bound to the vertex buffer binding andbindingStrideis the byte stride of the corresponding vertex input binding. Further, if any vertex input attribute using a specific vertex input binding is out of bounds, then all vertex input attributes using that vertex input binding for that vertex shader invocation are considered out of bounds.If a vertex input attribute is out of bounds, it will be assigned one of the following values:
- Values from anywhere within the memory range(s) bound to the buffer, converted according to the format of the attribute.
- Zero values, format converted according to the format of the attribute.
- Zero values, or (0,0,0,x) vectors, as described above.
- If
robustBufferAccessis not enabled, out of bounds accesses may corrupt any memory within the process and cause undefined behavior up to and including application termination.
fullDrawIndexUint32specifies the full 32-bit range of indices is supported for indexed draw calls when using aVkIndexTypeofVK_INDEX_TYPE_UINT32.maxDrawIndexedIndexValueis the maximum index value that may be used (aside from the primitive restart index, which is always 232-1 when theVkIndexTypeisVK_INDEX_TYPE_UINT32). If this feature is supported,maxDrawIndexedIndexValuemust be 232-1; otherwise it must be no smaller than 224-1. See maxDrawIndexedIndexValue.imageCubeArrayspecifies whether image views with aVkImageViewTypeofVK_IMAGE_VIEW_TYPE_CUBE_ARRAYcan be created, and that the correspondingSampledCubeArrayandImageCubeArraySPIR-V capabilities can be used in shader code.independentBlendspecifies whether theVkPipelineColorBlendAttachmentStatesettings are controlled independently per-attachment. If this feature is not enabled, theVkPipelineColorBlendAttachmentStatesettings for all color attachments must be identical. Otherwise, a differentVkPipelineColorBlendAttachmentStatecan be provided for each bound color attachment.geometryShaderspecifies whether geometry shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_GEOMETRY_BITandVK_PIPELINE_STAGE_GEOMETRY_SHADER_BITenum values must not be used. This also specifies whether shader modules can declare theGeometrycapability.tessellationShaderspecifies whether tessellation control and evaluation shaders are supported. If this feature is not enabled, theVK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, andVK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFOenum values must not be used. This also specifies whether shader modules can declare theTessellationcapability.sampleRateShadingspecifies whether Sample Shading and multisample interpolation are supported. If this feature is not enabled, thesampleShadingEnablemember of theVkPipelineMultisampleStateCreateInfostructure must be set toVK_FALSEand theminSampleShadingmember is ignored. This also specifies whether shader modules can declare theSampleRateShadingcapability.dualSrcBlendspecifies whether blend operations which take two sources are supported. If this feature is not enabled, theVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHA, andVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHAenum values must not be used as source or destination blending factors. See {html_spec_relative}#framebuffer-dsb.logicOpspecifies whether logic operations are supported. If this feature is not enabled, thelogicOpEnablemember of theVkPipelineColorBlendStateCreateInfostructure must be set toVK_FALSE, and thelogicOpmember is ignored.multiDrawIndirectspecifies whether multiple draw indirect is supported. If this feature is not enabled, thedrawCountparameter to thevkCmdDrawIndirectandvkCmdDrawIndexedIndirectcommands must be 0 or 1. ThemaxDrawIndirectCountmember of theVkPhysicalDeviceLimitsstructure must also be 1 if this feature is not supported. See maxDrawIndirectCount.drawIndirectFirstInstancespecifies whether indirect draw calls support thefirstInstanceparameter. If this feature is not enabled, thefirstInstancemember of allVkDrawIndirectCommandandVkDrawIndexedIndirectCommandstructures that are provided to thevkCmdDrawIndirectandvkCmdDrawIndexedIndirectcommands must be 0.depthClampspecifies whether depth clamping is supported. If this feature is not enabled, thedepthClampEnablemember of theVkPipelineRasterizationStateCreateInfostructure must be set toVK_FALSE. Otherwise, settingdepthClampEnabletoVK_TRUEwill enable depth clamping.depthBiasClampspecifies whether depth bias clamping is supported. If this feature is not enabled, thedepthBiasClampmember of theVkPipelineRasterizationStateCreateInfostructure must be set to 0.0 unless theVK_DYNAMIC_STATE_DEPTH_BIASdynamic state is enabled, and thedepthBiasClampparameter tovkCmdSetDepthBiasmust be set to 0.0.fillModeNonSolidspecifies whether point and wireframe fill modes are supported. If this feature is not enabled, theVK_POLYGON_MODE_POINTandVK_POLYGON_MODE_LINEenum values must not be used.depthBoundsspecifies whether depth bounds tests are supported. If this feature is not enabled, thedepthBoundsTestEnablemember of theVkPipelineDepthStencilStateCreateInfostructure must be set toVK_FALSE. WhendepthBoundsTestEnableis set toVK_FALSE, theminDepthBoundsandmaxDepthBoundsmembers of theVkPipelineDepthStencilStateCreateInfostructure are ignored.wideLinesspecifies whether lines with width other than 1.0 are supported. If this feature is not enabled, thelineWidthmember of theVkPipelineRasterizationStateCreateInfostructure must be set to 1.0 unless theVK_DYNAMIC_STATE_LINE_WIDTHdynamic state is enabled, and thelineWidthparameter tovkCmdSetLineWidthmust be set to 1.0. When this feature is supported, the range and granularity of supported line widths are indicated by thelineWidthRangeandlineWidthGranularitymembers of theVkPhysicalDeviceLimitsstructure, respectively.largePointsspecifies whether points with size greater than 1.0 are supported. If this feature is not enabled, only a point size of 1.0 written by a shader is supported. The range and granularity of supported point sizes are indicated by thepointSizeRangeandpointSizeGranularitymembers of theVkPhysicalDeviceLimitsstructure, respectively.alphaToOnespecifies whether the implementation is able to replace the alpha value of the color fragment output from the fragment shader with the maximum representable alpha value for fixed-point colors or 1.0 for floating-point colors. If this feature is not enabled, then thealphaToOneEnablemember of theVkPipelineMultisampleStateCreateInfostructure must be set toVK_FALSE. Otherwise settingalphaToOneEnabletoVK_TRUEwill enable alpha-to-one behavior.multiViewportspecifies whether more than one viewport is supported. If this feature is not enabled, theviewportCountandscissorCountmembers of theVkPipelineViewportStateCreateInfostructure must be set to 1. Similarly, theviewportCountparameter to thevkCmdSetViewportcommand and thescissorCountparameter to thevkCmdSetScissorcommand must be 1, and thefirstViewportparameter to thevkCmdSetViewportcommand and thefirstScissorparameter to thevkCmdSetScissorcommand must be 0.samplerAnisotropyspecifies whether anisotropic filtering is supported. If this feature is not enabled, theanisotropyEnablemember of theVkSamplerCreateInfostructure must beVK_FALSE.textureCompressionETC2specifies whether all of the ETC2 and EAC compressed texture formats are supported. If this feature is enabled, then theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITandVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITfeatures must be supported inoptimalTilingFeaturesfor the following formats:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
VK_FORMAT_EAC_R11_UNORM_BLOCK
VK_FORMAT_EAC_R11_SNORM_BLOCK
VK_FORMAT_EAC_R11G11_UNORM_BLOCK
VK_FORMAT_EAC_R11G11_SNORM_BLOCK
vkGetPhysicalDeviceFormatPropertiesandvkGetPhysicalDeviceImageFormatPropertiescan be used to check for additional supported properties of individual formats.textureCompressionASTC_LDRspecifies whether all of the ASTC LDR compressed texture formats are supported. If this feature is enabled, then theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITandVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITfeatures must be supported inoptimalTilingFeaturesfor the following formats:VK_FORMAT_ASTC_4x4_UNORM_BLOCK
VK_FORMAT_ASTC_4x4_SRGB_BLOCK
VK_FORMAT_ASTC_5x4_UNORM_BLOCK
VK_FORMAT_ASTC_5x4_SRGB_BLOCK
VK_FORMAT_ASTC_5x5_UNORM_BLOCK
VK_FORMAT_ASTC_5x5_SRGB_BLOCK
VK_FORMAT_ASTC_6x5_UNORM_BLOCK
VK_FORMAT_ASTC_6x5_SRGB_BLOCK
VK_FORMAT_ASTC_6x6_UNORM_BLOCK
VK_FORMAT_ASTC_6x6_SRGB_BLOCK
VK_FORMAT_ASTC_8x5_UNORM_BLOCK
VK_FORMAT_ASTC_8x5_SRGB_BLOCK
VK_FORMAT_ASTC_8x6_UNORM_BLOCK
VK_FORMAT_ASTC_8x6_SRGB_BLOCK
VK_FORMAT_ASTC_8x8_UNORM_BLOCK
VK_FORMAT_ASTC_8x8_SRGB_BLOCK
VK_FORMAT_ASTC_10x5_UNORM_BLOCK
VK_FORMAT_ASTC_10x5_SRGB_BLOCK
VK_FORMAT_ASTC_10x6_UNORM_BLOCK
VK_FORMAT_ASTC_10x6_SRGB_BLOCK
VK_FORMAT_ASTC_10x8_UNORM_BLOCK
VK_FORMAT_ASTC_10x8_SRGB_BLOCK
VK_FORMAT_ASTC_10x10_UNORM_BLOCK
VK_FORMAT_ASTC_10x10_SRGB_BLOCK
VK_FORMAT_ASTC_12x10_UNORM_BLOCK
VK_FORMAT_ASTC_12x10_SRGB_BLOCK
VK_FORMAT_ASTC_12x12_UNORM_BLOCK
VK_FORMAT_ASTC_12x12_SRGB_BLOCK
vkGetPhysicalDeviceFormatPropertiesandvkGetPhysicalDeviceImageFormatPropertiescan be used to check for additional supported properties of individual formats.textureCompressionBCspecifies whether all of the BC compressed texture formats are supported. If this feature is enabled, then theVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITandVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITfeatures must be supported inoptimalTilingFeaturesfor the following formats:VK_FORMAT_BC1_RGB_UNORM_BLOCK
VK_FORMAT_BC1_RGB_SRGB_BLOCK
VK_FORMAT_BC1_RGBA_UNORM_BLOCK
VK_FORMAT_BC1_RGBA_SRGB_BLOCK
VK_FORMAT_BC2_UNORM_BLOCK
VK_FORMAT_BC2_SRGB_BLOCK
VK_FORMAT_BC3_UNORM_BLOCK
VK_FORMAT_BC3_SRGB_BLOCK
VK_FORMAT_BC4_UNORM_BLOCK
VK_FORMAT_BC4_SNORM_BLOCK
VK_FORMAT_BC5_UNORM_BLOCK
VK_FORMAT_BC5_SNORM_BLOCK
VK_FORMAT_BC6H_UFLOAT_BLOCK
VK_FORMAT_BC6H_SFLOAT_BLOCK
VK_FORMAT_BC7_UNORM_BLOCK
VK_FORMAT_BC7_SRGB_BLOCK
vkGetPhysicalDeviceFormatPropertiesandvkGetPhysicalDeviceImageFormatPropertiescan be used to check for additional supported properties of individual formats.occlusionQueryPrecisespecifies whether occlusion queries returning actual sample counts are supported. Occlusion queries are created in aVkQueryPoolby specifying thequeryTypeofVK_QUERY_TYPE_OCCLUSIONin theVkQueryPoolCreateInfostructure which is passed tovkCreateQueryPool. If this feature is enabled, queries of this type can enableVK_QUERY_CONTROL_PRECISE_BITin theflagsparameter tovkCmdBeginQuery. If this feature is not supported, the implementation supports only boolean occlusion queries. When any samples are passed, boolean queries will return a non-zero result value, otherwise a result value of zero is returned. When this feature is enabled andVK_QUERY_CONTROL_PRECISE_BITis set, occlusion queries will report the actual number of samples passed.pipelineStatisticsQueryspecifies whether the pipeline statistics queries are supported. If this feature is not enabled, queries of typeVK_QUERY_TYPE_PIPELINE_STATISTICScannot be created, and none of theVkQueryPipelineStatisticFlagBitsbits can be set in thepipelineStatisticsmember of theVkQueryPoolCreateInfostructure.vertexPipelineStoresAndAtomicsspecifies whether storage buffers and images support stores and atomic operations in the vertex, tessellation, and geometry shader stages. If this feature is not enabled, all storage image, storage texel buffers, and storage buffer variables used by these stages in shader modules must be decorated with theNonWriteabledecoration (or thereadonlymemory qualifier in GLSL).fragmentStoresAndAtomicsspecifies whether storage buffers and images support stores and atomic operations in the fragment shader stage. If this feature is not enabled, all storage image, storage texel buffers, and storage buffer variables used by the fragment stage in shader modules must be decorated with theNonWriteabledecoration (or thereadonlymemory qualifier in GLSL).shaderTessellationAndGeometryPointSizespecifies whether thePointSizebuilt-in decoration is available in the tessellation control, tessellation evaluation, and geometry shader stages. If this feature is not enabled, members decorated with thePointSizebuilt-in decoration must not be read from or written to and all points written from a tessellation or geometry shader will have a size of 1.0. This also specifies whether shader modules can declare theTessellationPointSizecapability for tessellation control and evaluation shaders, or if the shader modules can declare theGeometryPointSizecapability for geometry shaders. An implementation supporting this feature must also support one or both of the tessellationShader or geometryShader features.shaderImageGatherExtendedspecifies whether the extended set of image gather instructions are available in shader code. If this feature is not enabled, theOpImage*Gatherinstructions do not support theOffsetandConstOffsetsoperands. This also specifies whether shader modules can declare theImageGatherExtendedcapability.shaderStorageImageExtendedFormatsspecifies whether the extended storage image formats are available in shader code. If this feature is not enabled, the formats requiring theStorageImageExtendedFormatscapability are not supported for storage images. This also specifies whether shader modules can declare theStorageImageExtendedFormatscapability.shaderStorageImageMultisamplespecifies whether multisampled storage images are supported. If this feature is not enabled, images that are created with ausagethat includesVK_IMAGE_USAGE_STORAGE_BITmust be created withsamplesequal toVK_SAMPLE_COUNT_1_BIT. This also specifies whether shader modules can declare theStorageImageMultisamplecapability.shaderStorageImageReadWithoutFormatspecifies whether storage images require a format qualifier to be specified when reading from storage images. If this feature is not enabled, theOpImageReadinstruction must not have anOpTypeImageofUnknown. This also specifies whether shader modules can declare theStorageImageReadWithoutFormatcapability.shaderStorageImageWriteWithoutFormatspecifies whether storage images require a format qualifier to be specified when writing to storage images. If this feature is not enabled, theOpImageWriteinstruction must not have anOpTypeImageofUnknown. This also specifies whether shader modules can declare theStorageImageWriteWithoutFormatcapability.shaderUniformBufferArrayDynamicIndexingspecifies whether arrays of uniform buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theUniformBufferArrayDynamicIndexingcapability.shaderSampledImageArrayDynamicIndexingspecifies whether arrays of samplers or sampled images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, orVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theSampledImageArrayDynamicIndexingcapability.shaderStorageBufferArrayDynamicIndexingspecifies whether arrays of storage buffers can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theStorageBufferArrayDynamicIndexingcapability.shaderStorageImageArrayDynamicIndexingspecifies whether arrays of storage images can be indexed by dynamically uniform integer expressions in shader code. If this feature is not enabled, resources with a descriptor type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGEmust be indexed only by constant integral expressions when aggregated into arrays in shader code. This also specifies whether shader modules can declare theStorageImageArrayDynamicIndexingcapability.shaderClipDistancespecifies whether clip distances are supported in shader code. If this feature is not enabled, any members decorated with theClipDistancebuilt-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare theClipDistancecapability.shaderCullDistancespecifies whether cull distances are supported in shader code. If this feature is not enabled, any members decorated with theCullDistancebuilt-in decoration must not be read from or written to in shader modules. This also specifies whether shader modules can declare theCullDistancecapability.shaderFloat64specifies whether 64-bit floats (doubles) are supported in shader code. If this feature is not enabled, 64-bit floating-point types must not be used in shader code. This also specifies whether shader modules can declare theFloat64capability.shaderInt64specifies whether 64-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 64-bit integer types must not be used in shader code. This also specifies whether shader modules can declare theInt64capability.shaderInt16specifies whether 16-bit integers (signed and unsigned) are supported in shader code. If this feature is not enabled, 16-bit integer types must not be used in shader code. This also specifies whether shader modules can declare theInt16capability.shaderResourceResidencyspecifies whether image operations that return resource residency information are supported in shader code. If this feature is not enabled, theOpImageSparse* instructions must not be used in shader code. This also specifies whether shader modules can declare theSparseResidencycapability. The feature requires at least one of thesparseResidency*features to be supported.shaderResourceMinLodspecifies whether image operations that specify the minimum resource LOD are supported in shader code. If this feature is not enabled, theMinLodimage operand must not be used in shader code. This also specifies whether shader modules can declare theMinLodcapability.sparseBindingspecifies whether resource memory can be managed at opaque sparse block level instead of at the object level. If this feature is not enabled, resource memory must be bound only on a per-object basis using thevkBindBufferMemoryandvkBindImageMemorycommands. In this case, buffers and images must not be created withVK_BUFFER_CREATE_SPARSE_BINDING_BITandVK_IMAGE_CREATE_SPARSE_BINDING_BITset in theflagsmember of theVkBufferCreateInfoandVkImageCreateInfostructures, respectively. Otherwise resource memory can be managed as described in Sparse Resource Features.sparseResidencyBufferspecifies whether the device can access partially resident buffers. If this feature is not enabled, buffers must not be created withVK_BUFFER_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkBufferCreateInfostructure.sparseResidencyImage2Dspecifies whether the device can access partially resident 2D images with 1 sample per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_1_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkImageCreateInfostructure.sparseResidencyImage3Dspecifies whether the device can access partially resident 3D images. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_3Dmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkImageCreateInfostructure.sparseResidency2Samplesspecifies whether the physical device can access partially resident 2D images with 2 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_2_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkImageCreateInfostructure.sparseResidency4Samplesspecifies whether the physical device can access partially resident 2D images with 4 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_4_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkImageCreateInfostructure.sparseResidency8Samplesspecifies whether the physical device can access partially resident 2D images with 8 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_8_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkImageCreateInfostructure.sparseResidency16Samplesspecifies whether the physical device can access partially resident 2D images with 16 samples per pixel. If this feature is not enabled, images with animageTypeofVK_IMAGE_TYPE_2Dandsamplesset toVK_SAMPLE_COUNT_16_BITmust not be created withVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITset in theflagsmember of theVkImageCreateInfostructure.sparseResidencyAliasedspecifies whether the physical device can correctly access data aliased into multiple locations. If this feature is not enabled, theVK_BUFFER_CREATE_SPARSE_ALIASED_BITandVK_IMAGE_CREATE_SPARSE_ALIASED_BITenum values must not be used inflagsmembers of theVkBufferCreateInfoandVkImageCreateInfostructures, respectively.variableMultisampleRatespecifies whether all pipelines that will be bound to a command buffer during a subpass with no attachments must have the same value forVkPipelineMultisampleStateCreateInfo::rasterizationSamples. If set toVK_TRUE, the implementation supports variable multisample rates in a subpass with no attachments. If set toVK_FALSE, then all pipelines bound in such a subpass must have the same multisample rate. This has no effect in situations where a subpass uses any attachments.inheritedQueriesspecifies whether a secondary command buffer may be executed while a query is active.
See Also
VkBool32, VkDeviceCreateInfo,
VkPhysicalDeviceFeatures2,
vkGetPhysicalDeviceFeatures
Constructors
data VkPhysicalDeviceSparseProperties Source #
VkPhysicalDeviceSparseProperties - Structure specifying physical device sparse memory properties
Description
See Also
VkBool32, VkPhysicalDeviceProperties
Constructors
| VkPhysicalDeviceSparseProperties | |
Fields
| |
data VkPhysicalDeviceLimits Source #
VkPhysicalDeviceLimits - Structure reporting implementation-dependent physical device limits
Members
maxImageDimension1Dis the maximum dimension (width) supported for all images created with animageTypeofVK_IMAGE_TYPE_1D.
maxImageDimension2Dis the maximum dimension (widthorheight) supported for all images created with animageTypeofVK_IMAGE_TYPE_2Dand withoutVK_IMAGE_CREATE_CUBE_COMPATIBLE_BITset inflags.maxImageDimension3Dis the maximum dimension (width,height, ordepth) supported for all images created with animageTypeofVK_IMAGE_TYPE_3D.maxImageDimensionCubeis the maximum dimension (widthorheight) supported for all images created with animageTypeofVK_IMAGE_TYPE_2Dand withVK_IMAGE_CREATE_CUBE_COMPATIBLE_BITset inflags.maxImageArrayLayersis the maximum number of layers (arrayLayers) for an image.maxTexelBufferElementsis the maximum number of addressable texels for a buffer view created on a buffer which was created with theVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITorVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BITset in theusagemember of theVkBufferCreateInfostructure.maxUniformBufferRangeis the maximum value that can be specified in therangemember of anyVkDescriptorBufferInfostructures passed to a call tovkUpdateDescriptorSetsfor descriptors of typeVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC.maxStorageBufferRangeis the maximum value that can be specified in therangemember of anyVkDescriptorBufferInfostructures passed to a call tovkUpdateDescriptorSetsfor descriptors of typeVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC.maxPushConstantsSizeis the maximum size, in bytes, of the pool of push constant memory. For each of the push constant ranges indicated by thepPushConstantRangesmember of theVkPipelineLayoutCreateInfostructure, (offset+size) must be less than or equal to this limit.maxMemoryAllocationCountis the maximum number of device memory allocations, as created byvkAllocateMemory, which can simultaneously exist.maxSamplerAllocationCountis the maximum number of sampler objects, as created byvkCreateSampler, which can simultaneously exist on a device.bufferImageGranularityis the granularity, in bytes, at which buffer or linear image resources, and optimal image resources can be bound to adjacent offsets in the sameVkDeviceMemoryobject without aliasing. See Buffer-Image Granularity for more details.sparseAddressSpaceSizeis the total amount of address space available, in bytes, for sparse memory resources. This is an upper bound on the sum of the size of all sparse resources, regardless of whether any memory is bound to them.maxBoundDescriptorSetsis the maximum number of descriptor sets that can be simultaneously used by a pipeline. AllDescriptorSetdecorations in shader modules must have a value less thanmaxBoundDescriptorSets. See {html_spec_relative}#descriptorsets-sets.maxPerStageDescriptorSamplersis the maximum number of samplers that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_SAMPLERorVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. A descriptor is accessible to a shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See {html_spec_relative}#descriptorsets-sampler and {html_spec_relative}#descriptorsets-combinedimagesampler.maxPerStageDescriptorUniformBuffersis the maximum number of uniform buffers that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. A descriptor is accessible to a shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See {html_spec_relative}#descriptorsets-uniformbuffer and {html_spec_relative}#descriptorsets-uniformbufferdynamic.maxPerStageDescriptorStorageBuffersis the maximum number of storage buffers that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See {html_spec_relative}#descriptorsets-storagebuffer and {html_spec_relative}#descriptorsets-storagebufferdynamic.maxPerStageDescriptorSampledImagesis the maximum number of sampled images that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, orVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See {html_spec_relative}#descriptorsets-combinedimagesampler, {html_spec_relative}#descriptorsets-sampledimage, and {html_spec_relative}#descriptorsets-uniformtexelbuffer.maxPerStageDescriptorStorageImagesis the maximum number of storage images that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE, orVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See {html_spec_relative}#descriptorsets-storageimage, and {html_spec_relative}#descriptorsets-storagetexelbuffer.maxPerStageDescriptorInputAttachmentsis the maximum number of input attachments that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. These are only supported for the fragment stage. See {html_spec_relative}#descriptorsets-inputattachment.maxPerStageResourcesis the maximum number of resources that can be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, orVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit.maxDescriptorSetSamplersis the maximum number of samplers that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_SAMPLERorVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-sampler and {html_spec_relative}#descriptorsets-combinedimagesampler.maxDescriptorSetUniformBuffersis the maximum number of uniform buffers that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-uniformbuffer and {html_spec_relative}#descriptorsets-uniformbufferdynamic.maxDescriptorSetUniformBuffersDynamicis the maximum number of dynamic uniform buffers that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-uniformbufferdynamic.maxDescriptorSetStorageBuffersis the maximum number of storage buffers that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-storagebuffer and {html_spec_relative}#descriptorsets-storagebufferdynamic.maxDescriptorSetStorageBuffersDynamicis the maximum number of dynamic storage buffers that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-storagebufferdynamic.maxDescriptorSetSampledImagesis the maximum number of sampled images that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, orVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-combinedimagesampler, {html_spec_relative}#descriptorsets-sampledimage, and {html_spec_relative}#descriptorsets-uniformtexelbuffer.maxDescriptorSetStorageImagesis the maximum number of storage images that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE, orVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-storageimage, and {html_spec_relative}#descriptorsets-storagetexelbuffer.maxDescriptorSetInputAttachmentsis the maximum number of input attachments that can be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTcount against this limit. Only descriptors in descriptor set layouts created without theVK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXTbit set count against this limit. See {html_spec_relative}#descriptorsets-inputattachment.maxVertexInputAttributesis the maximum number of vertex input attributes that can be specified for a graphics pipeline. These are described in the array ofVkVertexInputAttributeDescriptionstructures that are provided at graphics pipeline creation time via thepVertexAttributeDescriptionsmember of theVkPipelineVertexInputStateCreateInfostructure. See {html_spec_relative}#fxvertex-attrib and {html_spec_relative}#fxvertex-input.maxVertexInputBindingsis the maximum number of vertex buffers that can be specified for providing vertex attributes to a graphics pipeline. These are described in the array ofVkVertexInputBindingDescriptionstructures that are provided at graphics pipeline creation time via thepVertexBindingDescriptionsmember of theVkPipelineVertexInputStateCreateInfostructure. Thebindingmember ofVkVertexInputBindingDescriptionmust be less than this limit. See {html_spec_relative}#fxvertex-input.maxVertexInputAttributeOffsetis the maximum vertex input attribute offset that can be added to the vertex input binding stride. Theoffsetmember of theVkVertexInputAttributeDescriptionstructure must be less than or equal to this limit. See {html_spec_relative}#fxvertex-input.maxVertexInputBindingStrideis the maximum vertex input binding stride that can be specified in a vertex input binding. Thestridemember of theVkVertexInputBindingDescriptionstructure must be less than or equal to this limit. See {html_spec_relative}#fxvertex-input.maxVertexOutputComponentsis the maximum number of components of output variables which can be output by a vertex shader. See {html_spec_relative}#shaders-vertex.maxTessellationGenerationLevelis the maximum tessellation generation level supported by the fixed-function tessellation primitive generator. See {html_spec_relative}#tessellation.maxTessellationPatchSizeis the maximum patch size, in vertices, of patches that can be processed by the tessellation control shader and tessellation primitive generator. ThepatchControlPointsmember of theVkPipelineTessellationStateCreateInfostructure specified at pipeline creation time and the value provided in theOutputVerticesexecution mode of shader modules must be less than or equal to this limit. See {html_spec_relative}#tessellation.maxTessellationControlPerVertexInputComponentsis the maximum number of components of input variables which can be provided as per-vertex inputs to the tessellation control shader stage.maxTessellationControlPerVertexOutputComponentsis the maximum number of components of per-vertex output variables which can be output from the tessellation control shader stage.maxTessellationControlPerPatchOutputComponentsis the maximum number of components of per-patch output variables which can be output from the tessellation control shader stage.maxTessellationControlTotalOutputComponentsis the maximum total number of components of per-vertex and per-patch output variables which can be output from the tessellation control shader stage.maxTessellationEvaluationInputComponentsis the maximum number of components of input variables which can be provided as per-vertex inputs to the tessellation evaluation shader stage.maxTessellationEvaluationOutputComponentsis the maximum number of components of per-vertex output variables which can be output from the tessellation evaluation shader stage.maxGeometryShaderInvocationsis the maximum invocation count supported for instanced geometry shaders. The value provided in theInvocationsexecution mode of shader modules must be less than or equal to this limit. See {html_spec_relative}#geometry.maxGeometryInputComponentsis the maximum number of components of input variables which can be provided as inputs to the geometry shader stage.maxGeometryOutputComponentsis the maximum number of components of output variables which can be output from the geometry shader stage.maxGeometryOutputVerticesis the maximum number of vertices which can be emitted by any geometry shader.maxGeometryTotalOutputComponentsis the maximum total number of components of output, across all emitted vertices, which can be output from the geometry shader stage.maxFragmentInputComponentsis the maximum number of components of input variables which can be provided as inputs to the fragment shader stage.maxFragmentOutputAttachmentsis the maximum number of output attachments which can be written to by the fragment shader stage.maxFragmentDualSrcAttachmentsis the maximum number of output attachments which can be written to by the fragment shader stage when blending is enabled and one of the dual source blend modes is in use. See {html_spec_relative}#framebuffer-dsb and dualSrcBlend.maxFragmentCombinedOutputResourcesis the total number of storage buffers, storage images, and output buffers which can be used in the fragment shader stage.maxComputeSharedMemorySizeis the maximum total storage size, in bytes, of all variables declared with theWorkgroupLocalstorage class in shader modules (or with thesharedstorage qualifier in GLSL) in the compute shader stage.maxComputeWorkGroupCount[3] is the maximum number of local workgroups that can be dispatched by a single dispatch command. These three values represent the maximum number of local workgroups for the X, Y, and Z dimensions, respectively. The workgroup count parameters to the dispatch commands must be less than or equal to the corresponding limit. See {html_spec_relative}#dispatch.maxComputeWorkGroupInvocationsis the maximum total number of compute shader invocations in a single local workgroup. The product of the X, Y, and Z sizes as specified by theLocalSizeexecution mode in shader modules and by the object decorated by theWorkgroupSizedecoration must be less than or equal to this limit.maxComputeWorkGroupSize[3] is the maximum size of a local compute workgroup, per dimension. These three values represent the maximum local workgroup size in the X, Y, and Z dimensions, respectively. Thex,y, andzsizes specified by theLocalSizeexecution mode and by the object decorated by theWorkgroupSizedecoration in shader modules must be less than or equal to the corresponding limit.subPixelPrecisionBitsis the number of bits of subpixel precision in framebuffer coordinates xf and yf. See {html_spec_relative}#primsrast.subTexelPrecisionBitsis the number of bits of precision in the division along an axis of an image used for minification and magnification filters. 2subTexelPrecisionBitsis the actual number of divisions along each axis of the image represented. Sub-texel values calculated during image sampling will snap to these locations when generating the filtered results.mipmapPrecisionBitsis the number of bits of division that the LOD calculation for mipmap fetching get snapped to when determining the contribution from each mip level to the mip filtered results. 2mipmapPrecisionBitsis the actual number of divisions.Note
For example, if this value is 2 bits then when linearly filtering between two levels, each level could: contribute: 0%, 33%, 66%, or 100% (this is just an example and the amount of contribution should be covered by different equations in the spec).
maxDrawIndexedIndexValueis the maximum index value that can be used for indexed draw calls when using 32-bit indices. This excludes the primitive restart index value of 0xFFFFFFFF. See fullDrawIndexUint32.maxDrawIndirectCountis the maximum draw count that is supported for indirect draw calls. See multiDrawIndirect.maxSamplerLodBiasis the maximum absolute sampler LOD bias. The sum of themipLodBiasmember of theVkSamplerCreateInfostructure and theBiasoperand of image sampling operations in shader modules (or 0 if noBiasoperand is provided to an image sampling operation) are clamped to the range [-maxSamplerLodBias,+maxSamplerLodBias]. See {html_spec_relative}#samplers-mipLodBias.maxSamplerAnisotropyis the maximum degree of sampler anisotropy. The maximum degree of anisotropic filtering used for an image sampling operation is the minimum of themaxAnisotropymember of theVkSamplerCreateInfostructure and this limit. See {html_spec_relative}#samplers-maxAnisotropy.maxViewportsis the maximum number of active viewports. TheviewportCountmember of theVkPipelineViewportStateCreateInfostructure that is provided at pipeline creation must be less than or equal to this limit.maxViewportDimensions[2] are the maximum viewport dimensions in the X (width) and Y (height) dimensions, respectively. The maximum viewport dimensions must be greater than or equal to the largest image which can be created and used as a framebuffer attachment. See Controlling the Viewport.viewportBoundsRange[2] is the [minimum, maximum] range that the corners of a viewport must be contained in. This range must be at least [-2 ×size, 2 ×size- 1], wheresize= max(maxViewportDimensions[0],maxViewportDimensions[1]). See Controlling the Viewport.Note
The intent of the
viewportBoundsRangelimit is to allow a maximum sized viewport to be arbitrarily shifted relative to the output target as long as at least some portion intersects. This would give a bounds limit of [-size+ 1, 2 ×size- 1] which would allow all possible non-empty-set intersections of the output target and the viewport. Since these numbers are typically powers of two, picking the signed number range using the smallest possible number of bits ends up with the specified range.viewportSubPixelBitsis the number of bits of subpixel precision for viewport bounds. The subpixel precision that floating-point viewport bounds are interpreted at is given by this limit.minMemoryMapAlignmentis the minimum required alignment, in bytes, of host visible memory allocations within the host address space. When mapping a memory allocation withvkMapMemory, subtractingoffsetbytes from the returned pointer will always produce an integer multiple of this limit. See {html_spec_relative}#memory-device-hostaccess.minTexelBufferOffsetAlignmentis the minimum required alignment, in bytes, for theoffsetmember of theVkBufferViewCreateInfostructure for texel buffers. When a buffer view is created for a buffer which was created withVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITorVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BITset in theusagemember of theVkBufferCreateInfostructure, theoffsetmust be an integer multiple of this limit.minUniformBufferOffsetAlignmentis the minimum required alignment, in bytes, for theoffsetmember of theVkDescriptorBufferInfostructure for uniform buffers. When a descriptor of typeVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICis updated, theoffsetmust be an integer multiple of this limit. Similarly, dynamic offsets for uniform buffers must be multiples of this limit.minStorageBufferOffsetAlignmentis the minimum required alignment, in bytes, for theoffsetmember of theVkDescriptorBufferInfostructure for storage buffers. When a descriptor of typeVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICis updated, theoffsetmust be an integer multiple of this limit. Similarly, dynamic offsets for storage buffers must be multiples of this limit.minTexelOffsetis the minimum offset value for theConstOffsetimage operand of any of theOpImageSample* orOpImageFetch* image instructions.maxTexelOffsetis the maximum offset value for theConstOffsetimage operand of any of theOpImageSample* orOpImageFetch* image instructions.minTexelGatherOffsetis the minimum offset value for theOffsetorConstOffsetsimage operands of any of theOpImage*Gatherimage instructions.maxTexelGatherOffsetis the maximum offset value for theOffsetorConstOffsetsimage operands of any of theOpImage*Gatherimage instructions.minInterpolationOffsetis the minimum negative offset value for theoffsetoperand of theInterpolateAtOffsetextended instruction.maxInterpolationOffsetis the maximum positive offset value for theoffsetoperand of theInterpolateAtOffsetextended instruction.subPixelInterpolationOffsetBitsis the number of subpixel fractional bits that thexandyoffsets to theInterpolateAtOffsetextended instruction may be rounded to as fixed-point values.maxFramebufferWidthis the maximum width for a framebuffer. Thewidthmember of theVkFramebufferCreateInfostructure must be less than or equal to this limit.maxFramebufferHeightis the maximum height for a framebuffer. Theheightmember of theVkFramebufferCreateInfostructure must be less than or equal to this limit.maxFramebufferLayersis the maximum layer count for a layered framebuffer. Thelayersmember of theVkFramebufferCreateInfostructure must be less than or equal to this limit.framebufferColorSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the color sample counts that are supported for all framebuffer color attachments with floating- or fixed-point formats. There is no limit that specifies the color sample counts that are supported for all color attachments with integer formats.framebufferDepthSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the supported depth sample counts for all framebuffer depth/stencil attachments, when the format includes a depth component.framebufferStencilSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the supported stencil sample counts for all framebuffer depth/stencil attachments, when the format includes a stencil component.framebufferNoAttachmentsSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the supported sample counts for a framebuffer with no attachments.maxColorAttachmentsis the maximum number of color attachments that can be used by a subpass in a render pass. ThecolorAttachmentCountmember of theVkSubpassDescriptionstructure must be less than or equal to this limit.sampledImageColorSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the sample counts supported for all 2D images created withVK_IMAGE_TILING_OPTIMAL,usagecontainingVK_IMAGE_USAGE_SAMPLED_BIT, and a non-integer color format.sampledImageIntegerSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the sample counts supported for all 2D images created withVK_IMAGE_TILING_OPTIMAL,usagecontainingVK_IMAGE_USAGE_SAMPLED_BIT, and an integer color format.sampledImageDepthSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the sample counts supported for all 2D images created withVK_IMAGE_TILING_OPTIMAL,usagecontainingVK_IMAGE_USAGE_SAMPLED_BIT, and a depth format.sampledImageStencilSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the sample supported for all 2D images created withVK_IMAGE_TILING_OPTIMAL,usagecontainingVK_IMAGE_USAGE_SAMPLED_BIT, and a stencil format.storageImageSampleCountsis a bitmask1 ofVkSampleCountFlagBitsindicating the sample counts supported for all 2D images created withVK_IMAGE_TILING_OPTIMAL, andusagecontainingVK_IMAGE_USAGE_STORAGE_BIT.maxSampleMaskWordsis the maximum number of array elements of a variable decorated with theSampleMaskbuilt-in decoration.timestampComputeAndGraphicsspecifies support for timestamps on all graphics and compute queues. If this limit is set toVK_TRUE, all queues that advertise theVK_QUEUE_GRAPHICS_BITorVK_QUEUE_COMPUTE_BITin theVkQueueFamilyProperties::queueFlagssupportVkQueueFamilyProperties::timestampValidBitsof at least 36. See Timestamp Queries.timestampPeriodis the number of nanoseconds required for a timestamp query to be incremented by 1. See Timestamp Queries.maxClipDistancesis the maximum number of clip distances that can be used in a single shader stage. The size of any array declared with theClipDistancebuilt-in decoration in a shader module must be less than or equal to this limit.maxCullDistancesis the maximum number of cull distances that can be used in a single shader stage. The size of any array declared with theCullDistancebuilt-in decoration in a shader module must be less than or equal to this limit.maxCombinedClipAndCullDistancesis the maximum combined number of clip and cull distances that can be used in a single shader stage. The sum of the sizes of any pair of arrays declared with theClipDistanceandCullDistancebuilt-in decoration used by a single shader stage in a shader module must be less than or equal to this limit.discreteQueuePrioritiesis the number of discrete priorities that can be assigned to a queue based on the value of each member ofVkDeviceQueueCreateInfo::pQueuePriorities. This must be at least 2, and levels must be spread evenly over the range, with at least one level at 1.0, and another at 0.0. See {html_spec_relative}#devsandqueues-priority.pointSizeRange[2] is the range [minimum,maximum] of supported sizes for points. Values written to variables decorated with thePointSizebuilt-in decoration are clamped to this range.lineWidthRange[2] is the range [minimum,maximum] of supported widths for lines. Values specified by thelineWidthmember of theVkPipelineRasterizationStateCreateInfoor thelineWidthparameter tovkCmdSetLineWidthare clamped to this range.pointSizeGranularityis the granularity of supported point sizes. Not all point sizes in the range defined bypointSizeRangeare supported. This limit specifies the granularity (or increment) between successive supported point sizes.lineWidthGranularityis the granularity of supported line widths. Not all line widths in the range defined bylineWidthRangeare supported. This limit specifies the granularity (or increment) between successive supported line widths.strictLinesspecifies whether lines are rasterized according to the preferred method of rasterization. If set toVK_FALSE, lines may be rasterized under a relaxed set of rules. If set toVK_TRUE, lines are rasterized as per the strict definition. See Basic Line Segment Rasterization.standardSampleLocationsspecifies whether rasterization uses the standard sample locations as documented in Multisampling. If set toVK_TRUE, the implementation uses the documented sample locations. If set toVK_FALSE, the implementation may use different sample locations.optimalBufferCopyOffsetAlignmentis the optimal buffer offset alignment in bytes forvkCmdCopyBufferToImageandvkCmdCopyImageToBuffer. The per texel alignment requirements are enforced, but applications should use the optimal alignment for optimal performance and power use.optimalBufferCopyRowPitchAlignmentis the optimal buffer row pitch alignment in bytes forvkCmdCopyBufferToImageandvkCmdCopyImageToBuffer. Row pitch is the number of bytes between texels with the same X coordinate in adjacent rows (Y coordinates differ by one). The per texel alignment requirements are enforced, but applications should use the optimal alignment for optimal performance and power use.nonCoherentAtomSizeis the size and alignment in bytes that bounds concurrent access to host-mapped device memory.VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectanglesis the maximum number of active discard rectangles. This limit can be queried by setting thepNextpointer from aVkPhysicalDeviceProperties2object to an instance ofVkPhysicalDeviceDiscardRectanglePropertiesEXTand usingvkGetPhysicalDeviceProperties2to fill out the members.VkPhysicalDevicePointClippingProperties::pointClippingBehaviordefines the clipping behavior of points. This limit can be queried by setting thepNextpointer from aVkPhysicalDeviceProperties2object to an instance ofVkPhysicalDevicePointClippingPropertiesand usingvkGetPhysicalDeviceProperties2to fill out the members.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::maxVertexAttribDivisoris the maximum value of the number of instances that will repeat the value of vertex attribute data when instanced rendering is enabled. This limit can be queried by setting thepNextpointer from aVkPhysicalDeviceProperties2object to an instance ofVkPhysicalDeviceVertexAttributeDivisorPropertiesEXTand usingvkGetPhysicalDeviceProperties2to fill out the members.
Description
- 1
- For all bitmasks of
VkSampleCountFlagBits, the sample count limits defined above represent the minimum supported sample counts for each image type. Individual images may support additional sample counts, which are queried usingvkGetPhysicalDeviceImageFormatPropertiesas described in Supported Sample Counts.
See Also
VkBool32, VkDeviceSize, VkPhysicalDeviceProperties,
VkSampleCountFlags
Constructors
type VkQueueFlags = VkQueueFlagBits Source #
VkQueueFlags - Bitmask of VkQueueFlagBits
Description
VkQueueFlags is a bitmask type for setting a mask of zero or more
VkQueueFlagBits.
See Also
type VkMemoryPropertyFlags = VkMemoryPropertyFlagBits Source #
VkMemoryPropertyFlags - Bitmask of VkMemoryPropertyFlagBits
Description
VkMemoryPropertyFlags is a bitmask type for setting a mask of zero or
more VkMemoryPropertyFlagBits.
See Also
type VkMemoryHeapFlags = VkMemoryHeapFlagBits Source #
VkMemoryHeapFlags - Bitmask of VkMemoryHeapFlagBits
Description
VkMemoryHeapFlags is a bitmask type for setting a mask of zero or more
VkMemoryHeapFlagBits.
See Also
type VkImageUsageFlags = VkImageUsageFlagBits Source #
VkImageUsageFlags - Bitmask of VkImageUsageFlagBits
Description
VkImageUsageFlags is a bitmask type for setting a mask of zero or more
VkImageUsageFlagBits.
See Also
VkImageCreateInfo,
VkImageUsageFlagBits,
VkImageViewUsageCreateInfo,
VkPhysicalDeviceImageFormatInfo2,
VkPhysicalDeviceSparseImageFormatInfo2,
VkSharedPresentSurfaceCapabilitiesKHR,
VkSurfaceCapabilities2EXT,
VkSurfaceCapabilitiesKHR,
VkSwapchainCreateInfoKHR,
vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
vkGetPhysicalDeviceImageFormatProperties,
vkGetPhysicalDeviceSparseImageFormatProperties
type VkImageCreateFlags = VkImageCreateFlagBits Source #
VkImageCreateFlags - Bitmask of VkImageCreateFlagBits
Description
VkImageCreateFlags is a bitmask type for setting a mask of zero or
more VkImageCreateFlagBits.
See Also
VkImageCreateFlagBits,
VkImageCreateInfo,
VkPhysicalDeviceImageFormatInfo2,
vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
vkGetPhysicalDeviceImageFormatProperties
type VkFormatFeatureFlags = VkFormatFeatureFlagBits Source #
VkFormatFeatureFlags - Bitmask of VkFormatFeatureFlagBits
Description
VkFormatFeatureFlags is a bitmask type for setting a mask of zero or
more VkFormatFeatureFlagBits.
See Also
VkAndroidHardwareBufferFormatPropertiesANDROID,
VkFormatFeatureFlagBits, VkFormatProperties
type VkSampleCountFlags = VkSampleCountFlagBits Source #
VkSampleCountFlags - Bitmask of VkSampleCountFlagBits
Description
VkSampleCountFlags is a bitmask type for setting a mask of zero or
more VkSampleCountFlagBits.
See Also
VkImageFormatProperties, VkPhysicalDeviceLimits,
VkPhysicalDeviceSampleLocationsPropertiesEXT,
VkSampleCountFlagBits
type VkDeviceSize = Word64 Source #
VkDeviceSize - Vulkan device memory size and offsets
Description
See Also
VkAndroidHardwareBufferPropertiesANDROID,
VkBindBufferMemoryInfo,
VkBindImageMemoryInfo,
VkBufferCopy,
VkBufferCreateInfo,
VkBufferImageCopy,
VkBufferMemoryBarrier,
VkBufferViewCreateInfo,
VkCmdProcessCommandsInfoNVX,
VkDescriptorBufferInfo,
VkImageFormatProperties,
VkIndirectCommandsTokenNVX,
VkMappedMemoryRange,
VkMemoryAllocateInfo, VkMemoryHeap,
VkMemoryRequirements,
VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
VkPhysicalDeviceLimits,
VkPhysicalDeviceMaintenance3Properties,
VkSparseImageMemoryBind,
VkSparseImageMemoryRequirements,
VkSparseMemoryBind,
VkSubresourceLayout,
vkBindBufferMemory,
vkBindImageMemory,
vkCmdBindIndexBuffer,
vkCmdBindVertexBuffers,
vkCmdCopyQueryPoolResults,
vkCmdDispatchIndirect,
vkCmdDrawIndexedIndirect,
vkCmdDrawIndexedIndirectCountAMD,
vkCmdDrawIndirect,
vkCmdDrawIndirectCountAMD,
vkCmdFillBuffer,
vkCmdUpdateBuffer,
vkCmdWriteBufferMarkerAMD,
vkGetDeviceMemoryCommitment,
vkGetQueryPoolResults,
vkMapMemory