vulkan 2.0.0.0 → 2.0.0.1
raw patch · 119 files changed
+27354/−21075 lines, 119 filesdep +cpphs
Dependencies added: cpphs
Files
- src/Graphics/Vulkan/Core10/Buffer.hs +63/−53
- src/Graphics/Vulkan/Core10/BufferView.hs +22/−31
- src/Graphics/Vulkan/Core10/CommandBuffer.hs +92/−105
- src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs +7600/−7126
- src/Graphics/Vulkan/Core10/CommandPool.hs +38/−52
- src/Graphics/Vulkan/Core10/Constants.hs +0/−5
- src/Graphics/Vulkan/Core10/Core.hs +120/−104
- src/Graphics/Vulkan/Core10/DescriptorSet.hs +299/−209
- src/Graphics/Vulkan/Core10/Device.hs +62/−43
- src/Graphics/Vulkan/Core10/DeviceInitialization.hs +5212/−5053
- src/Graphics/Vulkan/Core10/Event.hs +32/−54
- src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs +8/−16
- src/Graphics/Vulkan/Core10/Fence.hs +46/−62
- src/Graphics/Vulkan/Core10/Image.hs +349/−88
- src/Graphics/Vulkan/Core10/ImageView.hs +373/−194
- src/Graphics/Vulkan/Core10/LayerDiscovery.hs +16/−18
- src/Graphics/Vulkan/Core10/Memory.hs +246/−75
- src/Graphics/Vulkan/Core10/MemoryManagement.hs +78/−34
- src/Graphics/Vulkan/Core10/Pass.hs +421/−326
- src/Graphics/Vulkan/Core10/Pipeline.hs +4143/−3950
- src/Graphics/Vulkan/Core10/PipelineCache.hs +46/−69
- src/Graphics/Vulkan/Core10/PipelineLayout.hs +190/−75
- src/Graphics/Vulkan/Core10/Query.hs +51/−69
- src/Graphics/Vulkan/Core10/Queue.hs +120/−120
- src/Graphics/Vulkan/Core10/QueueSemaphore.hs +11/−21
- src/Graphics/Vulkan/Core10/Sampler.hs +85/−71
- src/Graphics/Vulkan/Core10/Shader.hs +44/−43
- src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs +114/−129
- src/Graphics/Vulkan/Core10/Version.hs +0/−22
- src/Graphics/Vulkan/Core11/DeviceInitialization.hs +3/−8
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs +27/−29
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs +9/−14
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs +36/−6
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs +352/−10
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs +175/−8
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs +401/−17
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs +500/−26
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs +176/−10
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs +136/−10
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs +45/−4
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs +181/−10
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs +68/−9
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs +443/−24
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs +51/−3
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs +190/−10
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs +214/−15
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs +579/−35
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs +81/−0
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs +173/−18
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs +115/−7
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs +229/−18
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs +876/−61
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs +4/−5
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs +44/−4
- src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs +12/−15
- src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs +62/−48
- src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs +8/−12
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs +16/−19
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs +26/−23
- src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs +6/−7
- src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs +48/−57
- src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs +3/−9
- src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs +55/−50
- src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs +31/−27
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs +65/−86
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs +91/−131
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs +136/−170
- src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs +94/−78
- src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs +1/−6
- src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs +25/−33
- src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs +27/−56
- src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs +17/−25
- src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs +14/−24
- src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs +4/−7
- src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs +17/−26
- src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs +94/−77
- src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs +10/−15
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs +46/−66
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs +6/−9
- src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs +19/−18
- src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs +46/−38
- src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs +9/−14
- src/Graphics/Vulkan/Extensions/VK_KHR_display.hs +90/−111
- src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs +27/−13
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs +36/−46
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs +48/−57
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs +27/−33
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs +30/−43
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs +39/−48
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs +69/−72
- src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs +18/−29
- src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs +7/−7
- src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs +21/−21
- src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs +10/−20
- src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs +33/−40
- src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs +13/−14
- src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs +228/−60
- src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs +182/−158
- src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs +10/−20
- src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs +19/−13
- src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs +10/−20
- src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs +10/−20
- src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs +9/−20
- src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs +10/−16
- src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs +10/−16
- src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs +9/−14
- src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs +200/−249
- src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs +13/−8
- src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs +32/−30
- src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs +26/−20
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs +13/−14
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs +26/−19
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs +13/−19
- src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs +21/−20
- src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs +11/−12
- src/Graphics/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs +3/−1
- src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs +16/−23
- src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs +20/−13
- vulkan.cabal +18/−12
src/Graphics/Vulkan/Core10/Buffer.hs view
@@ -90,7 +90,6 @@ -- | VkSharingMode - Buffer and image sharing modes -- -- = Description--- #_description# -- -- - @VK_SHARING_MODE_EXCLUSIVE@ specifies that access to any range or -- image subresource of the object will be exclusive to a single queue@@ -111,17 +110,17 @@ -- resources are not owned by any queue family; ownership is implicitly -- acquired upon first use within a queue. Once a resource using -- @VK_SHARING_MODE_EXCLUSIVE@ is owned by some queue family, the--- application /must/ perform a--- <{html_spec_relative}#synchronization-queue-transfers queue family ownership transfer>+-- application /must/ perform a [queue family ownership+-- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers) -- to make the memory contents of a range or image subresource accessible -- to a different queue family. -- -- __Note__ ----- Images still require a--- <{html_spec_relative}#resources-image-layouts layout transition> from--- @VK_IMAGE_LAYOUT_UNDEFINED@ or @VK_IMAGE_LAYOUT_PREINITIALIZED@ before--- being used on the first queue.+-- Images still require a [layout+-- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-layouts)+-- from @VK_IMAGE_LAYOUT_UNDEFINED@ or @VK_IMAGE_LAYOUT_PREINITIALIZED@+-- before being used on the first queue. -- -- A queue family /can/ take ownership of an image subresource or buffer -- range of a resource created with @VK_SHARING_MODE_EXCLUSIVE@, without an@@ -136,7 +135,6 @@ -- structures. -- -- = See Also--- #_see_also# -- -- 'VkBufferCreateInfo', 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'@@ -171,7 +169,6 @@ -- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer -- -- = See Also--- #_see_also# -- -- 'VkBufferUsageFlags' newtype VkBufferUsageFlagBits = VkBufferUsageFlagBits VkFlags@@ -209,7 +206,7 @@ -- | @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ specifies that the buffer /can/ be -- used as the source of a /transfer command/ (see the definition of--- <{html_spec_relative}#synchronization-pipeline-stages-transfer VK_PIPELINE_STAGE_TRANSFER_BIT>).+-- [@VK_PIPELINE_STAGE_TRANSFER_BIT@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer)). pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT :: VkBufferUsageFlagBits pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT = VkBufferUsageFlagBits 0x00000001 @@ -261,7 +258,10 @@ -- | @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ specifies that the buffer is -- suitable for passing as the @buffer@ parameter to @vkCmdDrawIndirect@,--- @vkCmdDrawIndexedIndirect@, or @vkCmdDispatchIndirect@.+-- @vkCmdDrawIndexedIndirect@, or @vkCmdDispatchIndirect@. It is also+-- suitable for passing as the @buffer@ member of+-- @VkIndirectCommandsTokenNVX@, or @sequencesCountBuffer@ or+-- @sequencesIndexBuffer@ member of @VkCmdProcessCommandsInfoNVX@ pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT :: VkBufferUsageFlagBits pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = VkBufferUsageFlagBits 0x00000100 -- ** VkBufferCreateFlagBits@@ -270,7 +270,6 @@ -- buffer -- -- = Description--- #_description# -- -- - @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ specifies that the buffer will -- be backed using sparse memory binding.@@ -286,13 +285,13 @@ -- the same buffer). Buffers created with this flag /must/ also be -- created with the @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ flag. ----- See--- <{html_spec_relative}#sparsememory-sparseresourcefeatures Sparse Resource Features>--- and <{html_spec_relative}#features-features Physical Device Features>+-- See [Sparse Resource+-- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures)+-- and [Physical Device+-- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features) -- for details of the sparse memory features supported on a device. -- -- = See Also--- #_see_also# -- -- 'VkBufferCreateFlags' newtype VkBufferCreateFlagBits = VkBufferCreateFlagBits VkFlags@@ -334,7 +333,6 @@ -- | vkCreateBuffer - Create a new buffer object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the buffer object. --@@ -343,14 +341,13 @@ -- creation of the buffer. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pBuffer@ points to a @VkBuffer@ handle in which the resulting -- buffer object is returned. ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the @flags@ member of @pCreateInfo@ includes@@ -373,16 +370,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',@@ -392,17 +388,15 @@ -- | vkDestroyBuffer - Destroy a buffer object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the buffer. -- -- - @buffer@ is the buffer to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -434,7 +428,6 @@ -- - Host access to @buffer@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',@@ -443,9 +436,6 @@ -- | VkBufferCreateInfo - Structure specifying the parameters of a newly -- created buffer object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @size@ /must/ be greater than @0@@@ -459,22 +449,24 @@ -- -- - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@, each element of -- @pQueueFamilyIndices@ /must/ be unique and /must/ be less than--- @pQueueFamilyPropertyCount@ returned by+-- @pQueueFamilyPropertyCount@ returned by either -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2' -- for the @physicalDevice@ that was used to create @device@ ----- - If the--- <{html_spec_relative}#features-features-sparseBinding sparse bindings>+-- - If the [sparse+-- bindings](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseBinding) -- feature is not enabled, @flags@ /must/ not contain -- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidencyBuffer sparse buffer residency>+-- - If the [sparse buffer+-- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyBuffer) -- feature is not enabled, @flags@ /must/ not contain -- @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidencyAliased sparse aliased residency>+-- - If the [sparse aliased+-- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyAliased) -- feature is not enabled, @flags@ /must/ not contain -- @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@ --@@ -482,6 +474,24 @@ -- @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@, it /must/ also contain -- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ --+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo',+-- its @handleTypes@ member /must/ only contain bits that are also in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'::@externalMemoryProperties.pname@:compatibleHandleTypes,+-- as returned by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties'+-- with @pExternalBufferInfo@->@handleType@ equal to any one of the+-- handle types specified in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo'::@handleTypes@+--+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV',+-- and the @dedicatedAllocation@ member of the chained structure is+-- @VK_TRUE@, then @flags@ /must/ not include+-- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@,+-- @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@, or+-- @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO@@@ -506,27 +516,31 @@ -- - @sharingMode@ /must/ be a valid 'VkSharingMode' value -- -- = See Also--- #_see_also# -- -- 'VkBufferCreateFlags', 'VkBufferUsageFlags', @VkDeviceSize@, -- 'VkSharingMode', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateBuffer' data VkBufferCreateInfo = VkBufferCreateInfo- { -- No documentation found for Nested "VkBufferCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBufferCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBufferCreateInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkBufferCreateFlagBits' specifying additional+ -- parameters of the buffer. vkFlags :: VkBufferCreateFlags- , -- No documentation found for Nested "VkBufferCreateInfo" "vkSize"+ , -- | @size@ is the size in bytes of the buffer to be created. vkSize :: VkDeviceSize- , -- No documentation found for Nested "VkBufferCreateInfo" "vkUsage"+ , -- | @usage@ is a bitmask of 'VkBufferUsageFlagBits' specifying allowed+ -- usages of the buffer. vkUsage :: VkBufferUsageFlags- , -- No documentation found for Nested "VkBufferCreateInfo" "vkSharingMode"+ , -- | @sharingMode@ is a 'VkSharingMode' value specifying the sharing mode of+ -- the buffer when it will be accessed by multiple queue families. vkSharingMode :: VkSharingMode- , -- No documentation found for Nested "VkBufferCreateInfo" "vkQueueFamilyIndexCount"+ , -- | @queueFamilyIndexCount@ is the number of entries in the+ -- @pQueueFamilyIndices@ array. vkQueueFamilyIndexCount :: Word32- , -- No documentation found for Nested "VkBufferCreateInfo" "vkPQueueFamilyIndices"+ , -- | @pQueueFamilyIndices@ is a list of queue families that will access this+ -- buffer (ignored if @sharingMode@ is not @VK_SHARING_MODE_CONCURRENT@). vkPQueueFamilyIndices :: Ptr Word32 } deriving (Eq, Show)@@ -553,13 +567,11 @@ -- | VkBufferUsageFlags - Bitmask of VkBufferUsageFlagBits -- -- = Description--- #_description# -- -- @VkBufferUsageFlags@ is a bitmask type for setting a mask of zero or -- more 'VkBufferUsageFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkBufferCreateInfo', 'VkBufferUsageFlagBits', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfo'@@ -567,13 +579,11 @@ -- | VkBufferCreateFlags - Bitmask of VkBufferCreateFlagBits -- -- = Description--- #_description# -- -- @VkBufferCreateFlags@ is a bitmask type for setting a mask of zero or -- more 'VkBufferCreateFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkBufferCreateFlagBits', 'VkBufferCreateInfo', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfo'
src/Graphics/Vulkan/Core10/BufferView.hs view
@@ -68,13 +68,11 @@ -- | VkBufferViewCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkBufferViewCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkBufferViewCreateInfo' newtype VkBufferViewCreateFlags = VkBufferViewCreateFlags VkFlags@@ -99,11 +97,7 @@ data VkBufferView_T -- | VkBufferView - Opaque handle to a buffer view object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet', -- 'vkCreateBufferView', 'vkDestroyBufferView'@@ -111,7 +105,6 @@ -- | vkCreateBufferView - Create a new buffer view object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the buffer view. --@@ -120,14 +113,13 @@ -- to create the buffer. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pView@ points to a @VkBufferView@ handle in which the resulting -- buffer view object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -142,16 +134,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkBufferView', 'VkBufferViewCreateInfo',@@ -160,17 +151,15 @@ -- | vkDestroyBufferView - Destroy a buffer view object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the buffer view. -- -- - @bufferView@ is the buffer view to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -202,7 +191,6 @@ -- - Host access to @bufferView@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkBufferView', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -210,9 +198,6 @@ -- | VkBufferViewCreateInfo - Structure specifying parameters of a newly -- created buffer view ----- = Description--- #_description#--- -- == Valid Usage -- -- - @offset@ /must/ be less than the size of @buffer@@@ -268,26 +253,32 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'VkBufferViewCreateFlags', @VkDeviceSize@, -- 'Graphics.Vulkan.Core10.Core.VkFormat', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateBufferView' data VkBufferViewCreateInfo = VkBufferViewCreateInfo- { -- No documentation found for Nested "VkBufferViewCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBufferViewCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBufferViewCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkBufferViewCreateFlags- , -- No documentation found for Nested "VkBufferViewCreateInfo" "vkBuffer"+ , -- | @buffer@ is a @VkBuffer@ on which the view will be created. vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkBufferViewCreateInfo" "vkFormat"+ , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' describing the+ -- format of the data elements in the buffer. vkFormat :: VkFormat- , -- No documentation found for Nested "VkBufferViewCreateInfo" "vkOffset"+ , -- | @offset@ is an offset in bytes from the base address of the buffer.+ -- Accesses to the buffer view from shaders use addressing that is relative+ -- to this starting offset. vkOffset :: VkDeviceSize- , -- No documentation found for Nested "VkBufferViewCreateInfo" "vkRange"+ , -- | @range@ is a size in bytes of the buffer view. If @range@ is equal to+ -- @VK_WHOLE_SIZE@, the range from @offset@ to the end of the buffer is+ -- used. If @VK_WHOLE_SIZE@ is used and the remaining size of the buffer is+ -- not a multiple of the element size of @format@, then the nearest smaller+ -- multiple is used. vkRange :: VkDeviceSize } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/CommandBuffer.hs view
@@ -101,7 +101,6 @@ -- | VkCommandBufferLevel - Enumerant specifying a command buffer level -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferAllocateInfo' newtype VkCommandBufferLevel = VkCommandBufferLevel Int32@@ -136,7 +135,6 @@ -- | VkQueryControlFlagBits - Bitmask specifying constraints on a query -- -- = See Also--- #_see_also# -- -- 'VkQueryControlFlags' newtype VkQueryControlFlagBits = VkQueryControlFlagBits VkFlags@@ -156,8 +154,8 @@ ) ) --- | @VK_QUERY_CONTROL_PRECISE_BIT@ specifies the precision of--- <{html_spec_relative}#queries-occlusion occlusion queries>.+-- | @VK_QUERY_CONTROL_PRECISE_BIT@ specifies the precision of [occlusion+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-occlusion). pattern VK_QUERY_CONTROL_PRECISE_BIT :: VkQueryControlFlagBits pattern VK_QUERY_CONTROL_PRECISE_BIT = VkQueryControlFlagBits 0x00000001 -- ** VkCommandBufferResetFlagBits@@ -166,7 +164,6 @@ -- buffer reset -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferResetFlags' newtype VkCommandBufferResetFlagBits = VkCommandBufferResetFlagBits VkFlags@@ -190,8 +187,8 @@ -- all memory resources currently owned by the command buffer /should/ be -- returned to the parent command pool. If this flag is not set, then the -- command buffer /may/ hold onto memory resources and reuse them when--- recording commands. @commandBuffer@ is moved to the--- <{html_spec_relative}#commandbuffers-lifecycle initial state>.+-- recording commands. @commandBuffer@ is moved to the [initial+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). pattern VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT :: VkCommandBufferResetFlagBits pattern VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = VkCommandBufferResetFlagBits 0x00000001 -- ** VkCommandBufferUsageFlagBits@@ -200,7 +197,6 @@ -- command buffer -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferUsageFlags' newtype VkCommandBufferUsageFlagBits = VkCommandBufferUsageFlagBits VkFlags@@ -245,7 +241,6 @@ -- command pool -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the command pool. --@@ -260,11 +255,16 @@ -- command buffer begins in the initial state. -- -- = Description--- #_description# ----- When command buffers are first allocated, they are in the--- <{html_spec_relative}#commandbuffers-lifecycle initial state>.+-- @vkAllocateCommandBuffers@ /can/ be used to create multiple command+-- buffers. If the creation of any of those command buffers fails, the+-- implementation /must/ destroy all successfully created command buffer+-- objects from this command, set all entries of the @pCommandBuffers@+-- array to @NULL@ and return the error. --+-- When command buffers are first allocated, they are in the [initial+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -282,16 +282,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'VkCommandBufferAllocateInfo',@@ -300,7 +299,6 @@ -- | vkFreeCommandBuffers - Free command buffers -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the command pool. --@@ -312,17 +310,16 @@ -- - @pCommandBuffers@ is an array of handles of command buffers to free. -- -- = Description--- #_description# ----- Any primary command buffer that is in the--- <{html_spec_relative}#commandbuffers-lifecycle recording or executable state>+-- Any primary command buffer that is in the [recording or executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- and has any element of @pCommandBuffers@ recorded into it, becomes--- <{html_spec_relative}#commandbuffers-lifecycle invalid>.+-- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage ----- - All elements of @pCommandBuffers@ /must/ not be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>+-- - All elements of @pCommandBuffers@ /must/ not be in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - @pCommandBuffers@ /must/ be a valid pointer to an array of -- @commandBufferCount@ @VkCommandBuffer@ handles, each element of@@ -350,7 +347,6 @@ -- synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',@@ -359,7 +355,6 @@ -- | vkBeginCommandBuffer - Start recording a command buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the handle of the command buffer which is to be -- put in the recording state.@@ -368,19 +363,16 @@ -- structure, which defines additional information about how the -- command buffer begins recording. ----- = Description--- #_description#--- -- == Valid Usage ----- - @commandBuffer@ /must/ not be in the--- <{html_spec_relative}#commandbuffers-lifecycle recording or pending state>.+-- - @commandBuffer@ /must/ not be in the [recording or pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - If @commandBuffer@ was allocated from a -- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool' which did not -- have the @VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT@ flag set,--- @commandBuffer@ /must/ be in the--- <{html_spec_relative}#commandbuffers-lifecycle initial state>.+-- @commandBuffer@ /must/ be in the [initial+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - If @commandBuffer@ is a secondary command buffer, the -- @pInheritanceInfo@ member of @pBeginInfo@ /must/ be a valid@@ -409,16 +401,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'VkCommandBufferBeginInfo'@@ -426,33 +417,46 @@ -- | vkEndCommandBuffer - Finish recording a command buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer to complete recording. -- -- = Description--- #_description# -- -- If there was an error during recording, the application will be notified -- by an unsuccessful return code returned by @vkEndCommandBuffer@. If the -- application wishes to further use the command buffer, the command buffer--- /must/ be reset. The command buffer /must/ have been in the--- <{html_spec_relative}#commandbuffers-lifecycle recording state>, and is--- moved to the--- <{html_spec_relative}#commandbuffers-lifecycle executable state>.+-- /must/ be reset. The command buffer /must/ have been in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- and is moved to the [executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage ----- - @commandBuffer@ /must/ be in the--- <{html_spec_relative}#commandbuffers-lifecycle recording state>.+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - If @commandBuffer@ is a primary command buffer, there /must/ not be -- an active render pass instance -- -- - All queries made--- <{html_spec_relative}#queries-operation-active active> during the--- recording of @commandBuffer@ /must/ have been made inactive+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)+-- during the recording of @commandBuffer@ /must/ have been made+-- inactive --+-- - If @commandBuffer@ is a secondary command buffer, there /must/ not+-- be an outstanding+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdBeginDebugUtilsLabelEXT'+-- command recorded to @commandBuffer@ that has not previously been+-- ended by a call to+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdEndDebugUtilsLabelEXT'.+--+-- - If @commandBuffer@ is a secondary command buffer, there /must/ not+-- be an outstanding+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerBeginEXT'+-- command recorded to @commandBuffer@ that has not previously been+-- ended by a call to+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerEndEXT'.+-- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -466,45 +470,42 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' foreign import ccall "vkEndCommandBuffer" vkEndCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> IO VkResult -- | vkResetCommandBuffer - Reset a command buffer to the initial state -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer to reset. The command buffer -- /can/ be in any state other than--- <{html_spec_relative}#commandbuffers-lifecycle pending>, and is--- moved into the--- <{html_spec_relative}#commandbuffers-lifecycle initial state>.+-- [pending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- and is moved into the [initial+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - @flags@ is a bitmask of 'VkCommandBufferResetFlagBits' controlling -- the reset operation. -- -- = Description--- #_description# ----- Any primary command buffer that is in the--- <{html_spec_relative}#commandbuffers-lifecycle recording or executable state>+-- Any primary command buffer that is in the [recording or executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- and has @commandBuffer@ recorded into it, becomes--- <{html_spec_relative}#commandbuffers-lifecycle invalid>.+-- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage ----- - @commandBuffer@ /must/ not be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>+-- - @commandBuffer@ /must/ not be in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - @commandBuffer@ /must/ have been allocated from a pool that was -- created with the @VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT@@@ -522,16 +523,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'VkCommandBufferResetFlags'@@ -539,9 +539,6 @@ -- | VkCommandBufferAllocateInfo - Structure specifying the allocation -- parameters for command buffer object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @commandBufferCount@ /must/ be greater than @0@@@ -557,22 +554,24 @@ -- - @level@ /must/ be a valid 'VkCommandBufferLevel' value -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferLevel', -- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkAllocateCommandBuffers' data VkCommandBufferAllocateInfo = VkCommandBufferAllocateInfo- { -- No documentation found for Nested "VkCommandBufferAllocateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkCommandBufferAllocateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCommandBufferAllocateInfo" "vkCommandPool"+ , -- | @commandPool@ is the command pool from which the command buffers are+ -- allocated. vkCommandPool :: VkCommandPool- , -- No documentation found for Nested "VkCommandBufferAllocateInfo" "vkLevel"+ , -- | @level@ is an 'VkCommandBufferLevel' value specifying the command buffer+ -- level. vkLevel :: VkCommandBufferLevel- , -- No documentation found for Nested "VkCommandBufferAllocateInfo" "vkCommandBufferCount"+ , -- | @commandBufferCount@ is the number of command buffers to allocate from+ -- the pool. vkCommandBufferCount :: Word32 } deriving (Eq, Show)@@ -594,7 +593,6 @@ -- inheritance info -- -- = Members--- #_members# -- -- - @sType@ is the type of this structure. --@@ -602,9 +600,9 @@ -- -- - @renderPass@ is a @VkRenderPass@ object defining which render passes -- the @VkCommandBuffer@ will be--- <{html_spec_relative}#renderpass-compatibility compatible> with and--- /can/ be executed within. If the @VkCommandBuffer@ will not be--- executed within a render pass instance, @renderPass@ is ignored.+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with and /can/ be executed within. If the @VkCommandBuffer@ will not+-- be executed within a render pass instance, @renderPass@ is ignored. -- -- - @subpass@ is the index of the subpass within the render pass -- instance that the @VkCommandBuffer@ will be executed within. If the@@ -650,22 +648,19 @@ -- statistics query /must/ not be from a query pool that counts that -- statistic. ----- = Description--- #_description#--- -- == Valid Usage ----- - If the--- <{html_spec_relative}#features-features-inheritedQueries inherited queries>+-- - If the [inherited+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-inheritedQueries) -- feature is not enabled, @occlusionQueryEnable@ /must/ be @VK_FALSE@ ----- - If the--- <{html_spec_relative}#features-features-inheritedQueries inherited queries>+-- - If the [inherited+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-inheritedQueries) -- feature is enabled, @queryFlags@ /must/ be a valid combination of -- 'VkQueryControlFlagBits' values ----- - If the--- <{html_spec_relative}#features-features-pipelineStatisticsQuery pipeline statistics queries>+-- - If the [pipeline statistics+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-pipelineStatisticsQuery) -- feature is not enabled, @pipelineStatistics@ /must/ be @0@ -- -- == Valid Usage (Implicit)@@ -680,7 +675,6 @@ -- @VkDevice@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'VkCommandBufferBeginInfo', -- 'Graphics.Vulkan.Core10.Pass.VkFramebuffer', 'VkQueryControlFlags',@@ -688,21 +682,21 @@ -- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkCommandBufferInheritanceInfo = VkCommandBufferInheritanceInfo- { -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkSType"+ { -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkPNext"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkRenderPass"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "renderPass" vkRenderPass :: VkRenderPass- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkSubpass"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "subpass" vkSubpass :: Word32- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkFramebuffer"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "framebuffer" vkFramebuffer :: VkFramebuffer- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkOcclusionQueryEnable"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "occlusionQueryEnable" vkOcclusionQueryEnable :: VkBool32- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkQueryFlags"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "queryFlags" vkQueryFlags :: VkQueryControlFlags- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "vkPipelineStatistics"+ , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "pipelineStatistics" vkPipelineStatistics :: VkQueryPipelineStatisticFlags } deriving (Eq, Show)@@ -729,9 +723,6 @@ -- | VkCommandBufferBeginInfo - Structure specifying a command buffer begin -- operation ----- = Description--- #_description#--- -- == Valid Usage -- -- - If @flags@ contains@@ -761,18 +752,20 @@ -- 'VkCommandBufferUsageFlagBits' values -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferInheritanceInfo', 'VkCommandBufferUsageFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkBeginCommandBuffer' data VkCommandBufferBeginInfo = VkCommandBufferBeginInfo- { -- No documentation found for Nested "VkCommandBufferBeginInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkCommandBufferBeginInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCommandBufferBeginInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkCommandBufferUsageFlagBits' specifying usage+ -- behavior for the command buffer. vkFlags :: VkCommandBufferUsageFlags- , -- No documentation found for Nested "VkCommandBufferBeginInfo" "vkPInheritanceInfo"+ , -- | @pInheritanceInfo@ is a pointer to a @VkCommandBufferInheritanceInfo@+ -- structure, which is used if @commandBuffer@ is a secondary command+ -- buffer. If this is a primary command buffer, then this value is ignored. vkPInheritanceInfo :: Ptr VkCommandBufferInheritanceInfo } deriving (Eq, Show)@@ -791,13 +784,11 @@ -- | VkQueryControlFlags - Bitmask of VkQueryControlFlagBits -- -- = Description--- #_description# -- -- @VkQueryControlFlags@ is a bitmask type for setting a mask of zero or -- more 'VkQueryControlFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferInheritanceInfo', 'VkQueryControlFlagBits', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginQuery'@@ -805,26 +796,22 @@ -- | VkCommandBufferResetFlags - Bitmask of VkCommandBufferResetFlagBits -- -- = Description--- #_description# -- -- @VkCommandBufferResetFlags@ is a bitmask type for setting a mask of zero -- or more 'VkCommandBufferResetFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferResetFlagBits', 'vkResetCommandBuffer' type VkCommandBufferResetFlags = VkCommandBufferResetFlagBits -- | VkCommandBufferUsageFlags - Bitmask of VkCommandBufferUsageFlagBits -- -- = Description--- #_description# -- -- @VkCommandBufferUsageFlags@ is a bitmask type for setting a mask of zero -- or more 'VkCommandBufferUsageFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkCommandBufferBeginInfo', 'VkCommandBufferUsageFlagBits' type VkCommandBufferUsageFlags = VkCommandBufferUsageFlagBits
src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -199,7132 +199,7606 @@ -- | VkIndexType - Type of index buffer indices -- -- = See Also--- #_see_also#------ 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableIndexBufferEntryNVX',--- 'vkCmdBindIndexBuffer'-newtype VkIndexType = VkIndexType Int32- deriving (Eq, Ord, Storable)--instance Show VkIndexType where- showsPrec _ VK_INDEX_TYPE_UINT16 = showString "VK_INDEX_TYPE_UINT16"- showsPrec _ VK_INDEX_TYPE_UINT32 = showString "VK_INDEX_TYPE_UINT32"- showsPrec p (VkIndexType x) = showParen (p >= 11) (showString "VkIndexType " . showsPrec 11 x)--instance Read VkIndexType where- readPrec = parens ( choose [ ("VK_INDEX_TYPE_UINT16", pure VK_INDEX_TYPE_UINT16)- , ("VK_INDEX_TYPE_UINT32", pure VK_INDEX_TYPE_UINT32)- ] +++- prec 10 (do- expectP (Ident "VkIndexType")- v <- step readPrec- pure (VkIndexType v)- )- )---- | @VK_INDEX_TYPE_UINT16@ specifies that indices are 16-bit unsigned--- integer values.-pattern VK_INDEX_TYPE_UINT16 :: VkIndexType-pattern VK_INDEX_TYPE_UINT16 = VkIndexType 0---- | @VK_INDEX_TYPE_UINT32@ specifies that indices are 32-bit unsigned--- integer values.-pattern VK_INDEX_TYPE_UINT32 :: VkIndexType-pattern VK_INDEX_TYPE_UINT32 = VkIndexType 1--- ** VkSubpassContents---- | VkSubpassContents - Specify how commands in the first subpass of a--- render pass are provided------ = See Also--- #_see_also#------ 'vkCmdBeginRenderPass', 'vkCmdNextSubpass'-newtype VkSubpassContents = VkSubpassContents Int32- deriving (Eq, Ord, Storable)--instance Show VkSubpassContents where- showsPrec _ VK_SUBPASS_CONTENTS_INLINE = showString "VK_SUBPASS_CONTENTS_INLINE"- showsPrec _ VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = showString "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"- showsPrec p (VkSubpassContents x) = showParen (p >= 11) (showString "VkSubpassContents " . showsPrec 11 x)--instance Read VkSubpassContents where- readPrec = parens ( choose [ ("VK_SUBPASS_CONTENTS_INLINE", pure VK_SUBPASS_CONTENTS_INLINE)- , ("VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS", pure VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)- ] +++- prec 10 (do- expectP (Ident "VkSubpassContents")- v <- step readPrec- pure (VkSubpassContents v)- )- )---- | @VK_SUBPASS_CONTENTS_INLINE@ specifies that the contents of the subpass--- will be recorded inline in the primary command buffer, and secondary--- command buffers /must/ not be executed within the subpass.-pattern VK_SUBPASS_CONTENTS_INLINE :: VkSubpassContents-pattern VK_SUBPASS_CONTENTS_INLINE = VkSubpassContents 0---- | @VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS@ specifies that the--- contents are recorded in secondary command buffers that will be called--- from the primary command buffer, and 'vkCmdExecuteCommands' is the only--- valid command on the command buffer until 'vkCmdNextSubpass' or--- 'vkCmdEndRenderPass'.-pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS :: VkSubpassContents-pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = VkSubpassContents 1--- ** VkStencilFaceFlagBits---- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for--- which to update the compare mask------ = See Also--- #_see_also#------ 'VkStencilFaceFlags'-newtype VkStencilFaceFlagBits = VkStencilFaceFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkStencilFaceFlagBits where- showsPrec _ VK_STENCIL_FACE_FRONT_BIT = showString "VK_STENCIL_FACE_FRONT_BIT"- showsPrec _ VK_STENCIL_FACE_BACK_BIT = showString "VK_STENCIL_FACE_BACK_BIT"- showsPrec _ VK_STENCIL_FRONT_AND_BACK = showString "VK_STENCIL_FRONT_AND_BACK"- showsPrec p (VkStencilFaceFlagBits x) = showParen (p >= 11) (showString "VkStencilFaceFlagBits " . showsPrec 11 x)--instance Read VkStencilFaceFlagBits where- readPrec = parens ( choose [ ("VK_STENCIL_FACE_FRONT_BIT", pure VK_STENCIL_FACE_FRONT_BIT)- , ("VK_STENCIL_FACE_BACK_BIT", pure VK_STENCIL_FACE_BACK_BIT)- , ("VK_STENCIL_FRONT_AND_BACK", pure VK_STENCIL_FRONT_AND_BACK)- ] +++- prec 10 (do- expectP (Ident "VkStencilFaceFlagBits")- v <- step readPrec- pure (VkStencilFaceFlagBits v)- )- )---- | @VK_STENCIL_FACE_FRONT_BIT@ specifies that only the front set of stencil--- state is updated.-pattern VK_STENCIL_FACE_FRONT_BIT :: VkStencilFaceFlagBits-pattern VK_STENCIL_FACE_FRONT_BIT = VkStencilFaceFlagBits 0x00000001---- | @VK_STENCIL_FACE_BACK_BIT@ specifies that only the back set of stencil--- state is updated.-pattern VK_STENCIL_FACE_BACK_BIT :: VkStencilFaceFlagBits-pattern VK_STENCIL_FACE_BACK_BIT = VkStencilFaceFlagBits 0x00000002---- | @VK_STENCIL_FRONT_AND_BACK@ is the combination of--- @VK_STENCIL_FACE_FRONT_BIT@ and @VK_STENCIL_FACE_BACK_BIT@, and--- specifies that both sets of stencil state are updated.-pattern VK_STENCIL_FRONT_AND_BACK :: VkStencilFaceFlagBits-pattern VK_STENCIL_FRONT_AND_BACK = VkStencilFaceFlagBits 0x00000003--- | vkCmdBindPipeline - Bind a pipeline object to a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer that the pipeline will be--- bound to.------ - @pipelineBindPoint@ is a--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value specifying--- whether to bind to the compute or graphics bind point. Binding one--- does not disturb the other.------ - @pipeline@ is the pipeline to be bound.------ = Description--- #_description#------ Once bound, a pipeline binding affects subsequent graphics or compute--- commands in the command buffer until a different pipeline is bound to--- the bind point. The pipeline bound to @VK_PIPELINE_BIND_POINT_COMPUTE@--- controls the behavior of 'vkCmdDispatch' and 'vkCmdDispatchIndirect'.--- The pipeline bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ controls the--- behavior of all <{html_spec_relative}#drawing drawing commands>. No--- other commands are affected by the pipeline state.------ == Valid Usage------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_COMPUTE@, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_GRAPHICS@, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_COMPUTE@,--- @pipeline@ /must/ be a compute pipeline------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_GRAPHICS@,--- @pipeline@ /must/ be a graphics pipeline------ - If the--- <{html_spec_relative}#features-features-variableMultisampleRate variable multisample rate>--- feature is not supported, @pipeline@ is a graphics pipeline, the--- current subpass has no attachments, and this is not the first call--- to this function with a graphics pipeline after transitioning to the--- current subpass, then the sample count specified by this pipeline--- /must/ match that set in the previous pipeline------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value------ - @pipeline@ /must/ be a valid @VkPipeline@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - Both of @commandBuffer@, and @pipeline@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint'-foreign import ccall "vkCmdBindPipeline" vkCmdBindPipeline :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()--- | vkCmdSetViewport - Set the viewport on a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @firstViewport@ is the index of the first viewport whose parameters--- are updated by the command.------ - @viewportCount@ is the number of viewports whose parameters are--- updated by the command.------ - @pViewports@ is a pointer to an array of--- 'Graphics.Vulkan.Core10.Pipeline.VkViewport' structures specifying--- viewport parameters.------ = Description--- #_description#------ The viewport parameters taken from element i of @pViewports@ replace the--- current state for the viewport index @firstViewport@ + i, for i in [0,--- @viewportCount@).------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_VIEWPORT@ dynamic state enabled------ - @firstViewport@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxViewports@------ - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@--- and @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - If the--- <{html_spec_relative}#features-features-multiViewport multiple viewports>--- feature is not enabled, @firstViewport@ /must/ be @0@------ - If the--- <{html_spec_relative}#features-features-multiViewport multiple viewports>--- feature is not enabled, @viewportCount@ /must/ be @1@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pViewports@ /must/ be a valid pointer to an array of--- @viewportCount@ @VkViewport@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - @viewportCount@ /must/ be greater than @0@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkViewport'-foreign import ccall "vkCmdSetViewport" vkCmdSetViewport :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()--- | vkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @firstScissor@ is the index of the first scissor whose state is--- updated by the command.------ - @scissorCount@ is the number of scissors whose rectangles are--- updated by the command.------ - @pScissors@ is a pointer to an array of--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structures defining--- scissor rectangles.------ = Description--- #_description#------ The scissor rectangles taken from element i of @pScissors@ replace the--- current state for the scissor index @firstScissor@ + i, for i in [0,--- @scissorCount@).------ Each scissor rectangle is described by a--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structure, with the--- @offset.x@ and @offset.y@ values determining the upper left corner of--- the scissor rectangle, and the @extent.width@ and @extent.height@ values--- determining the size in pixels.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_SCISSOR@ dynamic state enabled------ - @firstScissor@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxViewports@------ - The sum of @firstScissor@ and @scissorCount@ /must/ be between @1@--- and @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - If the--- <{html_spec_relative}#features-features-multiViewport multiple viewports>--- feature is not enabled, @firstScissor@ /must/ be @0@------ - If the--- <{html_spec_relative}#features-features-multiViewport multiple viewports>--- feature is not enabled, @scissorCount@ /must/ be @1@------ - The @x@ and @y@ members of @offset@ /must/ be greater than or equal--- to @0@------ - Evaluation of (@offset.x@ + @extent.width@) /must/ not cause a--- signed integer addition overflow------ - Evaluation of (@offset.y@ + @extent.height@) /must/ not cause a--- signed integer addition overflow------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pScissors@ /must/ be a valid pointer to an array of @scissorCount@--- @VkRect2D@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - @scissorCount@ /must/ be greater than @0@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'-foreign import ccall "vkCmdSetScissor" vkCmdSetScissor :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()--- | vkCmdSetLineWidth - Set the dynamic line width state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @lineWidth@ is the width of rasterized line segments.------ = Description--- #_description#------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_LINE_WIDTH@ dynamic state enabled------ - If the <{html_spec_relative}#features-features-wideLines wide lines>--- feature is not enabled, @lineWidth@ /must/ be @1.0@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdSetLineWidth" vkCmdSetLineWidth :: ("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()--- | vkCmdSetDepthBias - Set the depth bias dynamic state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @depthBiasConstantFactor@ is a scalar factor controlling the--- constant depth value added to each fragment.------ - @depthBiasClamp@ is the maximum (or minimum) depth bias of a--- fragment.------ - @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s--- slope in depth bias calculations.------ = Description--- #_description#------ If @depthBiasEnable@ is @VK_FALSE@, no depth bias is applied and the--- fragment’s depth values are unchanged.------ @depthBiasSlopeFactor@ scales the maximum depth slope of the polygon,--- and @depthBiasConstantFactor@ scales an implementation-dependent--- constant that relates to the usable resolution of the depth buffer. The--- resulting values are summed to produce the depth bias value which is--- then clamped to a minimum or maximum value specified by--- @depthBiasClamp@. @depthBiasSlopeFactor@, @depthBiasConstantFactor@, and--- @depthBiasClamp@ /can/ each be positive, negative, or zero.------ The maximum depth slope m of a triangle is------ <<data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAigAAACoCAYAAADKIhV0AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO2dedgdRZm37+whJiABwhIghEU2QQREBEVAQEXAcd9wQRAdmVEcdPy+UQRGQAXX4RNFYcCFYVwQBAEHBNcRBzTgAigSSAib7FuAJJB3/nhOf6dPd3Wf3tfffV195XSdqq7nnJxfvbU89dQkRN85BDgc2BS4E7gEOBt4KpDvTOAwYHKl1gkhhOgby4H3T6rbClEbk4GvAEc63lsCvAX4zeB+DvBoNWYJIYQQ/Fqj4f5yPO7OCcBmwE+BAwb3jwFnAatLt0oIIUTfWQ6cUbcRoh52BZ4BJsZcjwE71GSjEEIIIXrGlYzvnHjXH4GZ9ZgphBBCiL6wG8k7J951bC2WCiGEEKI3nE36DsrjwIZ1GCuEEEKI7jMT62yk7aBMAJ+rwV4hhBBC9IBXk61z4s2irFm9yUIIIfqIthn3i1fnKPssYF5RhgghhBBxqIPSL/at2wAhhBAiCeqg9IeFwIK6jRBCCCGSoA5Kf3hJ3QYIIYQQSVEHpT/sWrcBQgghRFLUQekPu9RtgBBCCJEUdVD6wWRgp7qNEEIIIZKiDko/WAjMqtsIIYQQIilT6zZAVMI2dRsgRAHshMXy2R3YHlgXG2Q9BNwM/Br4JnBTXQYKIUaQZsVYjiF7BFn/tWXVhoveMx04HLiR0d/iYuBnwC+BewPvnQesU4OtQghpVqTkK6iDItrJexn9DX4f2CqQZxJwILDMl+/PwPrVmSmEGCDNilRchjooop28j+Hv79wxeTcF7vfl/3G5pgkhHEizIhXBqTZ1UERb8Bq7FcB6CfJ/iNHf7J7lmSaEcFCYZrWLpx9sGvPek8AJwG7APsBpwMoqjBIiBb8A7kuQ7/zA/cEl2CKEGI80K8ayNtEzIk9g3tVBXgI86MivGRRRNbsDnwVem6LMUwx/s98rwyghRCTSrEjMNkR3UP4xpty+wCrUQRHt4xGGv9mLa7ZFCDEep2a1xNN9NohIvw3b3RPFVcCnijdHiFKZCczx3f+1LkOEEImQZnvMm3DPnnw0QdkZ2I9FMyiiLbyQ0d/53rVaI4QYhzTbY/4Bdwdls4Tl34Y6KKI9nMzw93pdzbYIIcYjzfaYTxDunNyYovxkLAxxER2Ud2IxWb5G/M6iS4DfDK6Nc9YpmslbGf4fe9cROZ85i9EIlfvmfF4fkUZFFNKsKJwvEO6gxPmeuDiK/B2U4EzOXUQ3gA/48qnx6yYfJvy7PD7nMz/pe9bpOZ/VR6RREYc0KwrnHMI/qsNSPmMO8CjZOyjrAY877PhvYIoj/0pfnnUz1imaTdGN3QsZ7jq7BvOfEsmRRsU4KtesdvF0n7Udab9P+YzHgO/msOEw4FmO9D2A/xNImwdM890vz1Gv6AcbYcGepgJLsEBPK+o0qIVIo6JKEmlWHZTuM8eRdnOG53w7hw1vjnnvOGBn3/2OvtePYZFuhYhiLuYzMR+4E9gP+FutFrUTaVRURWLNTq3QKFEPwVHRPdhUblp+DszOUG4u8LyY96cB3wJ2xRq6V/req/sPzSzM9g2whngZ1rmbqNMo8f9ZG7gc+4N5O9bQLa7VonbSZo16SKvtQJoVI9zA6JrhNRXX/yrC65au6xLMS/wxX9pPK7bVY2PgbOwogKCdS7AR5ayabOsKedez5wKLGP6fLCzWvF7RRo16SKvVIc2KwlnC6A/qgorr/wjJGj/XVYdX9wsYPf476roJ2KEG+7pCnsZuXcyPagK4FVhQgn19om0a9ZBWq6VyzcoHpfsEl3jurbj+rX2vn8amh/+eZFOvaeK1FMFk4DxgHcd7f8BiQ1yKfY5tgJ+QPOCdKIZ52Kh9R2xq+KXA0lotaj9t0qiHtNoepFkRiX86dgI4qeL6L/PV/X1f+pcYP/LZqVJLYUOHDfcRPpVzb4bbLP/I6I4GkYwso7ENsD+IE8BfMCe7OLzRteJ0xNMmjXpIq9UjzYrCWcHoD+qYiuv/ra/u9/nSn0V4+cl/PUD1M3yTMB8dz4YrsO1wLvwB8D5YiXXdIm1jtxHWwE0Af8b+QI1DjV0y2qRRD2m1eqRZUTjBH9SRFde/xFf33oH3DiS68Usb7bYoZgKvAV4yJt8ujDbUcsRLR5rGbmOGh1beSPQJ3UHU2CVjCe3SqIe0Wi2Va1bbjLvNdEdali3GefA3BvcE3rsUWysOdpomgDPKNCqGp0jmSHw9FgVxGuadfhD5gtmBrdWWsW1za7LFvmkCC4CrgM0H93OBXyUs6wpSKMK0TaMe0mozkWZFImYT7vEG12jL5mFf3a6R7Azsx+u38cuVWZePJQxt/kEBz3sl0aPVrNcj2HR400g6GjvdkS/tpRmUeLqsUY8lSKt5qVyzmkHpNq7/36pDgN8ErDF47Yo4uQJ4BRavYHfM2/7EakzLjX82aq8CnreL7/V5wOoUZdcDDnCkn4gJvq1op2H5dFmjHtJqdUizIhFrE+6Z7l+rRd3iz4x+t1FOekm5YPCcZSnLzWUYY8B/HZfTnjIp42RUIaKQVvNTuWbV0+k2rv/fND19EU8w9P9zcz7PG5UtSlFmLYaho/18Bjghpz1CdAVptYWog9Jt1EEpl+BBjHmOnV8P2GTw+ncJy8zGYljsEkj/N8In0ArRZ6TVFiIflG6jDmh61sa2Lu6OBRWahB1qdRVwIRb0iUF6MErvmjnq9TdcSRq9NYAfAS8KpH8dODqHHUK0BWlViBazPvJBScoMbB34KaI9y2/BTnQFaxCD7384R/2zsVDcmzE+2uUMbKo4WP83aPYuAD/yQRFZkVbroXLNagal27g8whXqOcxa2PSrf4TzKHAq8EMseNAuwMnAlcAemLNbENcOiKQ8TrIYNdOwcOTBjuZ3gXfTjV0AQkQhrQrREdYj3OM9pFaLmsd0RkNmT2BnejzPkXdNLHTzNcC7CH+3h5Zs6xSswQvWeyHtG2xoBkWkRVqtF2lWFMo6hH9Qr6/VoubxWdJ14t4wyBNsKMvu/E0GznXUeRnuiMFNR42dSIu0Wi/SrCgUVxyUw2q1qFlsBTzD6PfzozFlZhI+gNG7XlySnZOAsxz1XTmwp0ymAG8EzseicT4BLAduxdbWjyZbTAk1diIN0moyytIrSLOiYNYk/IOS1/iQLxP+fvZJUO5PjnITuNe6i8Bl568I70womgXYLgWvzruBnwPXYmebeOnvyPBsNXYiDdLqeMrUK0izomBmEv5BHVerRc3ib4x+N3eTzLP+54S/19tLsvFzjrquId82ySTMBZYO6lsJHMHod7Mzw0Zv+wzPV2Mn0iCtxlO2XkG7eETBrHKklTVySMNRwLaBtOXARyu0YRvsRFI/V2CiG4crvszvc1sU5iTgnwJp1wMvx3YulMlngE0Hr08Bzgy8vwg7w2ULLIy46BZN0KiHtDoe6VW0ktWM9njPr9ccwITimnatYhrU4zWO+pMuf13nKJsnroKLYx113EC+CJhJWYfh2v1qLI6Ei00YNopp0QxKs2mCRj2k1Xiq0CvoLB5RAsHTi+s+en4ysDDivS0qtGMdR9rNCcuuHbifAL6Tz5wRjgH+NZD2V+BlWJyHstmf4W6DG4A7I/Ito7zpclEfTdGoh7QaT2f1qg5K9wkGJMrTgy6CTbDoii6qbPxmOdLuTlBuJsNzODyuJv2pplEchW2n9LME2Be4p6A6xrGn7/X/VFSnaA5N0aiHtBpPZ/UqH5Tu8ySjo4gNMD+UB+sxJ7aB27IyK+AhR1qS6JDbEe7Yn5XfHMAc204LpN2BNXh3JCj/QqxBXoVF1cxK2rNGRLdoikY9pNV4pFfRWm4hvG64d432HOmwx7vOqNCOPR31J5ld+migzJ+x2AN5OZRwnIe7geekeIYXkCqtE+AawNNE/78Er7enfL4L+aA0l6Zo1ENaHaUOvYJ28YgScI00dgZ+VrEdHnEjsCpHZ9dg381sX9rsiLx+/i5w/y9YY5WH1wPnMDraux/Yj+Rr7dOAHQevf5uy/q2wqWmwxs8L5LQauM2R/5qUzxftoika9ZBWR5FeRWf4JeFe73/VaM8PHPZ415KKbflqoP6Dx+TfLZD/8gJsOASLW+B/7oPATimfs5Ov/Ptz2HOY7zmLcjxnHJpBaS5N0qiHtOqmKr2CdvGIEnDtwX8p9WwXhPgR2CZUe1bFp7BQ0B77xuSdBHzad38X8M6c9b8cO9nUf8L0o8ArsBgKaShqHVrr2aJJGvWQVst/VuPQEk/3cXVQZmDTn+dWbAvA5jHvTR68X1UgoaXAe4FvDe4PwxrCex15P8IwtPaDwIEk20kQxUuBCwjvlrgVG1WlHVntPPj3afIFoup0gycS0SSNekirbqRX0Wq+gnuq9uoabNkwwhb/dVANdr2PodPZtYzuYlgTi8zo2XcztjsgLz9i/HeR5Uo7mvMzBRules96QY5njUNLPM2kqRr1kFaHVKlXkJOsKIEHItJ3x9Zpq3SgSuJgV0echa9iI5nPY9/LzVjAo6eBrbE4DI9h2wpPxkJ+52WX8VkykWcUtR3mdAf22f+Q3xzRMpqqUQ9pdUjn9aoOSveJ6qCACXi/qgwhWeNXxy4BsBmlF2Gi3w/bxjgLuBhzPruccNC7PGxY4LOKwt8Q/4lwFGLRfZqsUQ9p1ei8XtVB6T5x4ZZfBrwSuKwiW1wjr2cYjU1Qd+N34+DqI1rPFm3QqEeftQo90Kt28XSfcSGXT6O6HT3Bhm0l4WnJpjR+faTzDZ4YizTaHjqvV3VQus+4DsoW2HpuFQQbtiXYwVp+FlBMtEeRjinA83z3nWzwxFik0XbQC72qg9J97kqQ50gsCFHZBKePF2Nb9fxMwxpAUS3bMjyUrZMOdyIR0mg76IVe1UHpPg8wGuAoim8QH/8gL+sCzw6k3Yo1gEE0hVw9/uniG4Cn6jJE1IY02h56oVd1UPrB0gR5ng18n+hj1vPicr5zjc5AjV8ddH49W4xFGm0PvdCrOij9YEnCfM/HAh2VgatBW4x7dFZnnIW+0osGT8QijbaHXuhVHZR+EHRyi+MDWGjnonE1frcCy7CdAuPyivKYTA8c7sRYpNF20Bu9Kg5KP0h7bsbpmACeLtCGqMZvNbYEtdWYvKI8tmW41byzDnc18Gbf6yeBH9ZlSEKk0XbQG72qg9IP0gYz2g54N/C1Am0INmj3MHTeXcxo47c5diLpRIH1i1EOBT4+eO2PgzMJuM53fy+wV1VGdYzzfK//Rvs6KNJoc+ilXtVB6QdZTsw8FjiH8NRuVlzbF12vAWYC84E7CqpbhNkXO7skyJRAustBUnQTabS59FKv8kHpBw8Dt6UsszHwloLqXxNYL5B2a8RrD00hl8u7sdHXuOvAugwUlSKNNpte6lUdlP7wPxnKfLCguqN2B7hex5URQpSDNCoaR1lLPNOBPYAdsJ75o1gwmatJdsrk+sCewEIsauF92GmN16A1z6z8klGnvSQ8H9gJuD5n3VHOd67XcWWEEOUgjYrGMa6DMg9z7orjIuDVg9ezgY8ARwHrOPI+CHwa+BzmGR7k+cAJ2DSV66yHZcDRwA/G2CTC/DxjubdTTgdl3OhMcRaEqA5pVDSOcUs8uyZ4hrcHe1fMGfMTuDsnAHOxQGBnBtInAccDvwUOJvogqk2A87E/miIdN2AdvLS8voC6XQ2Zf0T2BOFDDTU6E6I6pFHROMZ1UDZlGElwMXC3I8/vgP2AnzE8y+Ux7I9h1HLOYQxnXaYA3wKOG9gzgS3p3EV0HI7/h83WiHRcmqHMptgyTx6CDdlywo1dcApZo7Nu41qq1fJtfUijYhyVa3bcEs9XB5fHewjHxpgALsBmQT6JHTrnTQdOAfYGvsLoHnqA92JxAf4NeBu2y+RfgQuxXScAc4B3Aqdi29o81gReC3xzjP15+UdGI/ZVyc+Abxf8zO9h33taDiTfMk+w8XOtZy/G/JY85mC+SOOWGEU7cQ0+igwMKNIhjYpxNF6zX8U6JN71KHAL9mMOdkD8bIl9EH/Zh4F3DF7/gNEOSJAPBcpOAJ/P8TmS8iNHvVVd/o5hUUwG7sxgyxU56lwD8zfyP+9CR77jHPXu4cgnusFRhP+/P1qrRcXj/2zB2YgmIY2KJFSu2bTbjHcJ3M8B1gb2If68l1uAawNpa2Eh1a8C3kD8cdHnOtI2jLVUuFgNnJWh3J7YbqosbInNrvlxOdxpl0C/aPxorEdIoyIJlWs2TQdlGrZtOMhR2DkN47jdkTaBLe88M6bsvcCKQJoas2ycAaxKWWYNsi91jXO+81CchX7h+g2m/V2KYpBGRRIq12yaOCjPBWYE0hYB30lYfroj7Qskn/oM2vpIwnJ5OIFyllqSkKTTl4U7sRD270lZ7gXYLqu0jNu+6KHRWb/QDEpzkEZFEirXbJoOSnB5B2w3TVIv3nmB+2ewJZ4kzCW89ThuSakogstSXeGT2MzVrBRlXP//SRgXAMrjHmzngP8grKJ2CRyPrZ+L6jgB+96jcI28mtpB+Wdg55zPWAv4zwzlriDbsmwapFEBDdRsng7KU8D3U5TfJnB/JclnT4JlAf6Som4xyjLgRODkFGW2z1hXsPFbDSyJyHsro8uIGp11lzbNoOwFvCrnM2YCb8pQ7mGq76BIo8JFo31Qgh2U32DxTpKwMTYL4ufyFHW7fF+uc6SJ5JyKHT2QlG0z1hMcYd1B9AnJwVHbXMwJW3SPNnVQuo40KpLQ2A7KNGDHQNovUtTjWh7IU/5OtPc+L09jpxU/PC7jgLWADVLWMR2L/uvHtbYd955GaN2kTUs8XUYaFUlp7BKPy0H2mhT1BDsYK7Gw+FnL/86ZS6RlKXAEyZfqFpIunsNCwr5DrrVtj6jzPrrqC9Rn2jSDktVZ/mLf64fJdkRHWc7yHtKoSEpjnWRdMyBpOgnB8n8kegoxyHSsg5S17jwcgx1gWAdXAmdXUM/5WHTgIxPk3Zx0y0JJdwd4lLVL4Hjinb9E9bSpg1LEH98VWODHpiGNiqS0poNyF+lG0nlmQHYgvEW5qg7KPuR3jsvK41TTQQGL1PtSYOsx+TZL+dykuwM8NH3cH7TE0wykUZGUyjWb1AclTwdjPnZeQ9byrtmbRSnKi/E8AbyV8bNaG6V8rmsLYtzobAnhoH1q/LqJq2FToLbqkUZFUirXbJIOylTCDrJ5Oxh5yt+F+1RlkY9F2M6eONJ2UNJOH6/CdhD40Ymp3UQzKM1AGhVJaaSTrMtBNk1EUZeD7B9zlK/SQfZjwBcrrM9PsBGogk8DhxO9WydvB+Vh4KExZRYDC3z3GwCzsSUv0R3a5IPSZaRRkZRG+qDU7SAbjIFSZQclzU6jLvA4cCzw9Yj3g9GA45hC2GclbmTmcSuwbyBtC/r3f9F11EGpH2lUpKGRcVDqdJB9LmEHWfmflMs3iF5CWzfFcxYQPgE5zvnOQ054/UBLPPUjjYo0NNJJNk8HYyPCywVV+q+I9KzCth27mE14uS+KtM53Hq4GUmvc3UMzKPUjjYo0NG4GJa+DrOuArTwdlHuwGRxRLmdg53G4WCfhM9JuX/TQ6KwfaAalfqRRkYbGzaBsjx1y5SdPB6NNDrJ95m6iHaHXSviMtLsD4vKo8esemkGpH2lUpKF2J9mDgdf57jd1lDkceP3g9UpGI5AeCezhu39xoOxKRpcPrgW+7Ls/HZjluw/O3mwOnOO7vwj4gcNGkZ/LgN0c6WsmLJ91dObtIvAfQKbGr3soDkr9SKMiDbVr9jxgIsUVnNG4LmX5E3xl56csO4EddifKYU/c3/kBCcvfECi3kvCZH1FcGyi7muS+L6IdrEP4t9W1P3L+z5ZmY0FVSKMiDZVrNrjE43JKjcO/DDADWxLKWj5t3cHyoliux+2HMidB2UnYIWR+lhKOQBlFcAp5EjZ7JrqDlnjqRRoVaal9iec5OZ61gvCW4DRchP3IRTNYjoW1DjY6s8JZQ8wH1gikJVnb9og6kOymFM8QzaYPHZQmt2fSqEhL43bxiH5zsyMt2Ki5yOp8F5e3a9P/fUe7eOpFGhVpadwuHtFvljrSksygZHW+i8urOAvdQh2UepFGRVoaeRaP6C/LHGlJZlCyBoCKy1vV6GwW8DwswOBj2HdwM+YQJorDc6z0D5LUQamONmsUpNM6kGZFoziCsNf2cQnKfc9RLrhlPI7JwFOB8rekKJ+FjYGzgScI274E+9xJZo9EclYw+j3PrtecXtFGjYJ0WjfSrGgMhxBuBE5MUM613TztD/kvgfKrKG/G7wXA/YRtDl43ET68UmRnOaPfr7apVkfbNArSaROoVLNa4hFxPOxIS7JTKzh9fC/pj2JfzOiusqnY4WZppqGTMBmL/+MK4f8H4DfYqO0AYBvgJ8ALsdGayMfHGW3gFKitOtqkUZBOm4I0KxrDjoRHJ18YU2Z9R5lfZ6j7NMdzXp7hOePY0FHPfcBrA/n2xgJZTWDHNQRPgRWiLbRNoyCd9hLt4hFxuEZU42bdXM53aXYHxJUpwwnvHiwqpsdPMOe74BEKP2N4LMNzgfeXYIsQVdA2jYJ02kvUQRFxLHekjfvN5I2vEFemjMZvAtgLG4ntBexP9InZ3/a9/gRyxhPtpG0aBem0l8gHRcSxwpGWpYPyVuClKet2HUpYVpyFp4ALEuS7HltznQbMBQ4Cvpuz7gOBS1LkPwS42Hd/JHBGgnKnA0elqEd0lzZqFOrVqcds4BGSD+7vwqL2ujgF+EiCZ+yMOTX3DnVQRBwrHWlZOihbRqSnpe5Ilc9gDc6Cwf2byd/w7Zoyf/CAzqTlg+VEf+myRqEcnXrsTLqVhzjdJdHuCuBPKerrFOqgiDiK6qAUxeaD+l2HGFaF3y9nrwKe9wBw7uD1c7CtlH6WAxcOXj9BeFp7ma/8DgxjWdwELPLl+3kBtopu0HWNQvE69ZjKUG/Pxfxg/PyK0QjcFxPNjQz1PBd45eD1fcDlg9fL0E4ZIZxMIew5/7UxZR5wlCny2rSoD5eRPzNqz0YFPnsj3AGoXpSg7I7AQwzjQKxboF2iW3Rdo1CuTj3eTPizfzzjs87yPeNthVgnRA8ICvArMXmf7chf9LVPkR8uA3cwas8BBT//VMKf+coxZRZiI7EJ4HZgk4JtEt2hDxqF8nUKNhMV/Ow/zPCc3bEZpwlsF5IYoF08Ig7X7yNu6narsgzxUfca95zAfdEzFZ8GHg2k7Ut0o78+cAUWJ+J+bHeD6wwlIaAfGoXydQoW2v+hQFpan7IpmAP7JOxcGzmy+5APiogjbQelioapjDrWBl6DjWTmY43F7cBVmP+H54szCXhWoKxrJ0MeHgA+B5wQSD8R2DOQthbwY2znxGPAK7Dw40JE0VaNQrN06rEIeJnvfiNssHB3wvLvB54/eP0l4IbiTBOi28wgPIX5xZj8xzryF32dX/DnO47woWf+6xaGo6L5jvc/XKA9HnMwR7lgXQf68szEHF8nBvbvXYIdonu0TaPQXJ2CzXgG6zo4Ydn1seNEJoA7Cc/69B4t8Yg4XAdBxR2vXWYMhKLrWAv4KXA8w8/5KNaA74iNhA7GnFavBLbHdigEebIge/w8BnzKkf5JbHQ4BfhPbHfCM8Cb0Nq1SEabNArN1im4txEHd+JFcSr2+QCOwXQvhEjIPMKjg5Ni8v/Kkb/oqwgRTweuCTz3PsJbBsGmhv8yyP8uhz2HFmCPi5mYL0mwvtcB/z54vXpgkxBJaYtGoR06Xeio69IE5V7iyz/OCV4I4WABYfF9Iib/PY78ZVwb5Pxcn3U885CY/G8Y5Ak2luPK5eU9jvr8x50fU2LdLqYAb8Sm8Jdgo9bl2JkslwNHU852TlEcbdEotEen9wfqundM/qnYCcwTmN/MtiXZ1Xq9yklWxOFyLHOFvwcLAb1+IO1B3EsVaXgj4SnTLbGGNgtbAR8KpF0CXBRT5mKsIXFN3T6Y0Y4knI2FwvbvvPDOFTkZc6atigXYwWw7D+69w9tmATthI8n9se/jmxXaJZLTFo1Cu3T6O0a3Ma+HxYK5PSL/B7CgimCnw99Ugk3Sq+g8exAeiRwdkXcnR95fFWDDSY7nvjPH877seF6SuA1/cpSbwCJAlslbHHU+wXDtugrmYtExvRHfEZgvjMfOWLTLCcwHQDSTtmgU2qVT1+d/XUTeDTEfmglsCTe426gIOqNXOcmKONZxpEXNoLgc424rwAbXM/JsY3x94P4ekjmYPuBIW0a5IzOwEWNwTX8Nql3e+QzD6KCnAGdijZvHImwU+AQWwVM0k7ZoFNql09860qLioXye4W6df8J9YnxeOqNXdVC6Td7e8XqOtMcdaeBukJrW+G2DOf76uYJR8Ubh0srvM9qRlKnYbh3X9sMP4f7/KZp1gHcMXk8QHUn4Vdha+jMV2CSy0QaNQvt0mrSDsg8WHh/gJ8D3SrClU3qVD0q3WYj5kVydsXxwvRra3UFxOaMtcqS5mO1IK/MAvkmYD8pBg/u7selhvz0fI3rJrSj2x3ZTgAWRujMiX9rotc8jfMbQb3E39qIY2qBRaJdOwX779zLaqdolkGcatmwFtuzyDyXZUpZeQZoVBXMQcFqO8qcTXlvdLyLvTx15985Rt8dULPaK/7lZp2uPIGzjgbElhiwJlFtNuWfefMlX1yeB3Qjb/hTlH8x2mq++Mwt87ocJf57jC3y+CNMGjUK7dOpxKWGb/Z20j/rSTy7RjrL0CjVoVks83eeNZJ8pW+BIi5pBca1v35qxXj9PE+7tr002p7dZjrQkIalnEm7krnbYVRTHYZ7+YJ3EY7GtkxcG8s2g/D/q/pGgKyiVaA9t0Ci0R6d+4pZ5NsY0DLaz58QS7eiUXtVB6T7zyB4DwHWwWPAgO7A/lPMDaauInl5MS1FTyMGDvSC6w+VnO8JaOStD/Uk4imGn4z8YnQr+GOGzkN6BrdkXxRqMjob9U7quGbW3F1i3KI+2aBTaodMgcR2ULzLcrfMhzPK9ecQAAAZrSURBVDm1KDqtV3VQ+sF7M5SZgfmwBHFN3W5B+Ld0O8U5YBXV+LlGi1G7kvzsH7j/C/CNDPWP4y0Ml+QuxbZq+h0DbwS+FSgzhWJHZFth0+SLgbt86asHacHrmgLrFuXRFo1C83Xq4lpH2q5YfBRvy/F/YbFJikR6Fa3lIIbrsGnPx9gFdzyB6Y68hzjyXZHNZCcfdzz/2NgSbqZhW3b9z9kuQbmrA2Vem6HucbwSc56bAH6BjYxcLMAa6+D3kfaY9yQc5nt+UifFpMgHpVraolFotk7juCtQ/6PAzQz9xVwz0kVSpl5BPiiiJCaRPm6GKxrj4wyPNPdT1u6AuGdlGZ2tAs4NpI3ruO2GHe/ucQXFj4L2AL6PNczXYYefRR1uthQ4w5FehuNdp9aze05bNArN1ek4gss8cxh2Sk4F/lpy/Z3Tqzoo/eEwwrEF4tjLkeYKggTlOd/FPStr4/cpRteA943JOwk7Tt3jLvJHyAyyAxbCexY22noF8MiYMicSXpPfn2SRNtPQuQavx7RJo9A8nSYharvtEsrduePROb2qg9IfZmJb3ZIwhfB6LsDfIvK3aXS2lFGfnLiO20cY/tF/ENvqmGQ3QRwHAOf4riuAZw/eW4ZFfjwH9/d/+uC9U3D7An3N99yziV4mSsIURk+N7USD12PapFGoX6dZiNLI0UTPiBaF9Cpah+eD4l0rSNZo7EN4rXECuCAi/2JH3t3yGO7gCUcdrqBMSXkfQ+/3axkdYa6JdQK8em4m2Rp4Er6O+7sNXsEOyvyE5bwr7+6MHXzPWoU5TReJfFCqpY0ahfp0moV5hD//JRXVXbZeQZoVBRPsoEwAlyUod66j3ATDSIh+pjI8eMp/FR2G/UZHHTvlfOaLGDrWPYMdgb4IOx/Dc3I7iWIP9FpEsg5GMIaEy8kx7vphTjvf5XvWdTmf5UKNXXW0WaNQj06zsozhZ3+S9JsTsvIuytUr1KBZhbrvH6/Aphy/GPH+VlhwNxeuadOFhH9HjwP3ZbIumtsIh8DeErg+xzOvxhq/7bAIuZtiviAXYw3g5RQ/Nbvz+CxOLmL0RNKy6dx6do9ps0ahHp1m5U9YYDawQ/sWV1RvJ/WqDko/OQW4A9s54mcaFh456ndxuyOtrBNSgxTthOfnxsElhnSywespXdAoNF+nWzD0hbmNUcfdsumkXuUk20+mAedhu0HWHKTNx3xMXLt3PFyNWtnOd3HPrGr6tG/I4a5bSKPV8EWGvh8fwGKfVEFn9aoOSn+ZioVOfwhzqLwdO4I7jqZ1UIocnYkh2zI8D+VpbM1ftBdptHwOZHjy+MXAjyqsu7N61RKPmAxslCDfSkZDKXuo8ese/uniG6huJCjKQRotl+kMffqeBD5Ycf2d1as6KCIpiwkfVAf1Nn7zsfgunRFkQ+jkenaPkUazsw2wGRZfJeocm39mGDH2U5Tz3cbRWb1qiUck5QZH2mRMvEGKjFDp8Qjh4GSTgM1LqKvvdLbB6yHSaD4+jYVmODXi/R2wc4jADic8pQqjAnRWr+qgiKS4Oiib4A4ItKQkG/o6hVwlk+mow11PkUbz4f3xX0B4m/884Hzs+30GOJxkpy4XSaf1qg6KSIqrg+JqeO4jfE5MUXSt8Wsi2zIMeNUph7ueIo1mZx7DmCYLsCjQL8ZiGf091hnwlnb+Bfjvqg2k43qVD4pIiuv47qrWtuOe3dbGr0kcynCa2h+NcxKjUSnvJX4bumge0mh2dgncHz64gnyeapd2eqNXdVBEEh7EHRGxqgBQcc9ua+PXJPYFtnakTwmkl+G3IMpFGs3OPMy5d2bE+0uxmZP/qMwiozd6rTJ0tqieg7A9+Xm5HHh5Ac8RQog2MQM7VHFz7Oyi6cD9WPj+a7HzaERJaAZFJOHXdRsghBA1sAL45eASFSMnWZGEq+o2QAghRL9QB0WMYznwm7qNEEII0S/UQek2fyT/vvyrgFUF2CKEEEIkRh2UbrMUOC3nM84vwhAhhBBCCD/PxvbDT2S4VgJrV2+yEEIIIfrAoWTroHynDmOFEEII0R9+TPoOSqujEAohhBCi+WyIncGRtHNSx7kSQgghhOghB2A7cpJ0UPaoyUYhhBBC9JAjgNXEd04+V5t1QgghhOgt78AOwXJ1Tn4ITKvPNCGEEEL0me2Bi4CnsY7JfcD/xU7EFEIIIWrlfwEOmR1Xp/LmdAAAAABJRU5ErkJggg== $$m = \\sqrt{ \\left({{\\partial z_f} \\over {\\partial x_f}}\\right)^2 + \\left({{\\partial z_f} \\over {\\partial y_f}}\\right)^2}$$>>------ where (xf, yf, zf) is a point on the triangle. m /may/ be approximated--- as------ <<data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjwAAAB+CAYAAAAgAMvUAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO2dd9gcVdXAf28q6RAgkAKhBCWRAAICIlKiUYxYQUFAEaQpikHg+/wQJAiGJkUpxkJTKaKGKipFUVCQQAgoVRICiRATCBCSkP5+f5wZ9+6du7Mzu9P3/J5nn8zcvXfu3ex5d87c00BRlKpwOPA74MfA5iH9fgs85L1GtTjXjUC38ZrS4nWUfCnD91iGNSrxiPqdHkLtt8p/HdXqpL1aHagoSqH4KnCpcb4/sDvwkqPv7sDQLBalKIrSBiOA3ay237d6sR7trUVRlAKwMXCu1TYcuAHo6eg/yDhekdaiFEVRioQqPIpSfo4ABjja9wC+abUNA3ob58vSWpSiKEqRUIVHUcrPwSHvnQHsZJxvbxy/BbydyooURVEKhvrwKEq5GQrsEPJ+b+DnwC6IcvMR473/pLiupOiPfL5NEQVtHvAc4uioKGmgMldRVOFRlHLzXprv1I4Dfg1cBxxjtM9Pa1EJMAo4CzgI6Ge99yJwNXABsDzjdSnVRWWu4qhJS1HKzbiI/SYhCs9Ao+3p5JeTCO8BZgFfJHjjARiNhLE+CozPbFVKlVGZ6wBU4VGUcvNO43gNYrL6MtG2359KZUXt0QOJLtvQ8d4TSI6hO5HPui1wD7BFVotTKonKXIegJi1FKTcjjeNbqeWoGAuc0GTsA6msqD02Aba22l4FjgWmG237AHchUWe3I47ZqzNYn1I9VOY6BN3hUZRys7FxfI9xfCrid9CIxcjTa9FYAMwwzu9BHEinW/3uAy73jrcDvpL6ypSqojLXIajCoyjlZiPj+BnjeBnhP8g3AetSWVF7dAN7AZ/2/p0IvNyg7y+M428j0TWKEheVuQ5BFR5FKTfmD+4C6707Ef8Dm27gR6mtqH1WADcD9zfpN4uaSWEoUk4jCYZRX+cnqdc7Elqfkjx5ypzKW0aowqMo5aaPcbzU8f4JwF+tth8iP9xlZy31T+JhCRjjsHNC1zFZAvwrhesq2ZKGzKm8ZYQ6LStKuXmaWhitK2vySmA/JOPy7oh/wtnZLC0TTCVvr4Suad6AbiCe6W9j4EOO9rPRxHVVIWmZU3nLCFV4FKXcvDdCn6XAKWkvJCfM37ANkerKjfwvouLfgOYDh8QYNxT4k6N9CpKwTqkGScucyltGqElLUZQyM9A63y6Ba/o3oJkxxgxBQpa3t9rPA85MYE1KcUha5lTeMkIVHkVRyswg63wjZ6/obAxs5h0/GnHMQOB3BH0xfkCwWr1SfpKUOZW3DFGTlqIoRWMD4FOIz9FIoAt4CfgjcAuwyuvXBQywxg5uc27zJhLlBtQPuIOgafEnwOQ216JkR14yp/KWIarwKIpSFPoiT6j/5x3bHAvMRiJjHkF8J3pafWxzQ1weALb0jv/dpG9fJLv13lb7z5C1qtNo8clb5lTeMkQVHkVRisAQZJvefHJdgjhf3oqk+t8ZmArcC+yBOG3auCLV4rAUd3i/TW+kAv1Eq/0m4Ej05lMGiiBzKm8ZogqPoih50we4G6lY7fMq8EHgcaPtDuAvSBmAq4ErHNd6M6U1mvREwoftpHO3AociuVqUYlMmmVN5Swh1WlYUJW+mUn/jAfgS9TcenyXAaV5/V+mMJckuLUAPxIRwgNX+e+CzSEXtNOjpXf83wFxgOVI+ZA4SrTMZMbco0SiLzOUlb6AypyiKAsCN1Kexn9LidbZBnlDNa93RZMx6SEJFVzr9PVtcRxS6gCsdc97rrSktRiMOrf58rwB/RnYdVhvtX2jh2kl9j2mS9BrLInN5yRukK3MQ/Ts9meDnb9S3KbrDoyhKnkwm+Dt0YZMxK2icNv+ptlfUmMsQfwmTvwIf99aUBkMRk8pOyI3maOSpem9kx2E3ak/5UcOaO52yyFwe8gYVljlVeBRFyZMDrfMFwH0Rxr3maJsHLG53QQ24kKA5YwYwCdnmT4vzgM294/OBn1LvoDoTKS+yHHgmxXVUiTLIXF7yBhWWOXVaVpTqcTww1mpbBvxvDmsJY1ukUrTJ3USLOHE9rLn8L5Lgu8A3rLZZwIdJ139jQ2omg26k6KuLjyLmD3VebU4ZZC4veYOKy5wqPIpSPb6K/LDbfIf0nw7jYCtlED29viv3yZ/bWEsjTgdOtdqeQsKDX09hPpOJSDQRwJM0ztMyL+V1VImiy1ye8gYVlzk1aSlKtehBLZGZzdZZLiQCGzranos4dgPrvBv4ZXvLCXASoiSa/Av4ABLCnDbvM47/nsF8nUCRZS5veYOKy5wqPIpSLTbDnTEWiqfw9He0vRJh3HrU6g/5PEiyT53HA9+z2uYCExCfjyyIW3ZAaU5RZa4I8gYVlzlVeBSlWoQpNWMyW0U0XFv0UbLOjiP423Vl+8v5L0cBl1pt85Gbz/wI43dDHGM/EXPefkj0ix9+a2YAvoJgeO7nY15fKabM5SVv0GEypz48ilItwpSaoik8cxxtKyOMs9PrPwtc2/5yADgM+BHikOmzADErvBDxGpci4btPINlwo7IN8lQPciPyk7qtazD3wzGurQhFk7k85Q06TOZU4VGUalEmhedh5OnadAaNUojxk9b5qSQTLXIgcA31T/J+uYGofh69ge2940dizv8Ete/oCOAq7/hxJCeK0j5Fkrm85Q06TObUpKUo1SJMqSmaD89q4DqrrdkadwV2N87vBqYnsJaPA9dTXwn7deTJ/skY13kXNR+qdnwgKu1LkSNFkbmiyRt0gMypwqMo1SJM4dmMWshpUTgHSWDmMyGkbxdwrnH+MnB4Amv4MFJ1urfRtgTYD8l/EoekbhqVv/nkSN4yV0R5S/pahURNWopSLbYKea+H936RsqO+CBwL/Nw7PwK5IS109D0F2Nc7XoxknY0SYRPG3sDNBCPb5iCZbl3FIsPwzQBraD0pXU9gB+O8kjefHMlT5ooob6AypyhKyRiOu7ih+do/obmSLuh4HLVokRnUmxkGIynu/bmeQ6JmkuAOmv+ftfKK+6RuMt64zmoapxlIgk4sHuqTh8wVUd4gW5mDnIqH6g6PolSHKE7JRfPj8ZmGPKFehPhLPIf4MqwB3onkT3kLiUiZSnIZo3du3qUlkjJn/ZNoUURKfPKQuSLKG3SIzKnCoyjVIYrCU7RILZMHkTwg45BIlc2Rm87tSPr/u4C3E55zeMLXS4LK+1IUiKxlrojyBh0ic6rwKEp1cO3erKU+EqTICo/PU96rU+mIm0/BUJmrUVmZ0ygtRakOtjKzCsmzEdZHKRbqPKpkTcfInCo8ilIdbGVmLlJ80GQ09Ts+SrEYS63e0xqCCquiJE3HyJwqPIpSHWyT1myCqfR7I0qPUkxM08KTwIq8FqJ0DB0jc6rwKEo12AhY32qbgyg9NmrWKi4d4UuhFIqOkTlVeBSlGrgcll07PKAKT5HpmJuPUhg6RuZU4VGUauBSYmbj3uEpai6eTqcHHeI8qhSGjpI5VXgUpRq4FJ45wDwkWqtZXyV/xgIDvONKO48qhaGjZE7z8ChKNWik8KxDagdt06Svkg+HAad5xwOM9i7gMeN8IbBXVotSKk3HypwqPIpSDWwlZgG1itCzqVd4tkJ+3LozWJcSzgSkjIFNT6vd5YulKK3QsTKnJi1FqQaukHTXMcB6wMh0l6NE5EhE+Wz2mpTXApXK0bEypwqPopSfwcDGVtucBsc+atZSFKWjUIVHUcpPowgt13HYGEVRlMqSlg9PH2APYDzy9LkEyeD4INEqz24CvA/YEskMuwgpWf8w6neQNUOAfZAbZB/gVWAWEr64LsL4bZBqxCOA1Ygj3EMESx60w4bAdt4ahwD9gDeB15GCgE8gRTSrSiOHZddx2BhFUZSOZRiiYIS9bjX6DwTORG6Krr6vAafQeGfp3cBtSHica/xLwKeT+nAdxo40/y6nGf0HAxcDyxr0nQscS+Pvcjfg/pC5ngA+0uJn6QL2Bi4BnonwuZYCvwR2jzHHURGua752scZPiTjuNNrnVMd19zDe7+94/1dtznmjdb0pbV5PyYcyfI9lWKMSj6jf6ckEf7sa9W1KM5OW/SPuwk9UtAvwOPBt5InbxVDgfOCnVnsX8iEeAT5G4+KGmwG/AT4fYV1K62yB7KZNplZUzmY0oiBNB/pa7x0P/BXYM2SO8cCdwP/GXNsk4HngPuDrBKMNVhKsBTMA+Cyyw3gN9aGYVcCVSNDc1VmORG2Z6A6PoigdRTOT1ubU2//7A8OtPo8CHwRuoXYjeQt4A6nv089x3SOQnaFbEeXmWuBQ771uZIdoNbLD5FrjZcDNyJO7Eo2VBH05tiCoXG4A3E3thuibodbDrch+Avk+jvbOP++d+ywDFnvXHegYfy5irvxthM8AsCsSVm0yHVGiH0LMWCCyugOyI3gMsmMFcDhi/trbW1sjngeu8477AJ9x9LkLMbeC7F6aPGGMHwB80jtegSjtPv8IWUNUbOVlGUEFZw6wqXGu2ZYVRSk6LheWlt1amik806g3cxwN/Ngx+c3ILs1ZiPLi31h7Iv4fP6Q+DwiIOeRW4AeIsvMC8B1EcXrD6zMIuUFdgNxwfQYjN7KfNVl/u3yN+rTbWXIf8IsEr/c0wRvjfILhyZd7/R5DzC13ISZGgFHAV5BdGXN38ChE4ViEfNcgcnAxsusHIh87A1OBidacPwB+RzSfIJO1iOz80vHecmRH50Hv+rciJlO8dVyN7Po04j7v5fN94ASrzzpEwXP9AU73XgBXGe2nUK8QJoH9vbp8dmZTb+YahPjK/SfhtSiKoiTFmohtqTCNelvaEuRJeA5BhcZkDEG/nDeAL3jH06lXaGxOJGjHu6iNzxGVOxzzZvUyFc20mG/N+Zj3722EK8NfI7jenwG/9o6PCxnbC9lBssdPiLjmKcaYqRHHgIRtv2bN+b4Y4/siztr2uic3GfcZo+9tMeaLSj9E8TLXdIuj3xkE176Ho19U1K+iGpTheyzDGpV4RP1Ojyf4uxXXDeK/xA1L39k6H4SYKvYlPOrmeWCG1TYEuAL4I3JTsP0uTK5ztNmmNaV9dkSe+A8lXIu+nKB57ABk1+16wpW1Ncguh83Hoi8TkJt8HKV3EbLTY3JyjPErgYOpZS/2OZfGu4CbU9sRfRlJ+JU0Y5DdMxNXGLpGaimKUjYS3eGJo/D0RhxNbY5HavU04yVHWzdyc20WMrwQueGYZLat1WGcj/hghbGO4G5Ff+TGe0aEOWYhUV4mUU2Hv0d2/I5CfL3icI91PoHGDvIuniG4o9MXUfJsX7WeiElyfWqmr7jrjUIzh2UfzcWjKErZWB2xLRJx8vBsRzAaZyZu/wkXfRxtFxN0rmyEvdY3I45rhzPJxrTkIooSmQY3Reznqqr7GLKbF4XHEadpn6g334e8Vyu8bJ0PRpT4WTGu8RPgQ8CBRts44ELEv8nnW8D7vePzkJ3MNGiWdNAn7x2eKURThpXkOJPONP9MQWUtb5KSvUR3eOIoPLY5C8T5MqrH9DDrfC1i0orCUIJP4kkmrmuEbYarOi8ifj1RcPX7W4y57B2/ITHGtorryWA48RQeEOf9XRGTlc+Xkd2n25BEi6d77X9HUjWkRbOkgz4LkOgtMyRfI7UURSkyrt/sXBSeFYiTalS2tc7vJfrujj0W4NkYcyvReCZGX1dIdzvjXSHrUeiF7NK8G7mBD0F8y1ymKldOoUY5o8J4AzHF3mfNcyWSe+g6b11LgM+RrvnVVnjWETQX+syh3iytJi1FUYpMYXZ4HqK5r4fPKGSXxuSuGHO7fIceizFeiYadSyYMl+YdZ7ztkxXXgX5zxJfnEIK7h3EIiw4M4wEkDcMUo20jxMzrK1bHIekW0sTepZkPrGrQ11Z4hiJBB6+7uyuKouRKLk7LvYHtrba/xJjHZQ5rZ/y/0fwhaRCWiC+L8VE5AamRNZn2lJ12ORspn2HiKzvXAjekPH8fJPu4ict/J+w93eVRFKWo5GLScjksPxxjHlthWUUtIV0r4x919lLaJW7iv6THR2Eq8H9W21okr8NNiD/OItxFakcB8xJci5/48HFkp8Tk9gTnacSWBE13Lv8dH5fCszXZ+KpNoTMdaJXsmYLKWlXIxaTl2qGJo3TY4/9B4213mz6IwtXq3O1wErXsvFlzL5INWKkxiaCy8zpShPTv2S8HEAXqEiQqweSHSD2xqH5qrRA1Qssn70gtRVGUOBRC4XmZeD/k7ezQjCcY0p6VwrMv8NGM5rJZiio8Nt9ztB1JfsoOwAgk87TNxsDPkRD2lmu/NCFqhJaPmrQURSkTiZq0ovrwtKOwjERq9rQ63rW7NDPGeKUajAfGWm2zcZdRyIoeiFKzkXf+ivX+B4H/SXF+V1h52A7PXIJJPlXhURSlqLiUm5YTD0ZReHoRdFhuV2FpZ/zLBG8sSvV5j6PNdhjOmm9SqwF2pXdsl544C8nZkwZxTVqrCeZP0lw8iqIUlcydll0Oy4/EmMPlsPyPNsZn6bD8LcQ/Iw+iJgDsFOxdQojvHxM39D2M3aj57TyDRI4t9/79qdGvNxKttSPR0zhExVZ43qB5iPlsYLRxvimSA2lpgutSFEVJgsx9ePJ2WLZz8GSp8MSJJFPSxeUHEyePFARzQbXKYKR+Vi8kn9BB1HZ2rgQmem0+WyElSg5NaH6Q6KwtrLaw3R2fOQQr02+NyrqiKMUj8zw8eTosb0fQYVn9dzoTV96luOaYnZJYCBKBtZV3fBLBumLHEsx2fAhweELzg+zS9LbawhyWfdRxWVGUspC5SasdhWUEsmXe6vh2d5eU6vCgo20CUkYiqqnosATWcTiivADcClzu6PMmUlLifur/xi5D6o0lUQcursOyj0spUj8eJS5fJig33yTdMipK5xFnh6cHUsD544gV6QakzM9/aabwtOuw7HqibkfhWUCw4rXSGTyDZFceZ7QNQQpznhJh/MFImoF22AZRWkB8rI4M6fsQUrH5u0bbQOSPcA+im3UbETck3Ud3eJQk+BzwfuN8OXByTmtRqkucHZ7LEEXc56NIctaz/YZmJq13Eaw11I7CUiaHZaV4nO5oOxl5suwKGXcwcFWbc/vOxwOpZVhe3GTMucAfrbadgXPaXAvEj9AK66MKjxKXAdb5S7msQqk6UXd4RiC1C22+DfTzT+wdno8BBxjnmzsu8CXgQO94FXCM8d4xyNOrz57W2FXAj43zGdSbBK6gvqK1vbu0FXCNcX4bMN2xRsXNNOoVWLscwr7U///eQi3PzQbAxcZ7rirjk6nJBkh697nGtU0flh0d46+xzo+lvsjodOQz2IJ9DvLEeTVS8mQxYuraAVFM9vH6XQ0cYY09gno5vYpanbfvI7tIIH8LvgK+ENndORJ5Ajnauqb5WV07OScCw433/oTU3opDqzs8fiSX+d2rwqPEZYR1rg+jShpEzcOzFe6H3t7Ib/ezrovfgETDRH3ZQv5YzPFmOv6RMcd2Izc5JTpLiff/O8UYOyrm2G5gF2P8cS2MH+j4DD2BC5C6XVGv8zbw9Yif4ShjrgUR+q9wrDHuZ53muEYznrSusYpgXa1GzLDGriOYeqIZN1rXmBJzvFIMWvke1ycow8emtD5QWasiUb/TDQnKmusBbRiiHNl9l2IEPtkmLZeTcBhmPp6+iAms1fFx57bHK53BWsRnZ0+kQKedOdhkCZIJeSyyW1MVuhDbtMmLhP9fmNhmrS5qUWeK0gzbF24NutOupENUk9ZCgq4C3cA3MHbZbZPWO9pY2EqCIeRxuI1wPwylfVw7JlGZT3vfzzRa28loxN8Qb/xBwHsRBWADZLtzEfAC4jhsbn/G/Qx2hGFUkv6sNiMx7NIeUfx3fBoVEX265RUpnYQd7fhr5G9OUZImTpTW6YiVaX/kd/9GxF3gv8RN3KYoReMt4K68F5ExrTosh/VVPx4lCtsBnzTOVwPfyWktSvWJm4dnOiG7jarwKEr5aNVhOaxv0XLx9EeczjdFlNp5wHPINrWSD72RTOKmK8RZlH9nUGWtuGSeeFBRlGLRatLBsL5F2eEZhdxEDyJotnsRibS7gGCRViVdeiBRlGYh3NuAqbmsJhlU1oqPH1RhKtmplpZQFKVYtLvDM5/6cP9G18ya9wCzgC8SvAGBlNOYgkSH2jX2lPToi6SnOMRo+wOS3yqqo3zRUFkrD7aCowqPonQQ7So865AnWJPR5Lvj2wNJi+HK7/QEkr/rTuTHblvgHoLFU5V0WImYeHymIY6hb+eznLZRWSsXtoLjMnNFQk1ailI+bJPWQiTfRBxmUx+V2QtReuKYxpJkE4Kf61Ukv4vphLgP4qQ+DElLsBNt/AAqkTkZkbGZiCmrzKislYvTqM8Tpt+BonQImxBMrvW3Fq5zqeM6H44xPulkcF1Ilmz/encTzObrc7HR7+ttztvplCGpn8pa9chF7tSkpSjlwuWwHMecFTYmTz+ebmAv4NPevxNpXCj4F8bxt6kvR6MozVBZ61BU4VGUctFuDp6wMXk7Lq8Abgbub9JvFrVt7aGIP0m7TCJeOZCPWeOPiTjucpQikKes+fiFiKPK3L9DrnV+xGu8O8H1lw714VGUcuFSSg4B9o55ncGOtqLl4mnEWuSJfLR3fjBwU5vX3KV5lzrsOoJRx2uRzXKRhqz57ES8TYcw2YkifyuBf8aYr3KowqMo5cKl8Ixp0J7EtYuK6aS9VwLXew24zjt+BxK2bLIMCc0Gyctim0DmGePHA9t7x08jjr4+f05grUq2JC1rPr2oycx2SPJDkweoj6a8PeRaT1GTyaHAR7zjRdQy0c9DHX4VRSkRprNl0q8VRH/izNvZ9Rlr/kZOp60wAlFq7P+f90YYuz3wutf/aWCjBNeVBnl/j1HIe41pyprPwQTl7bQWr3WlcY1DE1ld8qjTsqIoTUnT7NQXyT5bBuxCuNsleO2XcfvanN1k3JbA74H1kafpDyHhzkq5SVPWfB5xtNm7jFHYHTjCO/4ztR0kBVV4FKVMrI9sV6dJWfx4BlnnSe+knAsssdomAPs26L8JEt48HFFyJiJKj1J+0pY1gOeRnUGTuH5lPYErkLD7NcDxCayrUqgPj6KUh20ymGMM8KcM5nGxAfAp5Cl1JPLD/RLwR8R/ZpXXrwsYYI11OWG3w2vAhcCZVvvZwPustiHIzs7WSPHJ/YBnE16PkixFkjWfmcAHjPMRiAL9SsTxX6EWhfV94MnklqYoipItnyM9/x3/dV7EtSRpg+8LnIH4EDVa1/PUnnhHOt4/uY35GzEIcfq055pk9FkPMR34PlD7pLCONMnbPyYKnSBrILuK9lx2+oNGbAK8QS183d6VKhrqw6MoSihZRFFlHak1BNlRmkItffwS4HTEAXgE8qO/HLgXeBewleM6adR1egs4x9F+FvLk3xP54d4LCV8+CLgvhXUoyVBkWQN32HlUP54LkM8HcBIiu4qiKKXlGtLf4ZkVcS1JPKH1IRh1tohgeC6IGeFZr/8XHes+rIX5o7Ae4otjz3cAcJV3vM5bUxnplB2eMsjalo657oww7v1G/3tTWlvSlEHuFEXJkQdIX+GJ+mSYxA/W9xzzfzyk/2e8Pq7Q/LBx7XK0Y75lxvFJKc6dNmW48XSSrL1qzbWwSf9eSIX3bsTvaGyKa0sSNWkpihJKFuamgcCmGcyzDXCi1fZbwitx3478qLu2+RcntC4XVwP/str8mkpTEefmrOgJfBb4DTAXMb8sQ2qj3QVMJp08MWWmTLJmm7U2BjYP6X8CkugSpNDp02ksyqP0sqdRWopSDgYijokmi3H7mMThswR/1McAC9q8bjMmE3zgaqY4rEAUj3c53nsqiUU1YA3i6Hq91f42UsMoK0YD05GSBCDf0QxE+doRMYlMROTiZxmuq+iUSdYeQfI3mbwHiSCzGU5tZ2Q+8J30lqWypyhKduxIcGv9gQSu+13HdQ+PMK7dLen/WONfQRyBm+FHRJkv180gaQYgDq723GneZEyGImUGfNPFUdT/f+2ElA3oxn2TbkQnmLTKJGufcszZ6KHmBqPPZ1JcUxqypyYtRVEa4koI+EIC13VdI23T2bbAMKvtbuSHrxmu36zH215ROL2QH2hXqO+JiNkhbc6jZto4H/gp9f9fMxFzxnKkFIIilE3WXBmXXQkI90XKUQDcA/wqtRVVSPZU4VGUcuBSQsqq8LgcK2c62lzYaf4h3YKcXYgPz/7euZ0EbiDwrRTnB9gQ+IJ33A38sEG/jyL/t2tTXk+ZKJOsgUQE2o7KO1vnvamVPlkFfDXF9VRK9tSHR1HKQZUUng0dbc9FHLuBdd4N/LK95YRyCbUw5LMRZ9a/W32OAy4iPXPHRCSsGiR77r8b9NNSFkHKJGs+j1Krdu6vYwySEBHgG9QUuQtJN6t33rK3A8GivY/g3glriu7wKEo5SEvheYngU1na9bT6O9qipM9fD9jManuQ9H5sz0CiYEBqFJ2OhCnfYvXrS7o+CGYpC1vZUsIpi6yZhJm1RiFyCPK326ygbbvkLXsTkV0l87V/6IgQVOFRlHLgUkLmJHDdNQR/xDcg3SKldpFEgKURxo0j+Jt1ZfvLcXI8NSXmeurNBt9Ckg2afAHxF0kD06ThysarNKYMsmYTpvBcQq2214mI30yaVEr2VOFRlOLTF6npY7KaxtvLccnarOVS1FZGGDfROn8WuLb95QT4HHCpd3wnErVmOmk+BfzcGtOT5J62+yGKqB/BYm7pX0EwiufzCc1bRYouay5mONp2QcLVD/DO/4CEiSdNpWVPfXgUpfhsTfDhxGWKapUXkKgPkzGI+SYNHkaesk2nUJeDqM0nrfNTSd5J8iPIja0LuB84ELkB2JyBKEZ9jLYDkBtTS/4FBtsgid1AbkB+Mrd1uJXTtL6nKlBkWWvEK95ruNG2E3CZd7wS+FpKc1da9nSHR1GKT1r+O2HXStOPZzVwXcz5dgV2N87vJvkn3D2AX8iijFYAAAQJSURBVCNRMI8hhSQbFYp8EfiRo31qAut4AvnOxwCnGe2PG+3mK02n1bJTVFlrhq00D0KUEZBCoXbm76SotOypwqMoxScPhSftSK1zqPc/mBDStws41zh/mWjJEeMwHik30B+J4tkPeLPJmLMJ+oNMJLhb1g6V8qHIiaLJWhQa7RLOJRmlOgqVkz01aSlK8UnLYTnsWmkrPC8Cx1LzhTkCuTG5iiWeQk2JWAxMIlqkTRgfAg4xzvcD1veO51ErGXEd8oRvcgW16J/FBE0kPwb+6h13A1+h8U5RMyp308mBvGWtFRp915NpXZbiorKnKErm/IGgs+BBCV5/U8f1/9NkTFKp4Y+j5iQ5g3rlbjCiePhzPIdEzyTBTwh+ZtfLdl4dGXGc/2rHsbwnsjPhX8tVyLJdOqG0hE9estYKwwjK0m8znD9t2Yv6nZ5M8P+hUd+m6A6PohSftE1aC5Cnxn5G2zBk5yJKCG87TEP8Ay5C/CaeQxKcrQHeieykvIVETU1FqjMngZ29thH2k23UcT7tODCPo/adrEH8K5TWyUvWWmEhUhB0lHe+glpOqCyopOypwqMoxaYXtTo2JkkqPCC+AXYa/jHArITncfEgEv46Dvgg8nn7I1mNZwJ3kfw2/k7Nuzi5jWiFJ5PAVK7+SbRwaiWcPGStVf5JTeE5D5id4dyVlD1VeBSl2GxJ8O90KbAo4XleID+Fx+cp76UI6kORHkWXta2p+RK9QL0jdRZUUvY0SktRik1aVdJt8nBcVsKp5E1HicQlSMJREFPWioznr6TsqcKjKMUmbf+dsGumXVNLaUxPpHCiT2VuOkpTJlGrF3U7cEfG81dW9lThUZRik6fCozs8+TGWWuh7ZZxGlab0QXZ3QHyJvp7DGiore+rDoyjFRhWezsQ0KTxJ9iYNJXm2BbZA8vs0KsnwP9QyKp9DOn/rzais7OkOj6IUmzwVnpHAeinMpTSnkj4UHc65wO+Q0hAuxlMr5/AsteSXWVNZ2VOFR1GKSw/kidAmySzLPm8iT54mXcBWKcylNKeyN50Oxv9ORxNMbTAM+A3iqLwW+BL5hYJXVvZU4VGU4rIZtUgNk7kpzadmrWLQg4o6jXYww6jl1BmNZPreE8kH9WXkO/ZNWadSK02SNZWWPfXhUZTi4lI2FpFe9uMXCGYSVoUne8YCA7zjSjmNdjD239WXvJfNReRnyoKKy54qPIpSXLLy3wm7tio82XAYNf+NAUZ7F/CYcb4Q2CurRSmJMQxx/m3kE/cisrNzfWYrqtExsqcKj6IUl6ySDoZdu5HC8xD1vx9FzlpbBiYg9ZxselrtSftvleF7LMMam3EtUjBzV8QvbmMkBP1VJJv5DKQwZh7kIXu5fKf/D+Woq8HLbv+YAAAAAElFTkSuQmCC $$m = \\max\\left( \\left| { {\\partial z_f} \\over {\\partial x_f} } \\right|, \\left| { {\\partial z_f} \\over {\\partial y_f} } \\right| \\right).$$>>------ The minimum resolvable difference r is an implementation-dependent--- parameter that depends on the depth buffer representation. It is the--- smallest difference in framebuffer coordinate z values that is--- guaranteed to remain distinct throughout polygon rasterization and in--- the depth buffer. All pairs of fragments generated by the rasterization--- of two polygons with otherwise identical vertices, but @z@f values that--- differ by $r$, will have distinct depth values.------ For fixed-point depth buffer representations, r is constant throughout--- the range of the entire depth buffer. For floating-point depth buffers,--- there is no single minimum resolvable difference. In this case, the--- minimum resolvable difference for a given polygon is dependent on the--- maximum exponent, e, in the range of z values spanned by the primitive.--- If n is the number of bits in the floating-point mantissa, the minimum--- resolvable difference, r, for the given primitive is defined as------ []--- r = 2e-n------ If no depth buffer is present, r is undefined.------ The bias value o for a polygon is------ <<data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADgkAAADkCAYAAAAYPSVKAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd/wlVX34/9dnWXpHAanuIsUoqBQbiYFgiQVLsLe4Bo2aRE1ixEQNiiURe0yiWBL9xh41iiKaYGRNogaCIgSDCohIl97LLvv5/XE+97dz555bpp/53Nfz8ZgH3NnPnDl37sw55z1n5pwF1FdHA2synz8JnNxNViRJkiRJkiRJkiRJkiRJkiRJkiRJUhHvBhYzy4u6zY4kSZIkSZIkSZIkSZIkSZIkSZIkqW0rus6ASts79/nyTnIhSZIkSZIkSZIkSZIkSZIkSZIkSeqMLwn2ly8JSpIkSZIkSZIkSZIkSZIkSZIkSZLUU1cAi5ll226zI0mSJEmSJEmSJEmSJEmSJEmSJEmSZrEpcA8bXxC8udvsSJIkSZIkSZIkSZIkSZIkSZIkSZK6sKLrDKiUvRj+7S7vKiOSJEmSJEmSJEmSJEmSJEmSJEmSpO74kmA/7Z37fFknuZAkSZIkSZIkSZIkSZIkSZIkSZIkdcqXBPsp/5KgMwlKkiRJkiRJkiRJkiRJkiRJkiRJ0hzyJcF+8iVBSZIkSZIkSZIkSZIkSZIkSZIkSZIvCfaULwlKkiRJkiRJkiRJkiRJkiRJkiRJknxJsKfyLwle1kkuJEmSJEmSJEmSJEmSJEmSJEmSJEmd8iXBfnImQUmSJEmSJEmSJEmSJEmSJEmSJEmSeuoWYDGz3Kfb7EiSJEmSJEmSJEmSJEmSJEmSJEmSpFnsxPALgutwRkhJkiRJkiRJkiRJkiRJkiRJkiRJmku+XNY/e+Y+Xw1s6CIjkiRJkiRJkiRJkiRJkiRJkiRJkqRurew6Aypsj9znqzvJhVTOXwO7Tfj3m4BXt5QXpeGZwJOm/M07gJ+0kBdpufsbYPsJ/24ZLEnSfDJOU4yxmiRJkiRJkiQpBfZjKM8+DKl7PocmSVKiFrrOgAo7FvhY5vOpTA94pBRsBtwKbDrhb04HjmonO0rEycBTpvzNrsCvWsjLcrY98DvA1sCXgKu6zc7c2gQ4AHgAsCPhd9kcuAW4GbgM+OnSfxdr3veOwPVT/sYyWJKk+WOcpnGM1dphrJauzYEHAvsQHkDamnAv/UbgBuBy4BxCLCdJkiRJkiSpGfZjKMY+jHbYh5GurvswfA5N6t5WwMOA+wM7AeuBa4DzgB8C93SXNUlSUX9JeHFgsPxjt9mRZnYow+dubHlnZ7lTVy5l8jlxaXdZG3Id08/fWZa7CQ3xCwg3rN5IeGmsSQ8GrmT4mG7T8D610Q6EF/y/BdzBbOfJbcBa4O3AEwkBXVWPnmG/lsEaqKvMK7Jc3so3kyTlGadpHGM1Y7V5tBp4HfBfwJ1MP282ABcCnwGeR4j/JGkcY21JkiRJkoqzH0Mx9mHYhzGPUurD8Dk0qTsHAZ8Gbmf89Xct8F4mz8Ss9h3FbPX+X9Swr6JtkJ/WsM8UeIzVWycxfML8VbfZkUrbn9EC8Nmd5kgpOJPhc+LL3WYHCCPuNPWgzmA5FdizgbyvIAT7+f09vYF9adiWwBsIIzJVPT/uAL4OPLfG/MXOa8tgQTtlXmz5ahtfTpI0lXGaxjFWq5exWloeCXyNMKJmlfNlHfDvwPMJo/hK0oCxtiRJkiRJ9bAfQzH2YdTLPoy09KEPw+fQpOatAN5KuJZj13esjLiRcM0rDccxW3l9E3DvCvsp0wb5TIX9pcRjvGRlmztTLXbPfXYKb/XVoZF1P2g9F4pZA6zKfL4E+HgL+10JPCi3LoVzYjvCyBtZjwN2zq37BnB9ZPsVwLbArsCBhJfH8p4AnA08CvhJlczmHATcL7L+uhr3oVEPIDyElT/25y+tPxu4jPAC4aaE82Nf4DDgmcC9ctttQZhR8FbgszXl0TJY48xa5tXN869Za+imbpfUP7YR0rWG7spyYzVjteVqN+ADwDNy628kPFzxXcKIftcD64HtCZ0FBxPOiSOBhcx2KwmjEx4FvB/4BGHwmLsbyr/StAbb3n2yhnZ+L2Pt5WkNXu+SJEmS1Db7MdK1Bp83y7IPQ1X1qQ/Dsllq1krg88AxmXW3AicS6pqLCfXGg4BXAC9Z+rw98ClC/fz29rKrMW5ktG3wJEZnet0OOB54Vcn9xNogDya0JwDOAc7L/fsXSu4rNR5j9dZZONqClod3MzpiwcLELdSWKxn+bT7W0n4fwuib809oad9FXcVoXvONiJiVhIb6+ZHtFwk3blbUmM/VwIbcPs6oeR8adgSjsweeQ7jBMovNgBOIj+xyXI35fAeWwZpdrMzbA9im4vLNTHpHt/Zt5lNXdbuk/jFOS1eXZbmxmrHacvQMQsd59je4GPg9Zh9Bdz/gK8TPmcEIhJah88e2d790+XsZa/ef17skSZIktc9+jHT5vNl09mFoVn3rw/A5NKlZH2X4GrscuP+Ev38y4QXg7DbHNpxHFbfA6LPGg+VuwsQjdflcJu15evfIY6zeuILhE/SIbrMjlbaW4XP5253mRgN7MFoRvqKlfR8b2fcuLe27iNgxurBgGtsAP46k00S5fjyhMbMe+BJpHtPlYh/gWoZ/z5OJj+Y1zRsYPTceXU82ATgNy2DNJlbmXVRT2tl27W41palRXdbtkvpnLbYRUtR1WW6sZqy2nCwAf8Xo7/t3wFYl03xrJL1F4PSqmVXvdF1eq5gufy9j7f7zepckSZKkbqzFfowU+bzZdPZhaBZ97cPwOTSpOc9i+PpaDzx8hu3+KLfd7cABDeVR5RxAvHweLHXOPHdBJt06X4xLncdYvbAJozMLTXoTXErVAmEkkuy5/K5Oc6SBpzBaCT60pX1/MLffS1vab1GxY/T5EukcE0lnEXhbPdkcsjmwRQPpath3Gf4tf0z5GzSbAlfn0tuxhjwOXIdlsGZTV5mXt1smvctrSE/jdVm3q17PySxP7TgvWp6M09LVdVlurGastlysAP6R4d/1HuAlNaT9NUbPmXfXkK76pevyWsV0+XsZa/ef17skSZIktc9+jHT5vNl09mFomj73YfgcmtSMzQiziGavrw/NuO0CYabZ7LZfbCCPKu95jH95bbA8oob97MDGGYLnbabXuT3GTv/cL/dh9De7qouMSBXtB2yXW/eDLjKiEYfmPq8Dzm1p34flPqd6TuTzCXBWiXS+M2b9ziXSmuYu4M4G0tVGRwOH59b9BWEEljLWAd/IfL4IuKFkWnn7ADvl1qV6val7sTKvjvMlm67nX7O6rNtVr89mlg93nBctT8Zp6eq6LDdWC4zV+u8k4MW5dX8EfKyGtN8YWVfm/FO/dV1eq5iU7oOCsXbfeL1LkiRJUvvsx0hXSvdZUj0n7MPQNH3tw/A5NKk5LwNWZT4XeQl3EXhnbt3TcbC7lGTbBteM+Zs6Xro+hI0vrf2QcG7Mi7k9xr4k2C+75z7fRXjbVOl6FXDvBtJdDRzbQLptyd8YAAODVORvSPyYUNY0bSXwoNy6VM+Jus7fW8ast27up1fmPl8LnFIxzYsy/1/n9WAZrCKaOl+y6Xr+Naurul1KmXFanG2EdHVZlhurbWSs1m9/Abw0t+6TzD7a5jTnEEbjzEr1WlFzbHv3S5e/l7F2/3m9S5IkSVL77MdIl8+bTWcfhibpcx+GZbPUjAXgdbl13wV+XiCNLwO35tb9eZVMqVbZ8vMPib8T9BvA02rcz7wNcusxVi88jeHpLS/pNjua4kTC73Qu9T6Auprw2y8Cf1Jjum16D8PnchJTqwoIs5Nmf5uPtrTfhzA6he8TW9p3UfljtEiYKriovSLpLAJ/WU821aKtCSNn1T01++sz6R1XQ3oD78AyWLOLlXk71pDu4cALlpbVNaSn8bqq21W/7O/ojPLlGaeNZ5yWri7LcmM1Y7Xl4AhgPcO/5/nAVjXv528z6d+EZeg8su3dL13+Xsba/ef1LkmSJEntsx8jXT5vNp19GBqn730YPocmNeNwRsv6Mi/4fTmXxu3UX76ouAXgZsJvsoHQJngt8Tr+J4SBEcr6XCatZ1dIp288xuqNP2D4hDyj2+xogncy/FvV9QBq9sHTwfLaGtJt21qGv8O3O82NBvZgtOJ7eUv7Pjay711b2ncRsWN0Ycm0HhdJaxF4VvVsqmWPZfR3fG8N6T4KeOPSsn8N6Q2chmWwZhMr8y6auIVS02Xdrvplf0dfEizHOG2ytdhGSFHXZbmxmrFa323NaBm9CDy5gX29OpP+6Q2kr7R1XV6rmC5/L2Pt/vN6lyRJkqRurMV+jBT5vNl09mFonOXQh+FzaFIz3s1o2fDrJdL500g6T68pjyrvADb+Hhcsrdsc+AXxev4VFfZ1YSadfSuk0zdzfYyrvPGo9u2e+3x1J7lozmaEN98PArYjvL37Y+D7wB0zbL8roQJcDWwKXAOcB5xJuOjasgK4T27dQYTG71HAtSXTXU242bF3bv1uJdOr09aE324vwu+wDriCMGXqz3J/uwAcnFvX1vTiWwEPJ1xLu7LxPLmGcJ6kdE1tT8jrvoS3128nHNOz2VhZ1a3Lqd/z+76c0d9jBfBQ4MGEh7nvAH4FfA+4uOkMLqnzGD0msm4D/Q6UtwF+jdC42gnYlnDuXk9oWJ3JbOV5XRYIZeeDCWXldoT64AbCDZazCedQVftF1tUx2sp/Li11OyT3ua3rfFPCNbw3sDPhfLmOcK2fDfyypXzMoosyOKbreitW5qU+HXpq5VBW/hoYtHdvJLSXzgNuq3mfXdbtMX0oB/YjHLc9gC2AWwm/0SWEB3cvo93YYrlr83gbp6Ubp0H3dd6s5i1Oi+3fWK2fUmsjtRWrARzPaBn9PeBrNaWfdWPm/5tsN6fepuq6TGjz/MrqurweSO16n6TLcyWl+6BgrF2FsXb69cKA8bYkSZKkvL70Y/SlDwPmrx/DPozAPox62YdRTNvPoaV2vkyzXJ6LnySV5+yWm/zLwovAOSXSOXtM2l8qkVZR3rseL9s2GJSbdwGvBz4d+fs3AZ9cylsROwD7LP3/TTQ/aGVKZfRyPcZahv6B4TdWP9Ztdsbahfgbttnl5MzfbwOcQHgoM/a31xFmYVgxZn8HA19ldMrtwfJL4Ji6vtyMVhAKinxeys5UEZuZYhF4Xx2ZreDXga8QCvBxv/UPCLNsDewf+ZvnNJjHTYAXEEYsuXNCPjcQGh2vWNqmLsdN2OdgeW7m7x8HfJPx5/MiYRbRx7eUt2lLXTOknJFLN1tGbA28gRA4TDomD68pL5OcENl3mWOwKRsbjtnlqxXyVrTsrcMC8BvAiYRrfcOU/d8NnEqYIa9J+xLKx8un5GeREIi+l3KjrAy8OZLuTxlfb3VpNe2WwQuEOvgU4JbIvrPLj4BXUe8gFimXweN0XW9lxcq84wqmkS2bmugcSbUcyubvdwg3cKddA/csfYcqs4emVLcPdFEOFK0TNyVcS+dP2eYuwg3crmTzktJMgn063sZpG5eu4zTots5LuY2QWllurBYWY7V6tB2r7U7oZMin/egKaU6yFbBqadm25rT70Kbqukxo+/xKpbxO4Xrvw7mSyu8Fxtp15c9Yu5t7bn2K/yRJkiSlqw/9GF3329uPMRv7MMJiH0Y97MMoro3n0FI5X+bhufiU6555sxWj5/olJdPaldHf5Uc15HEc713P5j2ZfWTbBAvA/4zJywkl9nNUZvsmBhRIpYyOWS7HWHPg6wyfiO/oNjtjPZHpBe3xS397GOGN2Wl/vwj8Y24/C4QXM+6ZcfsX1vw9p1kBfCqSj6IPoI578PS9dWa2oF2AL0TyNG7ZALxyadvnRf49NgtXHY4hvKgTy9PtjK+MzgXuV1Me/nnMPrLL/oQ3yb84w99mj+mJLeRt2nJUxTxAaODlA95sGXEhs+XlDkJjo0n5crjsMfjDSDrrCaNmlFWk7K3D7xFG1Bq3r9sIDbpx//4+6n+JbvOldGP7vYcQdEyqM85l+CbzrN44Jr3Xl/8qjXkm7ZXBTyaMXBQ7Nncx/rc4lzB6Uh1SLoNjUqi3smJlXtGbkU/IbHtqrblLsxzKOprJ18CkvG0gPOz4sIL7TKVuH+iqHChSJz6QMNLWLMemy5khyOUlpZcE+3a8jdOGy5ou4jTovs5LuY2QUllurBYWY7XquorV/iaS1sWEe4p90oc2VZdlQlfnVwrldSrXex/OlRR+rwFj7WqMtbu959a3+E+SJElSWvrSj9F1HwbYjzEL+zDCYh9GdfZhlNf0c2gpnS/z8Fx8ynXPvDmM0eP4nQrp5QdmuINmJiXw3vXsvpPZR75NcMSYvNxKmOG2iNdmtn9XhfzGpFRGxyyHY6w5kX9r9c+6zc5YLycEWYMlNhrLkwhTn9+aWXczYXSDSaMEPXVpH5sw/GDnBsIU3pcD68ZsexNhdIY2bQJ8JpKXWR9AXUWYXjW/fZcPnj5oTJ6uAz4O/Cnwu8CfEKZjHfzGGwgjp7yH0d+l7sBmC+BDuf3cDXwYOJIwygKEkQAespSn/HlzCaNTuZfx14RzdbBckNvPzcCewP8tfV4P/Adh2tqXAL+/lMa4GxevqjFv+QbYj3P/Hlu2r7D/gYcw+r2eRAieb8usu4NQRlwf+ftsnpt0VWSfOxRM41CGv9dgeUvFvD2R4d/mtMg+nlRxH1ln59K+iRDMPQLYMvN3Oy3l7SuR/LyzxvzsCPx3Lv3/IpRHq9jYmFwgjPz0GkK9kc/T75fYd+xm9GD5BGE0llS8g+bL4M2Bv2X0WHyFcDP9Xkt/t5JwY+h4htsDi4RR8A+oIS8pl8FZKdVbWbEyb8eCaWRfon1rrblLrxwaGHcNfBV4BrAzG6+7nQg3SP4t8vdl2nyp1O1dlwOzxiNHEM6bwbp7CHXDpcRvTH2kZH7qks1LSi8J9vF4G6d1E6dBOnVeym2EVMpyMFYbLMZq1XQVq23NcL0zWMqM/teVvrSpuiwTurwXkEJ5ncr13odzJYXfa8BYuxxj7e7rBehn/CdJkiQpDX3ox0ilDwPsx5iFfRhhsQ+jGvswqmn6ObSUzpd5eC4+5bpn3ryI0eP3uQrpXRxJr84Xer13XcwC4Xqa1CY4OZKXMvn5XGbbZ5fM7zgpldF5y+UYa078kuGTcE2nuZndSxm9gJ5IGGHjNkKgkh1FZxPCyLk/i2w3GBX375c+/5xwHLIX77bAHxGfivt3a/5us9gE+GwkL9MeQF1Feg+eHsbo9L93EYKTLcZssyfwfTYGUGtz259ecx63ZTRw+wnwgCnbHcXoG+vfrDlvAN/K7eOHwP8u/f+/T8jnAuGBj/z5sI56Gmt7RtJ+WQ3pzuLYyL6fRGgE3k1oPB6c22YV4SZcrIJ+eEP53COyrwsLpvEC4gH+B+rL5v/vJZH93KemtDdn+Hr5NmHEt2n+IJef9dQzY9xKwvWTTfu1E7cI9iIE0dntDi2x/90ZH4gvEoL8kxg9j7uQv5lXdxm8DfDd3D6uYfqIWQ9i9Nq4gPqnak+xDE613oqVeReVSOfLme2fVlvu0iuHBrYBvsfoNfC4GbZ9O6PH/PkV8tJV3Z5iORCLRx7PxpsB3yS0PbI3KHZmtA3fVttonGxeUnpJMK8vx9s4rd04DdKt8yDNNgJ0G6eBsdoixmpVdRmrrSF+Hu5bMJ2u9KVNNa1MWA18NLJdHWVC1/cCsroor1O73rNSO1fyuqxfjbXLMdZOs16A/sR/kiRJkrrVh36MlPswwH6MGPsw7MOoyj6M6pp8Di218yVvHp6LT7XuGeeVwMc6Wl5Q83c5gdHj93cV0jsjkt5vV8zjgPeuizsgk/64NsEBxJ9JXs/09mlW9qXdOuuY1Mvo5XCMNUfylfvR3WZnZicxnO+bCRfEz5lc4e9LuNCy295IaNAsAv/C+BsFEEYWyl+4XT24uQnDbwoPlnEPoK4i/uDpe5rP6lh7A1fm8nM7odKcZhc2jqByVy6Nd9eYxy0YvSl0PuEt9Fm8i9Fj/qga8wfjRyU6idmmb45N6f3hGvL11Ei6h9WQ7iw+mNvvoIy4AjhkyrZfZTTfL20on0+J7OvzE/5+S8JNkiOB17MxQMoul9HcyAH50c0urzHth2bSPZPhhvI0p+by9dc15OfluTSLjJryosx2d1M+yPgIo79vbPk/wug5TTRsZ3FdLj91l8HfzqX/K8L07LPIBwCLhNEC65RaGZxyvRUr86oue9WUN0ivHGIpD2tzaV/N7EHjCuC83Pb3r5CfLur2VMuBfDxyE6GtcTvwrAnbbUmIP9puG42T/Q4pvyTYp+NtnNZOnAZp13mQXhthoMs4DYzVjNWq6zJW+xqjv+sFBdPoSl/aVEXKhFMieapaJqRwL2Cgi/I6tes9K7VzJa/L+tVYuzhj7XTrBehX/CdJkiSpG33ox0i9DwPsx4ixD6MZ9mHMpuo95j73YWQ1+RxaaudL3jw8F59q3TNOrH+hreWkmr/L+yL7+KsK6eVf+FwEnlkxj+C967Kel0l/Ut2Tb+sMlq/NuJ8dCDOSDsqZOmd6Tb2MXg7HWHNiO0ZPwEd0mqPZ/Q+jeb8OuO8M2w5GBMoutxJGIZjWyNglsu1ni2e/NpsQArx8nvIPoK4ivQdPNwHOiuSpyIi7b4tsvwg8t8Z8fjKX9u0Ueys7++b4YPlgjfm7XyT9ReDrbJyafpqDItvfQfWHmd6SS/Nuwpv+bYiNUnEzsz2s8dzItm9oJpvR0TnKLNcTpil+IfXPkpZ1Zm6/X60x7cFNkg3AgQW3fVkuX2dUzMsCcEkuzd8ssH12VLMfVMjH1oyOKjdtuYAwvfZDK+y3iNWRPNRZBv9TLu0NzHZjf2BrQrmdTeOKGvOXYhmccr1VV5k3WK6uKV8DKZVDA5/OpbuB2WY1yHp9ZvtbmP3cjOmibk+1HIjFI+sII3tOM4hH2mwbjZPNf8ovCfbteBunxcvtOtsIkHadl2IbYaDLOA2M1ZpirDabKrHalsRHUv1YwXS60qc21S3MViZkO2LqKBNSuRcw0EV5ndL1npfSuRLTZf1qrF2csXa69QL0L/6TJEmS1K6+9GOk3IcB9mOMYx9GM+zDmM0892EMNP0cWkrnS8xyfy4+5bpnnOX0kuBHI/uoUk+dHEnv9yrmEbx3XdZ7MnmaNIPtzsRnEl4EjphhP0dl/v7bFfIbk3oZvRyOsebEfoyefH2YknJT4E5G8/6cGbePPax5C7NPYZ7f9ydnzXhDVgJfYPQ7DR5AXUV6D54CvJrRPBUZOQXgkZE0FoH9a8pjbNSdPy+YxgKjhf25NeUPwugD+TzeRHyWkkl+GUnnYRXz9vVcenU8IDWLlcSD3jUzbv+bkW2Pqz2XQf4YlVkuJQQELyRMAd+UWNn7phrTfxTwxxS7cTuQvw7GTeU8q0MYPc6zjuYGcK/Mdh+pmJdtgI9H8jPLcj6hMbpNxTxM8ozIfpssg/+hRDr/HkmnrlkXUyuDU6+36ijzssupNeVrIKVyCOBpjH7nj5ZI58mZ7f+jYp7arttTLQfGxSOvm3H7twCfAt5ZIQ91yeY/1ZcE+3q8jdOaayNA+nVeam2ErK7iNDBWa4qx2uyqxGpHRva9CLygYDpd6Fub6sUzbn9EZNsqZUJK9wKgm/I6pes9K7VzJabL+tVYuxhj7XTrBehv/CdJkiSpPX3ox0i9DwPsx4ixD6MZ9mHMbl77MLKafA4N0jpf8ubhufiU655xltNLgp+L7GPW+64xX4qk96qKefTedXnfyeRp2kuL2UEQs8uZTJ+17rWZv39XhfzGpFxGw/I4xpWs7DoDmtkukXXXtp6L4g5k9C3qHzJ5yvSs2IgB72P2h2Lz5/hNM27XlPVsHC3jGZn1BwGnE4K4++a2eQ/wZ81nbax7Eyq8rHuANxZMJ1aI30w906RvxWgj61rgAwXTGTRkt8usm3Xa41kcGll3IsWv5YuBvXLrDiFUSGXl89bWTZsDGZ0e/VzCCBOzWIysu6FSjsY7JLLvSfnchHAu7QI8mDAK0J6EURBeRrhZ9RHCzZS6y6YHMlr2nlVj+v+5tJSxW+5z/vcvKhY07kUYQWsWNwMHL/3/lRXzcivhobdPEEaz+40C296fEFQcB7wZ+PuKeYnJT33eZBm8DnhribQujax7FPC/JdLKS6kM7kO9FSvzBiOnzOoNhPMZ6q9XUiqHtgI+lFt3N+WugezxrXrM2qzbUy4HYvHIhYSYYhbHl9zvvOrr8TZOG1ZXGwH6Ueel1EbI6ypOA2M1Y7V+x2qPHLO+7LFpS9/aVP8L/L8Zt6+7TEjpXgB0U16ndL1npXauxHRZvxprz85YO+16Afob/0mSJElqRx/6MfrQhwH2Y8TYh2Efhn0Y3WvqObSBlM6XvHl4Lj7lumecE6j/Zb1ZXVJzeltG1t1TIb31kXVbVUjPe9flLbCx/oBQdkzyPuAVhLZA1kOBZzN5AI5sOV1nfQ5pl9HL5RhX4kuC/bFr7vN64MYuMlJQrKHwd8QDrZj8y5H3AB+ccdudGJ16uc5GaFmDB1BXAMdk1semW+36wVOAlzB8EwPgixR/c3tdZN0Pmf1cmGQNo5XGSYRpiKtaQWiU311DWvnr4W7KjVZ+XWRdldnH9mS0jGnrpk2sjPhbwhTEs9g5sq6J63wPRkdquZDZR6BaCTyO0Hh8+NK6LQmjpj2VMFLBxZVzuVE+CId2H3ia5EG5z1WnB4+NkPU+wkglt86w/TrgRxXzkPcdQqByMOGlwecQP1dj7k2oJ38beCZwV435yl9vTZbBXyLMuFRU7KbFvUqkE5NSGbyGtOutWJl3EfHvPkk22EqlDIL6y6EXM3q8vkgYDauo8wmj/wH8T4U8tV23ryHdciDW1ng/9bTtyjqO0c6goran+EirAKdRbuSuWaV4vGdlnLZRXW0ESL/Og7TaCFldxmlgrGas1u9YLVZ230a59lmb1tCvNtUH6K5MSOleQNfldRl1X+9ZqZ0reV3+XsbaxRhrp10vQL/jP0mSJEnN60M/xhrS76QbG/AAACAASURBVMMA+zFi7MOwD8M+jO419RxaHZq8Bw7z8Vx8qnXPJFXu/abmjsi6/O9eRGzb2D5mtQbvXZe1PxvroIuY/i7QHYRBNj4R+be3A//C+O+VPQ6p1OfQfBntMcaXBPsk3ygo2nHclXxBeych4J/V/XOf/53ZR0vIbwvw0wL7btJ6wksjnwd+Z8zfpPDg6Qrg5ZH1nyqRVuxN7zoKxAVC4Jv36ZJpxabs3px6Ggf5h8FPpdyMoLERHGKji8wq1iDq6qbNXcA/F9j+fpF1PymfnbGqHqP1hN/7NMID/dkHz1cB/0qYqaauF8Ly+b2C2cvOMvYnjF71a8COhBu9+ZE4Bh6T+1x1FJXYza7fAv6PMJvfJ6kW0FRx9tLyJ4RZBY8BngbsPcO2TyaMsv+cGvOTL4OaLIPL1BMQvwlQ142BVMrgPtRbddULbQZBXZVDK6jv9wS4hvLXT1abdXvq5UDsxuVnKqRXh98EnlQxjS0IoxUVdSPtviSYwvEuwjgtqKu86EOdB+m0EfK6jNNi+zdWq4exWjuxWuye4M9Ip3M6pm9tqq7LhJTuBXRdXg90eb1npXau5KV0H7Tsvo21izPWbuaeW9/jP0mSJEnN6UM/Rl/6MMB+jFn2ndo9qAH7MCazD2Oj1PswYpp4Dm2SVO6Bw3w8F59q3TMvbomsq/LOT2zb2D5m4b3rasr08XyScMwPzq3fB/gDwguQeTss/TuEFzEvKpDHMlIto5fTMS7ElwT7I/+SYJnKtgv5gva/mb1i2ZMw6kHWvxXY90GRdWcX2L5p64C/AI4GNs39268IwUbXHgXcN7fuJkKAWdTqyLo6AoPDCZVL1l3An5dIa1NGf4v1hJFaqrofoeLLKnMcYXSkLag2ilX+Ol0HnFshvSr7/m/C1POzekDu81U0c3Oirhtb6wg3Qh/PcAC0H/BHhIfO65DPbxNB+O7AHxIepN9nyt9OUmVacIBvAlczOjrZXsCHgXcRRin5AiGg7mI0kHsIswt+h9CQPAx4HmG2otiN4oFnE77D6TXkYTWjdWod58UjGS2Dy9YTEGbGyqvjN0upDO5DvVVHmbcLG6dg/xVwaaUcxaVQDj2SUIZn3USxNmsT2qzbUy8H8sfiDOCGCulpsuVwvI3T6ms79qHOS6mNkNdlnBbbv7FaPYzV2onVdo+s+1mN6Tehb22q71OsTHhg7nPVMiGlewFdltepXO9ZqZ0reSndBwVj7XGMtdOvF2B5xH+SJEmSmtGHfow+9GGA/Riz7ts+jHrYh2Efxqyaeg4tL5XzJW+5Pxefct0zL2Izmm5dIb3YS3dlXxL03nU1ZV5g2wC8FvhW5N/eCHyc0RkZDyG80AnNzfTahzK678dYc+DvCSfPYFnbaW5msylhhIRsvk8osP1Tc9suAg8tsP1HctteVmDbNqwmvP2c/46D5X8Ibxl36W2M5uuUkmm9KJJWvqFQxgmRdOtcfl5DHgGeFUk7NqrHLH4VSespFfL29VxabY3qtJIw4k7ZMgJCXus4P6c5hdFj/lsV0js1kt4ZFfM4ECt731RT2hB+t7cQbmbWcY1VnUkJ4EhCYDRtXzcSRiw5mjQGStgUeCFwAePz/LGa9vWMSNpNlcFVrsNzI+kdWzGPkFYZ3Id6K1bmHVUwjSdktj21hjxlpVQO1X0N1KXNuj3lcqBqPNKU2DXW1nJSg98r1eNdlHFaPW0E6Eedl1IbIa+rOA2M1fLpGauVdyTdxGp3RfZxYg3pNqlvbaqi5+7Z1PfdBo4kjXsBXZTXKV7vkO65ktVl/WqsPTtj7bTrBVg+8Z8kSZKkZvShH6MPfRhgP0aMfRjDi30Y5R2JfRhlNfUc2kCK58vAPDwXn3LdMy9i7ZS/rZDeGZH0Hl9j3rx3Pbu1bMxX0T6iWDtgXB1yXObf31Uyr+OkXEbD8jjGmiNfYPhk+0K32ZnJwVS7kN+S2/Yuik0znA/mTi6wbdOmPXg6WM5idESGNn0/kqfjSqb1vlw6N7PxDeoqvhfJY53L6TXkEUIFkU33Rsp9/x0jeVwEDqyQt6tyaX2kQlpFPITR71GkjNiM0aC5qcbclbn9bCA+gsWs8i9+D66JOsSO69E1pX0vwjWRT/8K4O2Emye7Mr6s/oPItpNm0itif+C0SPrjlssJs/rlR3PrwhbAPxLPZ10j/byD0fOtqTK4bD2xgtEbuYvAo6tnM6kyuA/1Vr7MW6T4CzF7EqaGfwxwQA15GkitHKrzGqhTm3V7yuVA1XikKQ8l1M1Fl+z3uKFkGrFR5eqS6vEuwjitvjYC9KPOS6mNkNdVnAbGavnvbqxWTRex2vpIum+ukF4b+tamekKB7TcnjPjZRJmQwr2AtsvrlK/3lM+VgS7rV2Pt2Rlrp10vwPKI/yRJkiQ1pw/9GH3owwD7MWLswxi9JupgH8Zsy7z2YeQ19RwapH2+wHw8F59y3TMvXsTocftshfR+Hkmv7Iu93rsub4EwG90gX0X7iB5IvA65A9g797efz/z7c8pneUTqZfRyOMaaM99h+GT7ULfZmclLqHYh50ebOavAtrFg7vgC2zdpFfALRo/N+wgjjuTX/4BuHkBdYPRt+kWKv1U98B+5dNZWzyILxBsIR9SQdt2+xXAe/71kOo9l9PveQvnAc89Iei8rmVZRx0b2XaSMODSyfROjjOwR2c8FFdN8fyTNDdQTLFc9ruNsBvxnJO2PMPtU5v+Q2/byGvKV9/ClPN3AaF5jy1mE37hrC4wG8YvAhTWln7+htbaGNMeVwWWDtAMjad0D7FQ5p+mUwX2ot2JlXl3nYVWplUN1XwN1abNuT70cqBqPpCb7Pa7qOC8xfT/eqzBOq6uNAP2o8yCdNkJel3EaGKvl0zRWq0ebsdrtkfT+vELem9bHNtUuBbZ/aGT7usuEru4FtF1ep369p36udFm/GmvPzlg7/XoB+h//SZIkSWpOH/ox+tKHAfZjxNiHMbzYh1EP+zCKaeI5NOjH+TIPz8WnWvdM8xrCsx1dLC+u+bscxuix+06F9PLlzp3AJiXS8d51NQewMU9l+4jys4kOln/K/d2FmX/bt+S+8vpQRvf9GGsOnc/wifa2brMzkw9R7ULOjzbz4QLbxoK5FN4EX0X8wdP3Lv37Jox/ALWOlySK2CuSj0Vg9xJprSQ07rLpvKeGPO4+Jo+pVOhZ1xP/zYt6G6Pf92sV8hWbvvzQCukV8cHcfouWEb/PaN6beNnrKZH9fK5iml+MpHl1xTQHqh7XcfIjxCwSZr8r4ke57Zuc4XVz4BjgS4wGx/nlPIqNyNOU7PTT2fK/Dtfl0m2yDC57Hf5hJK0zqmcTSKcM7kO9FSvzPt9pjjZKrRyq+xqoS5t1e+rlQNV4JDXZ75LiS4J9Pt6rME6rs40A/ajzIJ02Ql6XcRoYq+XTNFarVxux2kWRtF5bNeMN6lub6tKC2788kp+m2sxt3wtou7xO/XpP/Vzpsn411p6dsXb69QL0O/6TJEmS1Kw+9GP0pQ8D7MeIsQ9jeLEPo172YcymiefQoB/nyzw8F59q3TPNKZH9tbWcVPN32ZrwEnh2H5eUTGtXRvN7Tsm0vHddzfPYmK+yfUT3AW5l9LjdQ5gVGMLseYPzp+xMoDF9KKP7foxrs6LrDGhmO+c+39hJLorJB35FXnTYg1Axld0+FnT+sMD2TVhFGDHjvrn17wX+dOn/7yFME/zp3N8cQhidoc0HUPeJrLudMCVsUYcB2+TW1fHiS/5YQiiYU3to+n6MzjLys5JpxUZcOK1kWjB6rdwN/G+F9Krsu+g5kd/+appp0MXKk6rnb2yq7rpGD696XGP2AF6VW3dtZN0kWxCmYs6q6wW4mLuAfwGeTmi0vZLxI3I9EHh+wfTvAxy9tJSdej3vysi6i2tIdzWj9UdTZfAdlL8Ofyuy7l9LppWVUhnch3orVuYVGbWqKSmWQ7Hf8za6v7nQZt2eejnQRJ2o8fp6vFdhnJZV1+/WhzovpTZCXpdxWmz/xmr1MFYLmo7VIP6bdf1yySTLvU3VVpkA7ZxfWW2W13243lM/V1K6DwrG2uMYa6dfL0B/4z9JkiRJzetDP0Yf+jDAfoxZ953aPahx+wH7MKD7e0/T2IcxXVPPofXlfFnuz8WnXPfMk9sYLSv2YvbZ2rIeEFn3oxLpgPeuq8rmrWy+rgLeFVm/Anjn0v8fwsaX1n5IeJGtqj6W0X07xrXyJcF+WCC8cZqV+kuCK4EH5dZVbcxU2f4K4i9ftOW+wOnEHzx9TW7dPcDvMvoA6sGEaZvbegB1q8i6m0um9djIujoegtg8si7FayN2PpcZ1WEVYWr7rLupNup0Pm/nLaXZtKplBISbgVW2n1XdN23uTZgmO+9bFdIcqOO4xryY0EDL+gjhJumsHkzIX1ZbDfAbgL8jBDx/BqyP/M0RBdN8IWFkm68Bj6+Uu43uFVn3nzWk29SDaLEy+KaSaW0LPDG3bgOjU3SXkVIZ3Id6q4kb1XVIsRxK9fdss25PuRxoqk5UXF+Pt3HaqLoeVk+1jMxKqY2Q11WcBsZqxmpBn2M1gO9G1sUeTqrqOEInwWA5j3Kdc8u9TdVVZ1xT51dWm+V16td7H86VLutXY+3ZpdqONNbeqK/xnyRJkqR29KEfI9XYM89+jFH2YYyyD6M59mHENfUcWh/Ol3l4Lj7lumfe5GddXCCc40UdPEPas/LedTV1vMAG8G7i1/5jgd9muK1T1/fvQxkN/T7GtcofaKVpB2CT3LoUA9OsAxmtDIo0BKuONpPSm+D3JcxMsSq3/j2E4CFmA+EBVBgebeQhhAdQH0OYsrtJ6yLr7iyZ1gtzn29h/AgrRcQql7J5hDD6SzaYPot6rrVYw7lMPl/I6JS0XySMaFRWV9fKAxltMBQpIzZj9MZHmzdtqozA8kTiUwufWiHNgQMZPa51HJfYtPSnFEzjoZF1bZfN6wll7zbAm3P/lh99bprseVHlGsw6JLLuGzWkmz+HmyyDbyuZ1jHAlrl1J1PPiGcplcF9qLdSnI0Z0iyH6rwG6tRm3Z5yOVA1HlExfTzexmnNxWnQ3zpv3uM0MFYzVgv6HKtBOAYn5NbFHp6oYnfgeIY71I+nXFuob22qIudHm2XCOHWfX1ltltepX+99OFe6rF+NtWdnrJ12vQD9jP8kSZIktacP/Rh96MMA+zFi7MMYZR9G8+a9DyOvqefQ+nC+zMNz8SnXPdO8AXh/g+lPclkDaf4L8Ke5dY8Cvlcwnd/Ifb6D8s+keu+6vAWGX9is0ia4jVCmfzTybycyXCbXVU70oYzu+zHWHLofYRrK7BKbhjclxzKa5/sU2P6U3LZFg7m7ctu/qcD2dbovcDGjxyI2DWnMCuCTke1/RHzGqTo9PLLfMm/8Py6Sztp6ssiqSNrXVEjvy5l0fkl81IMyvsVoPn+7YBpbE75bNo0NjI5uVMQekXz9foX0iqhaRhwa2f6pNecR4seo6ktLZ0TSPJf4jZyiYsd1t4ppLhACvXy6sdHfJjk5t33ZKcYHXgN8gjDTT1EPZvT7FA0QL8hs++ISecjblNFrvOy07nmn5dJdW1O6qxk9jmXK4AXCNZAv3/KjCZWVUhm8KpKXlOqtJsq8OqRaDsWugStKpnUCcO3ScilhFMAy2q7bUy4HqrY1UpT9Lld1nJe8vh3v+2Kc1mScBunXeZBWGyGryzgNjNXyaRqrFdd1rDbwo0hadcUYK4B/y6X9/aX1ZfStTbVrge0Pi2xfpUxI5fyCdsvrVK/3rNTOlbwu61dj7WKMtdOuF6B/8Z8kSZKkdvWhH2NVJO3U+jDAfowY+zCGF/swikvlHnOf+jDymngOLdXzJW8enotPte6ZRysI53D2OH6nYBqbE2Z0zqbxLxXy5L3r8g6gvjYBhPMjfwwHy/rM/+9Xw776Ukb3+RhrTj2M0ZMr9rZ+Sj5ItQv5ytz2Hy6w7SGMHq8nF9x/HfYGfh7Jy6wPng6MewD1HMp3as9iK8LoTvn9FtnnCsKb2Pk03lNjPn8ZSX+7Eun8JqGRMUjjJXVlELie0Tz+YcE03hxJ4yMV8/X4SJoPG/O39wOOXloeW3G/UL2M+H1G875XDfnKe0pkP1WmPH9GJL3FpfV1qHpcY3ZmNL93FUxjT8LIN9k0Tq6Yr8G1f16JbR/J6HcqctNve4bLi7eWyEPeKyJ5quu8uC6Xbp1l8GWM5rto4//ZkTQ+UGMeUyuDU6636i7z6pJqOQSj18B6wku/RexM6BgbpPE3FfLTRd2eajnQRJ3Ytez3Se0lwT4db+O0duI0SLvOg/TaCANdxmlgrNZUm9xYbTZVY7Ws2G/6oZJp5b01l+41VD/P+9KmKjoS6ssieapyrFI5v6Dd8jrV6z0rtXMlr8v61Vi7OGPtdOsF6Ff8J0mSJKl9fenHSL0PA+zHiLEPY3ixD6O4VO4x960PI6uJ59BSPV/y5uG5+FTrnnn1aoaP4wbCi3qzit0jHldnz8p71+U8j3raBFmxNll2uZF6BhPoSxnd52OsORU7we7XaY6my49c8tUC2+7O6PctMtrMSyPb715g+zqMe/D0nSXT6+oB1B9E9vmiAtufENl+kVAQ1+UfIuk/p2AaOxLeGh9sfzr1FdqxmUAXga8XSONhjN5AuxrYqWLeXhnJ17Zj/vZTmb85teJ+oVoZASFAym7/qxryFBM7h48rmda+hHzm0zuN+s63qsc1Znvi5/AuBdL4TGT74yvkKdvoLDNV+/G5vFxHsUDlt3Lbn0e133A/RgPsMyqmORAbvaXOMvjjkfSfUmD7+zB6XVxAGFGoDimWwSnXW3WWeXVKsRwaiF0DjymYxqcz215JtVnIuqjbUy0HmqgTu5b9Pqm9JNiX422cFrQRp0HadV6KbYSBLuM0MFbLLsZqxXUdq2UtEMqMbHp3AweVTG/gz3Np3gU8umKa0J82VdHOmo/ktq9SJqR0fkG75XWK13teSudKTJf1q7F2cbEy0Vg7jXoB+hP/SZIkSepOH/oxUu7DAPsxxrEPY+NiH0ZxKd1j7lsfxkBTz6GleL7ELPfn4lOue+bV5sAvGD6efz/jtguMtsmqzCI44L3rct5D9TZBTH7m2Ozy7Zr20Zcyus/HWHPq+YyeVClXmCuBOxjO75sKbH80o9+3yMyJJ+W2vbLAtnUYN73oiTWk+0+RdE+vmO4kfxDZ3/8Rpq6e5qUMj5SUXQ6oMY8PZHja1kXC9OibzLj9toQpmAfb/orw8HBdnsXo979rKc8PnWH7AwkPgWe3vwM4vIa8vSmX7i1j/m5bhqecfn7F/VYtIyBMtZ7d/hsV8zROfor3RcoFzoczOvX3IqEBX+UBlaw6jus4sRFiXj3jtq+NbLsIPKlCfvIvzz+gwLa7MDqd/Z8W3P+fMfp9XlUwjYEDGX1Z4VrgviXTy4uNPFVnGXwQcE8u/Vmvx22B/8pteyXhBmddUiyDU6636irzmpBaOTQQuwa+WGD712S220BoB1fRRd2eYjnQZJ3Ypez3Seklwb4cb+O0oK04DdKu81JsIwx0UZYPGKttXH6BsVoZXcdqeXszOqLtRZQbMXdrRsv7O4AnVMzjwHJtU+U7H6uUCamdX22X16ld71mpnSsxXdavxtrFGWunWS9Af+I/SZIkSd3qQz9Gyn0YYD9GjH0YG5dfYB9GGandY+5TH8ZAk8+hpXa+5M3Dc/Ep1z3z7LkMH9N1zPZ7vILR3+L+NeTHe9flrKVam2CcBzP6ewyWd9W4n9TLaOj/MdYcio2+MmtA2oUHM5rfIp2w+UDyLma7STDwP7ntTymwbV0eRQiAB3l4R03p5h9A/RXwoJrSjtmS0UbbIvAlxr+1vzMbR925HvhabtubqX9q1fwUwYvA+wnHa5KDgf/NbHMTYVruOp3I6Pf/26X/vwQ4bMx2C4QbXzfktl9PmGq5Dq/PpX078WOWfbv+IkJjqoqqZcRmhHIhu/3bKuZpnPwU74uEkcBmsZIw49ynid/APAdYVWNeqx7XSf4xkvZNwCMmbLMV8HeR7QbLfSrk5w25tL7L+FHJsvYi/tBZ0Tr1s4x+n3sI9deWM6axPWHksNty6VxPqEPq8te59Jsog/Oj/S8y/aXJfYEzc9v8inAjvk6plsGp1ltVyrympVYOZcWugZdO2WZzRs/PqjeQobu6PbVyoMk6sUvZ75PSS4J9Ot7GaRvbG23EaZBunZdqGwG6K8vBWG2wGKuV13WsFnM4cGsu7SuBZzJbubclYSTX/IMYVwJH1JC/rOXWpqq7TEjt/Gq7vE7tes9K7VyJ6bJ+NdYux1g7vXoB+hX/SZIkSepOX/oxUu3DAPsxYvpwD2rAPowgtXtPqd1jhn71YUCzz6Gldr7kzcNz8SnXPfMuf31cxuQXdJ/EaJ1XZObKabx3XcwCoTwr2iaY1ccZ/e6LFJ8le5LUy+jlcIxr1cQDYKrfm4A3Zz7fAmzXTVaingw8PfN5b0KgkvUVwsUHYVrsbGXz+wyPFPAbhGmLB24l3CQY+B+Gp8v9IMPTdj+X4cbT+YSKZeCr1DNl7jSHE4KBDxGm8a7LCuATwGMJbzr/X41pxxxFmCo1H9RcC3yOcHxvA3YFHgk8jvB73Aj8NvBOhgOOGxiewncDoYF4T4U8bk5o9D4mt/77hEbqt9k4kssuhErp+cAxme/186XP51TIR8y3GH4j/TuESuF8YAfC9z6NMNPI1cA2wP7A7zA6KswtS9ueWlPenkq4NrPeALyPMKLC3oSHKAZv+y8SjnHR6XGrlhH3Bt6d+bxNLj0IQfuFmc/vBs4rmM/XE479wCbAC3J/czfhBbFxVhLK590II6NsEfmbdcA/EGaju61gHrNeQxiVY2DacQX4G+DsEvtaTZh5Z5vc+nWEB+K/ShilagPhvD0S+D3Cb/czQnmRLefvAT6V+Xw18LoC+fky8LTcuosJ3+80wvTj65bW3xt4yNLfv5jh+uJUwjU1blSzcX4G7Dfm364jjGx+BuGcvIlw3mxDuKl9IOEFhccRyq6snxKuy58WzM/A9oRjkHUEwzcH82Vw/norY0vCsTwyt/7zhPr6bEJdvh0hGHs28BKGv/9/As8jBLB1SrUMTqHeqlLm/TdhhKo2pVYOZY27Bj5N6Mj6EeH82ZQwItNvE0Zr2mfp79YTyvQPlNx/Vlt1e17X5UDRtsbAO2m+LV2nxcz/X029N0uK6PvxNk5rL06DNOq8mFTbCNBuWW6sNsxYrf+x2jiHAScDu+fW/4xwz/FMQufm7Uv52InQIfUIQudR/iGBUwjH8Zqa8jfQtzZV22VCaudX223vlK731M+VmLZ+L2NtY21YPrE29D/+kyRJktSdPvRjpNqHAfZjQH/uQdmHMV5q955Su8c8kGofRtvPoaV2vszjc/Ep1z3zbiXhmdSnZtbdQhgY+zOEa2MFoXx/OeH8y77A/ybgLTXmx3vX48XKzi3Y+MJsrE3wY6rNSLcHoRzcKrd+f0LdVoeUyujleow1hz7A8Funv+w2OyNiMypNWn6Q2/7sgtufkNl2j4LbLhIaS23Zu6F0VwB7NpR2zIsYnYZ32m+8H6NvZseWsi/D5G1FeEBg3H7WLy359esIDwjvUFM+8vJT7L5naf1jCYHbrMf0uxSb4n4WmxFGasrvawOjo0isB44tuZ+qZcSTCm6/yGjQMYvrSuynyHIlIXhbXSJvMZeWyMO4F9tm8QSGZ96ZtmwgBCDbER7amfS3JxfMy8sJNz8mpXkH8Wt+kXCD4jWUHyzhgYQG4xVT8jDrci3wxxQbHSjm0SX2nb/eytqGEOSN28/dY9ZfS2jcNzVDcsplcNf1VpUy7y8r7ruslMqhvGnXQL5eHSw/Bn6z4r6z2qrbY7osB4q2NQbLbhX22YVs3rucSXA5HG/jtPbiNOi+zotJuY3QZllurBYWY7XxS99itUl2IoxwOG7fsyzfY/SBobr1qU3VdpmQ2vnVRds7les99XMlpq3fy1i7/HkVY6zd/T235RD/SZIkSerOi0i/HyPFPgywHwP6cw/KPozJUrr3lNo95qwU+zC6eA4tpfNlHp+LT7nuUbjX+9fEy4m7x6y/CfjdhvLjveu4MmVn/oW3Mt6WS/NG6q+vUimjl/Mx1pz5FMMnVd0jz1T1M4pdaB/ObLs54yuCccuTM9s/peC2i1QLWubZgYQ3/ycFIj8kjJwyGIFg/wl/O1g+XXM+j1zK551T9nsp4SWf/aOp1ON+kf1mG+MHAf9KqAhjebwH+A/C9PFNWU0Y8WNSJX0a46cKn0WVMgLg+ILbX10ij/sU3Me45XbCFNg/B/4L+Bjh5sAjqLcxsEuJvNXRIDmA0LCfVA7cDPwzYTQlCOX8uil5K/MQ1CaE0ZD+gfCixCzH4EzCiFp13aTdhDDKz5sII5vcNmM+FgmjNf0zYTSTLWvKz3EF9j/ueqvqMYRybdxDWouE8+cMwm+RH1mkTn0og6GbeqtqmfeEGvJQVkrlUMws18AGwrn1IsJIT3Vro26fpItyoGhbYxG4vIb9ti2b/y5fEpyX490XfYnTIJ1YrQ9thLbKcmM1Y7XlGqtNcgDwXqY/CDC41n4CnAgc2kLesvrQpuqiTEjt/Oqi7Z3C9d6HcyWm6d/LWLvaeTWJsXZ399yM/yRJkiRV1Zd+jCNJow8D7McY6MM9KPswZpPSvafU7jHnpdSH0dVzaKmcL/P2XHwf6h4FDyK8IDdpIIbrgPczOkNpE7x3PaxM2fnCGva7LcP1WtEZnGeVQhm93I9xLXx7sR++ATw+8/k/CNM2S124D/BIwmgVOxCmBP4FYbrrlDp/tyZMTbs7IcDdhDAqwpWEUTouaSEPzyJUhlkHEBonWbsTjul9CS8LXUeYoez7VJ/2fVb7Ag8HdiWMknUL4RidQThmUta2wK8TbvrtSAg4riHcrDqT0ABs256EYHRPwsgT7G4ToQAAIABJREFUWxJe2rsJuJDwgn1+6vC6LRBmJjqAcF1vu7QsEq6pmwmNxP9l+V9X2xLK4N2AnQnH4BrC9z+TMLpW0/pUBkMa9VafpFgOZeWvgRWEm+cXAWct/X/Tuq7bUygHpHnSlzgNuq/z+tRG6LosV/+k2EZKIVYbZ9VS3u5LOHYLhLjtJuDipbzd0lHeBmxTTZbK+dVFeZ3i9d4X1q/jpX5eGWtbL0iSJEnqr770Y3TdhwH2Y2j5SvHeUyr3mGNWkX4fRpNSPF+Wsz7VPQq2IrxMfgDhGtlA+A3OI9wvv6fl/HjvunuPJZSbEM6BUxrc17yW0W0eY82BMxh+m7XotMeSunEiw9fuTfhytiS1xTJYkiTF2EaQJEmSJEmSJEmpsh9DktQ26x5JWkZWTP8TJWCn3Oc2RkOVVF1+GvezCQ1oSVLzLIMlSVKMbQRJkiRJkiRJkpQq+zEkSW2z7pGkZcSXBPthx9znWzvJhaSiDsl9PquTXEjSfLIMliRJMbYRJEmSJEmSJElSquzHkCS1zbpHkpYRXxLsh+1yn2/pJBeSirgfoy/4/qCLjEjSHLIMliRJMbYRJEmSJEmSJElSquzHkCS1zbpHkpYZXxJM35bAprl1ziQopS8//TbYcJaktlgGS5KkGNsIkiRJkiRJkiQpVfZjSJLaZt0jScuMLwmmLz+LIDiToNQH+YbzzcAFXWREkuaQZbAkSYqxjSBJkiRJkiRJklJlP4YkqW3WPZK0zPiSYPq2j6xzJkEpffmG8w+BxS4yIklzyDJYkiTF2EaQJEmSJEmSJEmpsh9DktQ26x5JWmZWdp0BTeVMglL6DgZek1v3iNznvYBPZT7/FHhrk5mSpDlhGSxJkmJsI0iSJEmSJEmSpFTZjyFJapt1jyRJCTiK8EZ+dnlCpzmSlPc6Rq/TacuHO8mpJC0/lsGSJCnGNoIkSZIkSZIkSUqV/RiSpLZZ90jSHFjRdQY01faRdbe2ngtJk+Sn257FWbXnQpLmk2WwJEmKsY0gSZIkSZIkSZJSZT+GJKlt1j2SJCXgRYy+lf+QTnMkSZIkSZIkSZIkSZIkSZIkSZIkSUqCMwmmb7vIOmcSlCRJkiRJkiRJkiRJkiRJkiRJkiT5kmAPbB9Zd0vruZAkSZIkSZIkSZIkSZIkSZIkSZIkJceXBNPnTIKSJEmSJEmSJEmSJEmSJEmSJEmSpChfEkxf/iXBDcDtXWREkiRJkiRJkiRJkiRJkiRJkiRJkpQWXxJMX/4lwduAxS4yIkmSJEmSJEmSJEmSJEmSJEmSJElKiy8Jpm/b3Oc7OsmFJEmSJEmSJEmSJEmSJEmSJEmSJCk5viSYvq1zn31JUJIkSZIkSZIkSZIkSZIkSZIkSZIE+JJgH2yV++xLgpIkSZIkSZIkSZIkSZIkSZIkSZIkwJcE+8CZBCVJkiRJkiRJkiRJkiRJkiRJkiRJUb4kmL78TIJ3dpILSZIkSZIkSZIkSZIkSZIkSZIkSVJyfEkwffmXBJ1JUJIkSZIkSZIkSZIkSZIkSZIkSZIE+JJgH/iSoCRJkiRJkiRJkiRJkiRJkiRJkiQpypcE0+dLgpIkSZIkSZIkSZIkSZIkSZIkSZKkKF8STNvKpSXLlwQlSZIkSZIkSZIkSZIkSZIkSZIkScDoC2hKy9aRdb4kqGk2Bf4A+AJwBfBU4Frgu11mSsvKXwO7Tfj3m4BXt5QXpeOZwJOm/M07gJ+0kBdpufsbYPsJ/245LEnSfDJWU55xmiRJktQcYzDFGIdJ3bMfTU15E7DljH/7MeDCBvMyb2x3Kc82l9Q921ySJCVqoesMaKLdgctz6/4G+OMO8jIvDgGOBC4AvtZtVkp7GXAS8N/ArwP/D/gO4QaUVNVmwK2El1HHOR04qp3sKCEnA0+Z8je7Ar9qIS/L2fbA7xAGEvgScFW32ZlbmwAHAA8AdiT8LpsDtwA3A5cBP13672LN+94RuH7K31gOS5I0f4zVFGOc1g7jtLRtDjwQ2IfwMNnWhH6RG4EbCPffzyHEcpIkSbMyBtM4xmHtMA5LV9cxmP1oatKNTH4ZIuuxwLcazMs8sd2lGNtc7bDNlS7bXFJ/bAU8DLg/sBOwHrgGOA/4IXBPd1mTJHVhX8KD5dnlHZ3maHl7KaGyHRzrT3WbndK+yMbvcCLwC+CYLjOkZeVQRsul/PLOznKnLl3K5PPi0u6yNuQ6pp/Dsyx3E4K1Cwg3H99IeGmsSQ8GrmT4mG7T8D610Q7AsYTOnDuY7Ty5DVgLvB14IiHor+rRM+zXclhQX3lXZMkPcCJJao+xmmL6EqdBf2M147Q0rQZeB/wXcCfTz5sNhNH9PwM8jxD/SdI4xtuSwBhM4/UlDutrDAbGYSlKKQazH01NupHZy8fHdJTH5ch2l2Jsc9nmmke2uaR+OQj4NHA746+Ta4H3MnnGZEnSMvMgRiuEN3Wao+VrJWH2n/zxPrzLTJX0E8LLgVez8Xvs12mOtJztz+h18+xOc6RUnMnwefHlbrMDhNGT6rj5Nmk5FdizgbyvINy4ye/v6Q3sS8O2BN5AGF2r6vlxB/B14Lk15i92XlsOq43yLrZ8tY0vJ0maibGaYlKM06C/sZpxWnoeCXyN4YHgyizrgH8Hnk8YkVmSBoy3JY1jDKZxUozD+hqDgXFYavoQg9mPpjr5kmAabHcpxjZXvWxzpcU2l9QvK4C3Eq652HUYu5ZvJFybklSLlV1nQBPFZpu5o/VczIediI90cl/gey3npaqdgA8Spgv/NHAZIWiTmnBoZN0PWs+FYtYAqzKfLwE+3tK+VxJedM9K4bzYjlAuZj0O2Dm37hvA9ZHtVwDbArsCBxJeHst7AnA28CjCS9t1OQi4X2T9dTXuQ6MeQHgIK3/sz19afzahnr0Z2JRwfuwLHAY8E7hXbrstCDMK3gp8tqY8Wg4rZtbyrm6ee81bQ3f1u6R+sY2QrjV0U5anGqdBf2M147R07AZ8AHhGbv2NhAdlvgv8lHD+rAe2B+4NHEw4J44EFjLbrQSOWlreD3yCMHjM3Q3lX2lag23vvlhDe7+V8fbytAavd1VnDJauNdhfltfXGAyMw1LRpxjM8llafryu07UG731n2eZSVba5pP5ZCXweOCaz7lbCxD+fBi4mlO8PAl4BvGTp8/bApwj16Nvby64kqQu/xejb4n/caY6Wt/MYPtZ3El4S7JuTgK2X/v+VODqVmvVuRke0WJi4hdpyJcO/zcda3PdDGK2/ntDi/ou4itG87jDDdisJwdz5ke0XCTfhVtSYz9XAhtw+zqh5Hxp2BKOzB55DuFk2i82AE4iP/nNcjfl8B5bDmk2svNuDMFBGleWbmfSObu3bzK8u63dJ/WKslq6uyvI+xWnQj1jNOC0NzyA8BJH9HS4Gfo/ZR0PeD/gK8XNmEbgJy9B5ZNu7P7r+rYy3+6/rc0jLgzFYuuwvm00fYjAwDktB32Iw+9FUJ2cSTIPtrnR573s621yalW0uqZ8+yvC1cDlw/wl//2TCi7rZbY5tOI+SpI49ntGG2R92mqPl7QGEgGkRuAanR5dmsZbhMurbneZGA3swWn+8osX9HxvZ/y4t7n9WseNUdObVbYAfR9JZJLxkVqfjCUHheuBLpHlMl4t9gGsZ/j1PJj4y2zRvYPTceHQ92QTgNCyHNV2svLuoprSvyKS5W01pKq7r+l1Sv6zFNkKKuizL+xKnQb9iNeO07iwAf8Xo7/t3wFYl03xrJL1F4PSqmVXv2Pbuj65/K+Pt/uv6HNLysRZjsBR1fY33JQ7rUwwGxmFd6WsMZj+a6uRLgmlYi9d1irz3PZ1tLs3CNpfUX89i+DpYDzx8hu3+KLfd7cABDeVRkpSApzDaMHtppzmaD9vjKBbSLBYII8pky6h3dZojDcTqj4e2uP8P5vZ9aYv7LiJ2nD5fIp1jIuksAm+rJ5tDNge2aCBdDfsuw7/ljyl/s21T4OpcejvWkMeB67Ac1nR1lXd5u2XSu7yG9DRZ1/W76vOczPLUjvOi5clYLV1dluV9idOgf7GacVr7VgD/yPDveg/wkhrS/hqj58y7a0hX/WLbuz+6/q2Mt/uv63NIy4MxWLq6vsb7Eof1LQYD47C29TkGsx9NdfIlwe7Z7kqX976ns82laWxzSf21GWG2z+x18KEZt11g4wRHg+WLDeRR0hxx+ue0bRZZt671XMyfwc0ESZPtB2yXW/eDLjKiEYfmPq8Dzm1x/4flPqd6XuTzCXBWiXS+M2b9ziXSmuYu4M4G0tVGRwOH59b9BWGUnjLWAd/IfL4IuKFkWnn7ADvl1qV6valbsfKujnMlm67nXvO6rt9Vn89mlg93nBctT8Zq6eqyLO9LnAb9i9WM09p3EvDi3Lo/Aj5WQ9pvjKwrc/6p32x790fXv5Xxdv91fQ5peTAGS1fX13hf4rC+xWBgHNa2vsZg9qNJy4/trnR573s621yaxjaX1F8vA1ZlPhd5WXYReGdu3dNxIDNJFfiSYNo2j6zzJUHNYjvgSODAjvOxXLwKuHcD6a4Gjm0g3bbkb/CAAV4q8jeWfky4cdOGlcCDcutSPS/qOodvGbPedlY/vTL3+VrglIppXpT5/zqvB8thzaqpcyWbrude87qs36VUGavF2UZIV1dleZ/iNDBW02R/Abw0t+6TzD4i6zTnEEZszUr5elEzbHv3R9e/lfF2/3V9Dml5MAZLl/1lszEG0yR9jsEsn6Xlx+s6Xd77ns42lyaxzSVNdziwSdeZiFgAXpdb913g5wXS+DJwa27dn1fJlCQpXS9mdIrnZ3aaI/XFYHr673adkWXgRMKxPJd6Hz5dDVyylPaf1Jhum97DcPl0I6HBq+5dxfBv89EW9/0QRuuuJ7a4/yLyx2kR2KFEOntF0lkE/rKebKpFWxNGQcv+jl+sId3XZ9I7rob0Bt6B5bBmEyvvdqwh3cOBFywtq2tIT5N1Wb+rXtnf8aqO89JnxmrjGaulq6uyvE9xGhirabwjgPUM/57nA1vVvJ+/zaR/E5ah88i2d390/VsZb/df1+eQlgdjsHTZXzYbYzCN0/cYzH401e1G4uVcbHlMR3lc7mx3pct739PZ5tI4trmk6TYjvHx+KfBmYO9OczPscEbL5DIv+H05l8bt1F8OSJIS8DJGK46ndZoj9cUfE86XK7vOSM+9k+Hrr66HT7MPnQ6W19aQbtvWMvwdvt1pbjSwB6N1x8tb3P+xkf3v2uL+ZxU7TheWTOtxkbQWgWdVz6Za9lhGf8f31pDuo4A3Li3715DewGlYDmu6WHl30cQtlKKu63fVK/s7+pJgOcZqk63FNkKKuizL+xKngbGaxtua0TJ6EXhyA/t6dSb90xtIX2mz7d0fXf9Wxtv91/U5pOVjLcZgKer6Gu9LHGYMpnGWQwxmP5rq5kuC3VuL13WKvPc9nW0ujWObS5rNoQyfZ/cAXye8U7Gyw3wBvJvRa/jXS6Tzp5F0nl5THiXNma4LRk22WWTdutZz0YztgSOBfQnf81rgR4RppjfMsP1+wCOB3QnH5FfAfwMXNJDXum0J/Abwa8C2hJtIlwP/RTgOddhn6b/3IYwkcHtN6c5iM8LICAcB2wE3Az8Gvg/cMcP2uxIaSKuBTYFrgPOAMwmNnrasIBy/rIMIQcxRlP+tVhNuWuVHstitZHp12prw2+1F+B3WAVcAZwE/y/3tAnBwbl2b08RvBTycUAbsysZz5RrCuXJ1i3mZZHtCPvcljP50O+GYnk1z5dWhkXVt/jb5/V/O6O+xAngo8GDCw9x3EMrx7wEXN53BJXUep9gN/g30+6bHNoR66gBgJ0J9dTtwPfALwnU2S5lelwVC+flgQnm5HaFOuIFws+xswjlU1X6RdXWMyPOfS0vdDsl9buta35RwDe8N7Ew4X64jXOtnA79sKR+z6KIcjumy3oqVd2c1uL86pFYGZeXP/0F790ZCe+k84LYG9tt1/Z7VlzJgP8Jx2wPYAriV8DtdQnhw9zLajS+WuzaPt7FaurFaX+I0mL9YrS9xGhirTZNSO6mtOG3geEbL6O8BX6txHwM3Zv6/qbZzH9pUXZcLbZ9jA6m0vVO63qfp6lzp+rcy3q5XF/F21+dQXh/qhnmJtfsSg0F/4rB5i8Fi+081DjMGmyy1urPNNvJyiMHa7kdL7XyZZrk82zNJKv2EGq8v7a6+tLlg/tpdtrkC21z1ss1VjG2uyWxz1SNfjq4gzBz7RMJkOh8HPka7fZoD+Zd6F4FzSqRz9pi0v1QiLUlSwl7D6Fvhj+00R6NiU7bnl5Myf78d8D5CR17sb39BmEFxxZj9PZzwkP24fZ0LPKGhvFfdfhvC1No3jfnbDcA3ltKt6pRMug8smcYukTzml5Mzf78NcALhgczY315HmIFh3G97MPBVRqdOHyy/BI4p+V3KWgF8MpKXsrNUxGalWCRcE136deArhMb5uN/6BwyXP/tH/uY5DedzE+AFhNFn7pyQ1w2EBvMrlrapw3ET9jdYnpv5+8cB32T8+bwInAE8vqW8TVvqnB3ljFza2XJia+ANhCBw0nF5eI35GeeEyL7LHIdN2fjgQ3b5aoW8FS1/67BAeIH9RDa+sD9p/3cDpxJmyGvSvoQy8vIp+Vkk3FR4L+VG4hl4cyTdnzK+7urSatothxcI9fApwC2RfWeXHwGvot4BSVIuh8fpst7KipV3xxVM4/9j77zDLSmqvf1OgIEhCUgOzgCCV5IIguEimAMgylXAyJgx32vAe9EPMIsKxquICRVUFBUQMSCKGBBECaIoQUByGJghDRPP98fa+57e1bX37lDdXXXO732efuD07Kpau3f1qvWr7lqV9UtNPOSK1Qdl7XsBNhE/rv+v7H2HujuHxja+d+UDyo6Jq2H30pVjyizFn5SnLbK2xLSTYErXW1pt8uhaq3U93sUcI8Tky1PRaRCvVutCp0GccVLbOg3sBawlnvqfVrPeYcwF5vWOdQLWm0pM1bVfaLuPxeKvY7jfY+8rsfxWfaS3w9jXpt6OrQ9BN2NDStqvbVLQYKDnZXVsa/MeT0WHxarBQM/LsrQdI08FDdbGc7RY+st0eLcnlvFHOwmGI4W4S3Pf9Wwbd0y3uW/FXIPEMoa6KOYqj2Ku4feKYq6wY8+xBWxbBfwMeCHmL9tgLvk+eUPFujYh/50uDWCjEEKIyDiSvMPft0uDPJRZKDcP+HuBz09gEwFznLbexOhgInu8O7DtdcvPZ/zDs/6xFAtS6vA3JhdiVt16/LkFbD2q99k9sAyhRb7fV512ZmCLMlYWLP/yit+nKjOBkz12lH35dNhLp8eHNLYkGwPf89g0Koh+S6/sSzz/7tuBKxQHYQt1fHY9yHDxdzmwbYD2vzuk/uyxPZYJ5bQCn81e02NbsG3c8dSaNvSZTX7yIusnrilozxJM3DfJjz3tVrkOb/LUswLLQlaVMv43BK/CsugMa+sBbAJl2L9/kvCL6Ob06vW1uxJ7YWbUuHE51RIrvHdIfUdW/yqN8SLa88MHYFmofNdmKcN/i8uxTFghiNkP++h63Mri83dlJ5Wfkyl7dlDr4vRBWfZndP8fZdsq7EXHPSu0G9P43qUPKDMm7ohlYytybbrcGQLHlpgWCaZ2vaXVBv1NF1othvEu5hghFl+ekk6DeLVa2zoN4ouTutJpAJ/21HcdNq+YCqnEVF36ha76WAz+Opb7Pfa+EsNvlUV6ux5d6O3Y+lBXY0Nq2q8NUtFg0L0OkwYrRko6LFYNBnpeBt3FyFNBgzX9HC2m/jId3u2JZfzRIsH6pBJ3dR1zQTz9vqpt447pNvetmGuSmMbQPoq5qqOYa7gPUsw1eYR6N2sf4BRGL97vH7f32twuQLuj2MPT9q9r1OcmUFhCMwnnhRBCdMgx5AePulmXQ/NvmKDKHu5CvhOA9bHsGf1zy7CsJsOyJEwAX8q083Ln3+7HMiGMyqq53xjbt8ZeKMwe7g6HoxYJFv3uGzAoOldiAcgtwPIhti8FHj3G/mHMwAKFn/fqelvFeg5n8Lv5sursh01s3Z85dy/224zK9nRgr41ZDL7UuQrbiv1mhl+bxViWjTaZBXzLY0vRl0/nYbtkuuW7fOl0lyE2LcS23n478Argv7DAuv8br8L80HHkf5cmBOoawBectpYBX8QWTc/tfW41bOHuceT7zg3Y/V6HjzDoK7L+rN/vt8QW6E5gvuB84GjgNcDrenUMm4B6a0DbXIH4V/K+zj3Wq9F+Ft/i6f2wiZCsf12C+Ym7PZ/P2t0kt3nafFjJOnbHvzPu+2va9lwGf59zPG2MG+PKcIlT92JMJD8eWDPzuQ16tp3usedjAe1ZH/iDU/9vMZ80j8nJmxmYkH8HNna4Nr2uQtu+Bwv94yQsY08sfJTm/fAc4LPkr8Xp2IORDXufm41N8h3FYEwwgcU8OwSwJWY/nCWWcSuLz9+tX7KO7ALaDwS0DeLzQX2G9f8zsYQeGzF5z22Avdj3c8/nq8Z8MYzvMfiAoppkHwZ3bF+JjQ034p88P7GGTSHI2hLTIsEUr7e0WjdaLabxLuYYIQZfDmnpNIhXq7Wt0yCuOKlLnbYWg+NO/3hfpW/SPinFVF36hS77WAz+Opb7Pfa+EsNvlUV6uxpd6u1Y+lDXY0OK2q9JUtBgEI8OkwYrRko6LFYNBnpe1lWMnLoG69P0c7SY+st0eLcnlvFHiwTrkULcFUvMBfH0+yK2ae57PIq5JolpDAXFXHVRzKWYq4t3szbA4oUiG/esAn6J7XC5eqD2sxzmafM7Neq7zlNfk8mohBBCdMCHyTv7KrtQtM1NDNp8ApMv7f0ZC8ZmZz6/JfZdfQ+U9gK2YTJoOgnYNVN2BrYS3/eA8FrKZ4Hw2V63/Ld7/38NttXyWpnPz8WyafzTY/9PSrbdZ7Ne+fdgQdinKtbj8lryNj4XW6j5ACY4s9mQZmFZc6/ylOtnxP3f3t//BBYwKH7XAd6Mf0v1VwT6TmWYxeRvmT3GvXw6j/heOt2D/ALbpZjIXGNImS2BC5gUwuc55X/VgJ3rkBfhf2f8Atqnks8Q89PAtv3Cqf/PwF96/3/uCBtnYC97uP1hOWGC+S09db8+QL1FebWn/f0wH74Me/FhN6fMPGxC1SfS9mrIzi08bV1Tso6X4Z+s+Uw4M/+P13ja2TRQ3XMYvF9+iWXvG8cbHXtWEGbHuNnYPZSt+10Fym2FTYhky+1eof3NGT6pMoFN2JxAvh93gTsxG9oPrw38zmnjTsZnP9uF/L1xNeEnWmL0wzGOWz5/d22Fen6YKf/8QLZBfD6oz9rA78n3/2cWKPsh8tf8pTXt6WJ8j9UH+DTJs7HJ6P69sx+DDwQ2Ih/Htxkf+cjaEtMiQZdUrre0WrtaLcbxLkuMMQJ0q9VS0WmQllZrUqdBXHFS1zptAf6+uF2FutompZhqnF+YjyX1a8IvdN3HsnThr2O6311i6ytZup4Hld6uRkx6u6s+FOPYkIr2a4IUNBjErcOkwfykosNS0mCg52VtxcgL8PfDFDRYliafo8XWX1ymw7s9XY0/WiRYnRTirphjLlDc5UMxl2Kuuijmqo9iLsVcPpoee7I8GVvQ6Lsu7nEntsD/UQHbf5+nnc/VqO9CT33PqmmjEEKIyPgEeWf/mE4tKoa7UK6fzeFMBhcHuryF/Pf9BpPbEh8+ouxs/FlMym7LHnqRYP+7n89kNiEfmwO3OmVXYiKxLE/qlT8Ee+HxzAp1+DjBse9eTLD+k9GB23bkd1hchAWmE8APGD7hA5bxwf1du3ppcxaW5cG1Z9jLp/Pwv3R6XPOmDmVr8n3tQeyB7zg2ZjITzlKnjk8EtnMN8hN8V2JZQIrwcfLXfe+A9g3LLnUCxbb39m3N/sUAdh3oqXePAPUW5fNO230/cQvw2DFlzyRv+2sbsvN5nrZOHfH5NbEJr32BI5kUu9njJszvNoGbqe7mgHU/LlPvRQy+6DGOsx27PhLAnsOdOstk1jksU24Z1V+QOZH87+s7/oZlQmpiIqkICx17QvrhNbDJtWz9dwA7FizvTrhNYJkfQxKbH4513PL5u7rHVgHs6hObD6Jnw3lO3bdTfJfvmcAVTvm6E4xtj+8x+wBXkyzGYo0HgYNHlFuTwYf3bcZHPrLfIeZFgildb2m1drRarONdlthihD5darVUdBqkpdWa1GkQV5zUtU77Efnf9eoK9bRNSjFVGb9wlseuun6h6z6WpQt/HdP97hJbX8nS9Tyo9HZ5YtPbXfShWMeGlLRfSFLQYBC/DpMG85OKDktJg4GelxWlboycqgZzafI5Wmz9xWU6vNvT1fijRYLVSCHuij3mAsVdPhRzNYNirmIo5jIUcynmGkVTY4+P/u6C/V0Oxx3nYwuwR13rInzSU/eHa9TnLsycwDYiEkIIMYX4DHlnX/RBUZe4C+UmsBcf1xlTbib5bYYfwLb7PaVAu74t5D9Z0/a6iwQnsEBp1O4Ffd7pKfvKku0DvLxXdk8sM8cVFerw8UePfQuBRxQo28/slD3ux7JJjAsWN/aU/XZ584MxCxPqrk3uy6fziO+l01nAxR6bymTb/aCn/AS2S2ZIvunU/yDlMuXs4LHx84Fs29ZT9wTwY4rvXrqzp/wS6r/I9H6nzmVYVp228GUyuZdiL2u82FP2Pc2Y6c3gUuW4GzgD87tNbEff5yKn3VCLv2FywmsVsFPJsq937Lqwpi0zgBucOp9conw2Q92fatixFvkMgeOOq4FjsQmqNpjvsSGkH/6GU/cqij2k6bMW5rezddwS0L4Y/XCs41Yof9c/bg9gU5aYfFCfU5x6V1FsR4MsR2bK30f53c1d2h7fY/YBPk2ynGLJYfqapO34yEfW/pgXCaZ2vaXV/L47ZIwQ63jXJ8YYoU+XWi0VnQZpabUmdRrEEyd1rdPWxJ/99csV6mqb1GKq+ygKgxjmAAAgAElEQVTmF17iKVvHL3Tdx1y68Nex3O8+YuorLl3Pg0pvlyc2vd1FH4p1bEhN+4UgFQ0GceswabDhpKLDUtJgoOdlRakTI6eswbI0/Rwtpv7iY6q/29Pl+KNFguVJJe6KOeYCxV3DUMzVDIq5iqGYSzGXYq7xNDX2jGNviu8ueDfwaaqvzfiSp84648kZnvpeVaM+IYQQEeJmGpgg7Da3TeFbKFc0k+XxnrITFBfe1znlflnYaqOJRYJFB/ztPWU/VbJ9sF2NJoCNgK9iCy3rshrwkMe+QwuW972oeR/Ft6J32/5mUcMbYjbwPfLfqf/y6Tzie+kU4G3kbSqTAQfgCZ46JrD+GwpfBqX/LlnHDCzbrfv7hOBgj32LKbYYOMu/PPXsWdO2Hzv1hXg5qiiz8QurBQXLP9lT9ojgVhrudapy3IiNES9n/CL4Ovj879EB698b+E/KTcL3ce+Fa2ra8ljy17loZj6ADTPlTqxpy9rA1zz2FDmuBN7Vq6MpXuhpN5Qf9vngr1So51xPPaF2XYzND8c8boXwd9nj7AA2ZYnJBwE8n/x3/lKFeg7IlD8/gF1tju8x+4BhmuTdBcu/H5sI/lhNO0KQtT/WRYKpXm9ptXZjhFjGuz6xxQhZutJqKek0SEerNa3TIJ44qWudtq+n/Qksu2vMpBhTFU1Wt4+nbB2/0HUfc+nCX8dyv7vE1ldcupwH9bVf95DeLkZIvd12H4p1bEhV+9UlBQ0G8eswaTA/KemwVDQY6HlZWzHyvp62J4hfg7k0+RwN4uovLtPh3Z4uxx8tEixPCnFX7DEXKO7yoZirGRRzFUcxl2IuxVzFaGLsKcoGWB/6q8cG3/F7bByZW6KN73jqKTqv5uP7nvreWqM+IYQQEeJbYR4yiGoK30K5LQuWXeAp++cSbZ/ulP1XibLQzCLB+SXK3+uU/VHJ9gG+jmWVAPh/vXqKBo/D2I389/oTNslRhB96yr+/RPvu9tqfK1G2KYa9fPoX/C+dhtxKvQoPJz8htYJyma/AFp/6gv+ifWEcc7HMt9n676Rc4N3HFRgrA9l4LPlrcGSFen7tqefwmrbd5tQX4uWoovh2c72M4plj9vaUf214MwG41WlnFXDSiOObWJaWC8hnap7onfsUsF4Dtvqu634NtFMFd0L/ppr19TNAZY9dS5RfDbtejwE2qWlLn32A33jsKnLcCbwpkB0uH3XaCuWHfT54Gbagoiwnkb8mbwxgI8Tlh2Mft3z+bkMsjil6HJ0p/4EANoUitA+aS/56LQW2rlBX9qFS2Z3NfbQ1vsfuA3ya5GqazzLXBNnvEOsiwZSvt7RaOzFCTONdn5hiBJeutFpKOg3S0Wox6zQIGyd1rdP+x9P+BMUy8XZFijHV5RT3C74XqOr4ha77mEuXc2tVCK2LssTWV1y6/q2kt4sTq95usw/FPDakrP2qkoIGgzR0mDSYn5R0WCoaDOLWYVPpeVmKGsxHU8/RQtBkDA/T492eLscf30vuw462Xn6PmRTirhRiLlDc5UMxl2IuxVzdo5hLMVcRmhh7qrA35l+L7C64CPhf7P4eh2/nv3fWsNO3gLRs8gIhhGB21waIkfhEy6rWrajPDRQPsnyf+32JttxFgU2IoTLcjO1uWJQbGNwae90KbW6TafO6zLk6L5/u7jn3OSwAKcLGzt8rgc8XLLsB+S20ry5YtklWYNujzwQOypz3bW1+HPUCvxC8hnx/Oo3yWVKWe879meJ9YRwLgM2ccydgExx1mYk92F5Wsx73flhGtUmuhZ5zdXYe25L8pEObmVF9fuKzFB+3NvKca+Je34L8wulrKJ5NbDbwTOAoYK/euTWxyYUDgadSzu+PYw/PubYzow9jF+fvW2rW58t29kksc9/9nn9zWQ5cWtMGl19jkwS7YZnyD8XfV308HBsrnwW8CHv5KRTu/RbKDy8g74O/jy2oKMtiz7kNK9TjIyY/vIB4xy2fv7sW//cexW6Z/4/F/0B4H/RK8tfrNMonHQHbUfTlvf//Yx2jaHd8X0DcPsAXa3yK+rFdHY7AskzWYT3KZ80FOIdqu04UJcbrXRRptUmajBFiGe+yxBQjZOlSq6Wi0yAtrRazToOwcVLXOs3nux+gWozWFgtIL6b6DN35ha77WJau59aqEFoXZYmtr2Tp+reS3i5HjHq77T60gHjHhpS1X1VS0GCQhg6TBvOTig5LSYNB3DpsKj0vS1GD+WjqOVoImozhYXq829Pl+HMzsFXB+kP/timSQty1gPhjLlDc5UMxl2IuxVzdo5hrEMVcfkKPPVX5Te94K/AK4HXAo4d8dj0sKdcbsfHirhH1LvGcc3+fMvjK+toQQoiRhFgkuBrwOCzj40aY814I3A5cQnqBS0xMlUWCfy/x2QcCl+8imMjyt5Kfv8f5u4r92zApzrKLBMsstnRxA76HsImbojzK+ftcii9adMsC/KNE202yAlswcirwgiGfieGl05n4s2+cXKGuNTznQk0GzMAmMVxOqViXbwfNOdSfgHNfBD+b0UJgGL7MY3Wy8/rEZ5cPPZcC3y1RflvPuTL+vyh1r9MK7Dc/B3uhP/vi+TzgZ8DOhFsQ5tp7C83uOLQ9lhnr34D1sUn7OUM++3Tn7xtqtu2buHwKNpZ+kMlsPl1wSe/4L+Dfsd/9+RTLeH4AtsvvoQHtcf1QiHt9mA+uMlaAP4YJFZfF4odjH7dCjQvZepoeV7ryQTMJ91uCZRiteu+4tDW+p+ADfJPQ36pZZ12eTP3smWsAh1Qot4h2FwnGcL3LIK1mNBkjxDLeZYklRnDpUqulotMgLa3Wtk6D7uKkrnWab17wKuJ50cAlxZiqa7/QdR/L0vXcWp8u52ayxNZXsnT9W0lvFydWvd1mH4p9bEhd+5UlBQ0G6egwabBi7cc0hmZJSYOBnpe1FSOnpsGG0cRztFHEEsPD9Hi3p8vxp2iC/FU0P1cUOynEXanEXKC4q0jbirnCoJhLMVcZFHNNophrOKHHnrrcA3y6d/w7tljwRfjjjZsY/53v85yrszbHV9bXhhBCjKSqI5qBvWT1KmAfRj98uAz4KrbKfUXF9qYrvkWCqQWCUC57qi/7T5nyruApuoV8U5QNilxhUTajwBpYhqPre3/3/7tNyXpc3KD2DxQPPLbEsldk+XmJtnf2nLukRPmmWY5tAb8/tmg6yx2YaOyavclvR78Ymygoy3zPuVAC74mYmMuylGrbZa9G/vdYgX8hchm2xURmlirXEfw7hdbJRubep8uBy2vUV7f9PwD3lijvZma5jWYmmkJNUi7HJrWfzaCYfSTwZuyl8xC49jYxobI58CbsRfo648VfatrxUyzJhJtpbivgi8DHsQzb38MmR7rIZr0S213w19gDgz2Al2C7Ffkm/fscgn2HXwWwYT75cTVEv3gCeR9cdawA/27OIX6zmPxw7ONWCH+3MRbLgcU1N9awZxgx+KAnYP47y2LKxaxN0db4noIPcK/FheSTrIhwTIXrLa0WJkaIfbzrE1OM4NKlVktFp0FaWq0NnQZxxEld67TNPeeuCtxGSFKMqS6gnF/Y0fm7rl/ouo9l6dJfx3C/u8TWV7LENg8K0tvDiFVvt9mHYh8bpoL2K0MKGgzS0GHSYMXbj1WHpaTBQM/LoJ0YOTUN5qOp52gusfQXl6n+bk/X40/RRYK3o3ckU4i7Uoi5oPt+PwrNfY9HMVeeWMZQxVz1UMw1iGKu4YQee0LyN+B8bOHl4zz/XqRP+3YeXauGTb71OFokKIQoTZVFggcAHyH/gA8sEJrN4MKsXbEV168BXkr4wXYqM1V2EqwreEMI5q4osvV4Ft8iyTLMxxbx9jOd3IJNYNQJkFcjv/32+SXK+8RunfI3YwItFuZjQbo72QP2oP8c4BnYTh9d8QzPud9Srb+5E2QQTuA903NuDnBYoPpvpL4P9fXn8yrWtZ3n3D8r1gV52/5Ce4uoZpP3E78uWYdbvqmXLENmMrsT+57Pcc4fTJgJOJ//DXldZgNHAe/An7WnLHVtux+b1DkLv1heF3hl71jc+9x3sIm7rh6yXNw73o3ZfhT+exssDg6xSLCpbHzP8pz7LdWvrW+8uL5iXVli8sOxj1sh+kqTuxrE5IN8v2Wd/h+Stsb32H2Ab0wM4VOFn6lyvaXVwvju2Me7PjHFCC5dabWUdBqko9Wa1mkQV5zUtU5zH5RD+Iy/IUkxpjqvZB2h+3/XfSxLF/46pvs9S4x9JUuX86C+9kF6exix6u02+1DMY8NU0X5lSEGDQRo6TBrMT0o6LBUNBnpe5tJkjJyaBvPR9K5WsfWXLNPh3Z6ux5+bC9Zd9HNTmRTirhRiLui+349Cc9/jUcw1SWxjqGKueijmGkQx13BCjz11WRc4ELv/n4H/XYI+RfqNb4H6OhXsGlVWiwSFEI0yB/gstpNd9jgd28Z6w97nZmMZKo7CAqnsZ28HdmjV6rQ5hfz13qpTi4pxE4M2n1Ci7B7kv/P+Jcof4ylfhjq2hyh/llP+0pLl9+uVe37m3D8oF0S67Eb+mu5Xovz7nbJLKbdd9J+c8meUKNs08zGB5l4f97iYfGaNNrnAY9MRFev6pFPPvdjC1BD8nvHXss4R4uH2sU6di6j2/dcfYuNONWy7zanrxBp1leUx5L9LGT+xOuYbsuXfF9jGPrc67azCn325KP9L/ruXyU42Ct91LTMmjmJD7J5w678F+BCwL5Yta5i/fqOn7Kid9MqwPfbSftF7+2ZsV79Ror0t1sB20PbZGSpr00fJ97cQftjng6uOFTOx3ZHd+p5W38yo/HDs45br7yaAh5WsY0vg6b0jpI6LzQeF7P+haWt8j90H1NUkTfE4bGwue2S/xz0V6/BlCAxFrNe7DNJqzcYIMY13fWKKEVy60mop6TRIR6s1qdMgvjipT1c6bYWn7mNq1tkkKcZU7ktFo5iDvejVhF+IYS6gbX8d6/0OcfcV6HYeFKS3yxCr3m6zD8U8NkwF7VeWFDQYpKHDpMH8pKTDUtFgoOdlRe/tEDFyahrMR1PP0SDu/gLT492ersefQ4eUc4+Y3mvqihTirhRiLui+349Cc9/jUcxlxDyGKuaqhmIuxVxFaGLsqcJcbEH1D/DPrbnHJdjOwhsXqPswT/lv17D1n576fAkThBBiJEV3Elwb2yr2iZlzdwEvwQKkLCuAq7GB7HTgN0xuF7sxtghqR5rLGvIWbPfCLjgPODlgfVNlJ0HRHv0dA6/LnLuOekFV3awfdbIGrU7e9iaz1pdhHiZGtnbOfwrYCNsxqs/uwC+wB/73tGFchhmYMHG5uGJ97u/5ZywQrcswO/elfLanJnG/f190lWUPz7n7sUW9VdgSE79Z2rxX6vqJncmL3Sbs34K86L8Wy/hUFV+mu7WxPl333vBd16r3bpbVsRjt353zXwL+i2I7+Lq23YJNAIfgKixTz17Aq4EXMfpFq80x3/tyLNNPl5kZH8Js3hV4rPNvdbIEZWnCDw/zwVXvw0djCyazrCLMQslY/HDs49Ywf1d2t6ybekdIYvNBoft/SNoa31PwAU1nIqzKHwPUsRSbJ4mJWK93UeYhrQbNxgj7Esd4lyWWGMGlS62Wik6DtLRaUzoN4ouTsnSl05YBazrnHqpYV9NMh5hqF/Ivv4TyC13PBbTtr2O+3311Qzx9pet5UOnt4sSqt9vsQ7GPDalrv7KkoMEgHR0mDeYnFR2WkgYDPS9rM0ZOSYMNoyn/HHt/8dUPU+/dnq7Hn6Ix/HTfSTCFuCuVmAu67/fD0Nz3eBRzGbGPoYq5qqGYaxDFXH5Cjz1lmIMlvjsEOAD/jqFZrgROxRb4XVWinb96zm1eoryLO24sxcYOIYQIzhrALxlclXwHttCvCL5V+W8Pb+b/4e7E1uZRdte4cZzqaaPO4NEW2kmwevm6Own2syetmzn3Bewh4ZySdWXLZ20qK2zcrEFfLFF2d/K/ZwxZTOcB15O37fjev8/CFgy7//4n/NvFN8lWHjuq+pLZ2NbV2XqOC2Mmm3tsnCBsFpcQ3I3/Ny/LB8l/1x/VsOtAT30+QdoUn3faLusnXkfe/i1CGtjjeZ52vlOzztM8dd5es84+da/rMNxsPxPY7ndluNQp32Q2xDnYrtXfJ5/NzT2uoFx2paY4Av8YEIKFTr0h/PAwH1z1PnyTp64L65sJxOOHYx+3fP7u1E4tmiQ2HxS6/4ekrfE9BR9QV5PERva7hHwgEYqUr/c8pNXaiBFiGe+yxBIjuHSp1VLRaZCWVmtKp0F8cdIo2tJp13rqe1cdwxskxZjqxpLlD/fY1JRfaHsuoG1/Hfv9HnNf6XoeVHq7OLHq7Tb7UOxjQ8rarwopaDBIR4dJg/lJRYelpMFAz8v6tBEjp6TBhtHEczRIo79Mh3d7uh5/5nnK+Y73VLRrqpBC3JVKzAXd9/thaO57PIq5jBTG0CyKuYqhmEsxVxFCjz3jmI0tDDwJS+o2Lma7Btudcpcaba6FvZ+frfeGinVt4rHxshq2CSGmMb6d6lxOBJ6S+XsCeAX+1c8+vo5tz5rlnQXLTne0k6AoyzZYgJbdRv46LFvM/Ip1+rJCFGUL6mUN8k0e/LlE+SaYh+0a+gjn/PFMLoBeiW0jfYrzmcdiu1S0+fLpNp5zD2IZUsqyB5Z9KEuoRS/u9QTLGhLTS9PbYlugZymTNSTL0zzn3J15y+DeK8uwLDNtUcdP+MrfTjMvJDSRGdm3nfs1NevsU/e6+tgCeKtz7i7PuVGsQT5ZRJMZ4ZYCPwD+A5uUfwu2a7WPHRncHagIm2IJCfbH/3tW4VbPuesC1Duf/BgS4tr7fPASqt+HT/Gc+1nFurLE5IdjH7ea3OGmDjH6IN9v+QBxvBjX1viegg9oYkwUw0n1es9DWi1LUzFCTONdn5hiBJcutVoqOs3XFsSr1ZrykTHGSaNoWqf18f1mXS8uGcZ0iKna9Att9bE+bfrrFO73mPtKbPOgIL09jFj1dpt9KPaxIVXtV5UUNBikocOkwYq3H9MYOqodiFeDgZ6X9WkjRk5Jg/lo6jlaKv1lqr/bE8P4czP23uQ4qsQXU4kU4q4UYi6Io98PQ3Pf5dsBxVwQ5xiaRTHXeBRzVa9fMVe9scfHTOCp2GLL24CzsfcB1hvy+RuxRa17AtthyR0ur9H+A+Tv6a0Yv3Ohj0d7zpXdaEgIIYDxiwSfh22LnOVrwE9LtPEAcIFzbjNs224xGi0SFGXZBts1Icv1mX8ry2zyWRLqBqV1yt+Cf+FFWzwC+BX+l07f4ZxbiS2odl8+3Q04l/ZePp3rOXev51wRnuE5F+oFCN9Ol4sC1R0KX3+ukvVjHrCXc24Z9TJOu7ZdQfFt6OtS109Afmv5piZzQk/APRzYyXP+FzXq7BPiuvp4JTYhkuVEbMK7KLti9mVp6wWSe4DPYaL4ncAKz2f2KVnny7EsRT8Cnl3Lukk29Jz7TYB6m3oRzeeDF1esax3guc65VcA3KtaXJSY/HPu41cQDhxDE6INi/i3bGt9j9wFNjYnCT6rXW1otT1MxQiw+MktMMYJLV1otJZ0G6Wi1Jn1kjHFSUZrQaX1+5zlXZY5zHEdgD4/7xxWUf4A7HWKqrhaTNNnH+rTpr2O/32PvK13Og/rahzji5Rj7VayxZJt9KOaxIVXtV4cUNBjEe+9kkQbzk5IOS0WDgZ6XDaOpGDklDeajqedoKfSX6fBuTwzjz3LgzgKf6zoxRtekEHelEHNBHP1+GJr7Ho9irjTG0FEo5vKjmKt6/Yq56o09fWYATwI+g8Vd52K7xPre1wPr/58D9sbeJ3gn8McAdvRxd0ecgfXFsuxWoG4hhCiEOxhmmQuc4JxbDnygQjs3es7tTTPZQ95H3u62qLpF7DC0SFCUZT75RbzXZf6tLDuRnxgpE9DXzRoUUxbTR2C7Usxzzh/H8N1RV2Evn8Jg1pjHYIHp07Gt15tkuefcQxXrcheN38fwTDll8Ym5qnaCZfLJToxcTP0JPZ8AqmLjyzEhkOU0LDNVVbq8V3YkL9DL+InVyU9itTkBVyebznPJ/5ZgGWnqshP56xriuuznOXdWyToe5znXtn9egfnftYFjnH9zMwmOI9sv6tyHWR7rOfeTAPW6fTiUH/b54Acq1nUQsKZz7gya2bUFuvPDsY9bMe7GDHH6oJD9PzRtje+x+4C6mkSUI8XrLa3WnFaLfbzrE1OM4NKVVktJp0E6Wq0pnQZxxkllCanT+pyFzfdn8b0IU4fNgaMYfDniKMrHQynGVGX6R9t+wUcTfaxPm/469vs99r7S9TMD6e3ixKq32+xDMY8NKWq/uqSgwSANHSYN5iclHZaKBgM9LxtH6Bg5JQ3mo6nnaCn0l+nwbk8s489J+Hehy/KPkjZNNVKIu1KIuSCefu9Dc9/jUcyVxhhaBMVcgyjmGkQxl58mxp49gEOBg7Hd+kaxENsV9FQs2XCTay9+ALzdObc38PuS9fy78/cSwrxvKIQQA7wRmHCOb1es69Oeuv5fABunOmeQv27DVrrHxE0M2lxm0eYe5L/z/iXKH+MpX4Y6tocof5ZTvsxWwRv3yhyHLQDuH5tmzpfl1eSv56Ylyrvfp6woX+qUP7pE+ZA8Alts6V6LjxcsPxP4pqf8pTR/T+/labdKptpneuo5L4yJgL3Q69ZfJAPbMH6Yqedf+LOAleUX5G18Vsk61sK+V7aOVeSzVJVhC49dr6tRX1nq+ondPeUPDGwj+K9T3UVLF3rqvBz/pFxZfNd1s5p1zsBEu1uvL5PfKNz4pG4mxHdgD1OOr1B2V/Lf51Ml67g6U/aVFWxwWY38fV5mPB/FOU695wWqdz7561jFB8/A7gHXx7mZoaoSkx+e57EllnGrCX8Xglh9kK//31KxrvcBd/WOG7FsjlVpc3yP3QfUjTViJPtdbuvYFpfUrvcjkFZrUqvN89Qdy3iXJaYYIUuXWi0VnQZpabUmdBrEGSd1rdOyXOqpL5TGmAn83Kn7AvzJ+8aRYky1SYnyvnn7On4hpj7Wpr+O8X53ia2vZOl6HlR6uxwx6u22+1DMY0Nq2i8EKWgwSEOHSYP5SUWHpaTBQM/LihIyRk5Fg/lo4jlarP3FZTq82xPr+CPypBB3zfPUHVvMBfH2e819j0cxV7xjqGKu+ijmUsw1jpBjz87AhzAf6trlHouArwPPYfQmWqGZifW1rC2/LlnHHGzn5WwdPwhooxBCADbg/oO8A/Wt1C/CVzx1HVvfzCnPj8hft/U7tagYWiRYvXydRYKPJ//ds8cPS9oC8HmnjrJB861O+S+WKPtY8t/hgJLth2Br4J8eW4q+dNpn2Munl1HvBfJxzMWydLntlmlzJpbJyK2jysLTUfzL08a6Fep5MiYq+nW8JpB9d3vse1PJOo7x1HFiTbue7alzzyGf3RbzqfsDz6jZbp+6fuJ15O0fl+mlCs/ztFNn+/oXeuqb6J0PQd3r6mMj8vYuLVnHllgWo2wdZ9S0q3/vX1Gh7BPIf6cyE7jrMegvquyY7fIGj02h+sVCp96QftiNYSYoP9l2iKeOzwS0MTY/HOu4FdrfhSJWHwT5/r8CW/Bbho2wB5z9Oj5d06a2x/eYfUATY2LXZL9PbIsEU7re0mrtaLVYx7ssscUIfbrUaqnoNEhLqzXlI2OMk7rUaS6+3/QLNerL8gGn3jup19dTiqluKln+9R676lyrmPpYm/46xvvdJba+kqXreVDp7fLEpre76EOxjg0pab9QpKLBIH4dJg3mJxUdlpIGAz0vK0rIGDklDebSxHO0WPuLy3R4tyfW8UfkSSXuij3mgnj7vea+x6OYK94xVDFXfRRzKeYaxzGeOsqOPU8D/uapxz3uB74DPJ9wi/Sr8DbHrlVYArGi+Ob/ho2tQghRmSeSdzaLqL6y+jRPfSFewp7q+BYJPqxTi4qhRYLVy9dZJPgS8t89e1xW0hbIZ6A5s0TZzT02lMka9FpP+c1LlA/BsJdOP1axvq5ePv2Tp83DSpR/n6f8BNbnQuJbUH5oyTrWZzBryK8IkzFpW49tE8CPS9SxJ/mJ0NuBDWra9haPXesM+ezJmc+cXbPdPnX8BJjYzZa/I5BdLr5+fETFurbD7HTrO4cw/Q3qX1cf6+HvxxuXqONbnvJH1bApO8lT9qUzem1nbVlIuZdsnuKUv4J6v+EjyU+WXFizzj6+zOMh/fDXPPU/r0T5TcnfF1dj2aFCEKMfjnXcCunvQhKjD+rj6/9PL1nHKZmyt1J/B7K2x/eYfUATY2LXZL9PbIsEU7ne0mpGG1ot1vGuT4wxQp8utVoqOg3S0mpN+cjY4qSudZrLDMxvZOtchmWPrcN/O3UuxR461yGlmKrsyxEnOuXr+IXY+lib/jq2+91HTH3Fpet5UOnt8vj8Ypd6u4s+FOvY0LX2ewPwCedoI8N7ChoM4tZh0mDDSUWHpaTBQM/LihIyRk5Jg2Vp6jlajP3Fx1R/tyfm8Uf4SSHuijnmgrj7vea+x6OYK84xVDFXfRRzKeYaR6ixx/XX2eMhbNOcQ6j3bCAkc4DrGbTzfwuWnUE+dtIugkKIRvAFqWfVqO9yT32vrmnjdOBM8tdNOwmO5hhP+TKkvEjwveS/e/a4r6Qts4ElTh1Hlyi/v8eG3UuUP8Epe2uJsiGYid931d0FdSbwDU+9v6pZ7yje6Gnvb9gW5ON4LYMZr7LHDoHt3BHLJJxt4wJgVsHy62DbdPfL3oG9PByCg8l//6U9ex9XoPxO2Avg2fJLsEX5dTnaqXfYvb4Og1uSvzRA23X9BMDFTvmfBLDLh+tfJ6g2CfJE8tvDT2Air+6CkD4hruswfNl+3law7Ls8ZSeovtM05DPMPbpE2Y2xbFfZ8m8v2f47yX+ft5aso89O5Bcr3AU8omJ9Lr4sYiH98M7ASqf+ovfjOueZtHEAACAASURBVMBvnbK3YpPVoYjRD8c6boXyd00Qmw/q4+v/p5Uo/45MuVWU0y/DaHt8j9UHNDkmdkn2+8S0SDCV6y2tZrSl1WId7/rEGCP0aduX90lJp0E6Wq1pHxlTnNS1TvOxNfnsxNdSLfvxWuT9/RLgOQHsnMoxlfuAuo5fiK2Pte2vY7rfXWLrKy5dja19pLfLE5ve7qIPxTg2xKD9znfaf6CldlPQYBC3DpMG85OSDktFg4GelxWliRg5FQ2WpcnnaLH1F5fp8G5PzOOP8JNC3BVzzAVx9/uu4i7FXIq5FHMNRzGXYq4QxDT2uPPMy7DF5q+g2s6/bfBiBm1eTrHr9gby1+xRDdkohJjm/J68o6+ayWIm+YGxatA73Tid/HULFdw3iRYJVi9fZ5HgV3tl7vccS3v/tlGJ+nal3m/hTggspdhkT58/OuXrLFSuyt7YREbfho8Gqtd9+fQOYJdAdftYk3zwPQF8n+HZZjdiMhvH3eR3Nr2XcNmIsrhbsk8An8Ku2Sh2A/6SKbMY22I9FMeS//6f7f3/DZjv8jEDm8C8xym/AstkEoIjnbofxH+9jst85lrCZOWt6ydWZ9I/9Y8PBrDLx63kbS268H42tuPcKfgnoy8D5gW0te51HUV/rMgei4HHjygzF/icp1z/2LSGPe9x6vodwzPMZdkK/0tnRSfs+3yb/PdZiY1haxasYz0swcYDTj13Y+NIKD7i1N+EH3az/U8wftHkdsBFTpk7sIcqIYnVD8c4btXxd00Tmw/K4uv/rx1TZg75vhniJXjoZnyP0Qc0OSZ2Sfb7xLRIMKXrLa02GW+0odViHO/6xBojQHdaLSWdBulotaZ9ZExxUtc6bRhPxOY5s/XfCryIYn5vTSwrr/tSza3APoFshKkZU4X2C7H1sbb9dUz3u0tsfcWly3lQkN6uSkx6u6s+FNvYEIP2c/35lS21m4oGg3h1mDSYn9jH0CypaDDQ87KudVgqGqxPk8/RYusvLtPh3Z6Yxx/hJ5W4K9aYC+Lu95r7Ho9iLiO2MVQxV30Ucynm8hF67On76xXAub26U9n92e3HNzF6Ie1+5MemMjtMCiGEF9/gPAML3Ndwzj8dc7Zl2QkTRVlWYcLu7gr1jeMdmBDrgnOBrwWs7wfAC5xz/YwUMXECg/3lRQxu4XsVlmmnz+m9A0z8fDLzbxuSD5zOZXB772OwbChgguiwzL89BgvGsnzd+fv12KC6NfB+59/G2X4r8D+Zv+t8d3q2PyXz99OALTN/38PgltT/YvgW2Odh2U18W2y/DZvEeDy25bWPA4D/yPy9tWMbmO2Le/+/jMFg5HUMZnz4d2z76T73Y5M9ff7I4HbKn2fw2r2YwSD4SuyBaJ8zaWdL5Sdiou4L2HbsoZgJnAQ8A/vd/xawbh9PBX5OXpzeBXwHu74PAJsATwCeif0ei4BnAR9jUDi6fXMVFoyvrGnnHEzAPN05fwEmOH7JZFaejbE+/VLgICa/2z97f19W05Ysv2BwcfuvgUOx6/Yw7Hufg+0ycjuwNrA95sPd7D739cqeHci2Axn0K2CTGp/EFulvjb1A0c+sM4Fd319WaKuun3g48InM32s79YFNwFyT+fsTwBUl7TwSu/59ZgEvcz6zDFsgNozZWNaZzbBYxo2LwLK9fAXbja5OpuN3YBml+4y7rgCfBi6p0NZ8bOedtZ3zy7EX4s/ExthVWN/dF3gV9ttdhfmMrK9fCZyc+ft24N0l7Pkh8Hzn3HXY9zsHuLpnGz0bHtP7/CsZHDPOxu6rsrvmXgU8csi/LcQym1+I9cnFWL9ZG4tjd8IWKDwT811Z/oHdm/8oaU+f9bBrkGUfBid6XT/s3m9VWBO7lvs650/FxuxLsPF8XSzeOgR4DYPf/zfASxiM3UIQqx/uetyq4+/+QPmEFnWJzQdlGdb/T8EeSF6K9Z3VsIxdz8KyeW3T+9wKzJ9/pmL7Lm2O731i8AFlY40+H6P5eDokE5n/v52wDyfKkPr1llZrT6t1Pd6NItYYAdrz5anoNEhLq7Wp0yCuOKlrnTaKPYAzgM2d81dh844XYQ+qH+zZsgG2mOLx2Jyz+8LHWdh1DDnfnmJM1bZfiK2PtR17x3S/x95XXNr8raS3p6be7kJrQ/djQ4za71YGtfAp5O+xpkhBg0G8OkwazEhlDE1Jg4Gel8UUI/eJVYO1/Rwttv4yHd/tiXn8EcNJIe6KNeaCuPu95r4HUcw1nNjGUMVc5VDMpZirq7Fnc2xs/V6vnZSYjb1veGDm3H1Y0uNvYX14JuaHD8f6SXah/dHk1zUIIUQQNse/on6LivW9yVPXsEVKIfBt1d3WEfqh32meNnwLwLrGzWQx7jgmU3bLkmUnGMxGcHiF8v0g8jEVyv494HeH/BbQ445ROwv+CwsUfRzYK//iEeV9uymNOv7klL+kZPn3ZcpuUbLsuO8Smq0bqncmg4tCm+Yw/Du7jvqNH4ktHl885rNVF8L4mIs9EB7W1ore4Z5fjr0g/LCAtvRxt7M/rnf+GZgAL3pNf4ct5g3J6ljGLbetVeSzjKwAXl2jrbp+Yr+S5SfIC8giLKzQTpnjVkyIz69gm48bK9gwbGFbEZ7D4M47445VmEhdFxuHRn32jJK2HI5NZI2qcwn+e34Cm2x6B9WzUu0IfBy4ZYwNRY+7gP+kXKYnH0+r0LZ7v1VlbewFpWHtLBty/i5sMi3ULiEuMfvhLsetOv7u/9Votw4x+SCXcf3fHVf7x1+BJ9ds26XN8T1L1z6gbKzRPzar2W7bZG3vcifBqXC9pdXa02ox6jSIO0Zoy5enotMgLa3Wtk6DeOKkrnXaODbAMrEOa7/I8XvyL3+FJLWYqm2/EFsf6yL2juV+j72vuLT5W0lvV+9XPmLR211pbeh2bIhN+z3M09brG2prGIcRvwaDOHWYNJiRyhiakgYDPS+LKUbOEqMG6+I5Wkz9ZTq+2xPL+PMxbLeiIseoHWOmE4cRf9wVY8wF8fR7H5r7HkQx12hiGkMVc5VDMVe9766Ya/oyC9t103c/LxtyfjHwii6MFUJMH55A3vk8WKM+30K3Jlc5T6VFgt/1tNHVDgOj0CLBat8dwi0SXB3L0vC9If/e3+r6PUP+HSybRhlbvpgpO4fhDzCHHQdkyj+vZNkJ6r94NV3ZCcvOMUpQ/hnLgNPPULH9iM/2j1MasHXfnq0PjWn7RmyRz/beWuqzrafNrKjaGfgZJjp99q0Ezsd2Gm2K+VjmlmHXaBWWxWXYlu9FqeMnwHZCLVO+SiaYbUq2Mex4ELgDy/r2W+DL2ETP4wk72bNxBdsWBbBhB+yllFG+4F4sFnlMr8wcbKJ7lG1VXoKahWW2+gq2UKLINbgIy44WasJ9Fpax6WgsK/cDBe2YwDJvfRfLHrVmIHuOKNH+sPutLk/HfNuwl7QmsP5zIfZbuJm8QpKCH4b2x626/u45NduvQ0w+yEeR/r8K61eHYZnAmqCt8d1HVz6gbKwxAdwcqO02ydrf5SLB6XK9UyEVrbYvceg0SCNGaMOXp6DTIC2t1pVOg3jipBh02jh2AI5n/Esd/Xvt78CxwO4t2QfpxFRd+IXY+lgXsXcM93sKfcWljd9KertevxpFDHq7S60N3YwNsWm/FzhtLQc2arC9YaSiwSAeHSYNNkkKY2hKGgz0vAzii5FdYtJgXT1Hi6W/TLd3e2IafxYNacN3NJmcKDVSibv2JY6YC+Lq98PQ3LehmKsYsYyhoJirDIq5qn93xVwCYBdssemohAkLgU+R30lUCCFq4Qve9sW2gs1yG9WyBa6DBc/ZF6ZXYYP4Nd4S9TkLywLSBV/EFq2F4jvAIc65LbDdboTIsj2WIek4TJC4rIcJtq8SNvOpSJdNsUXhW2AC9n5sK+s/Et+Lv2thW69vjk1WzMIyZ9yKZVy5oeH2D8aEZ5YdMCGYZXPsmj4CG/cWYv76AmwRURtsB+wFbIJlO7sPuz4XYtdLCJd1gCdhE7jrY6L0Tmzi8SJswqVttsQmFrbEMj2tiS3aW4zFj5f1/r9JZmA7E+2A3dvr9I4J7L66F4uP/8LUv7fWwXzwZtjLOhNYH7kN6yP3tGBDSn4Yuh+3UiJGH5TF7f8zsZj6WuDi3v+3QZfjeww+QIjpRipaLYbxLqUYQVpNlCW2OCkGnTaKeZh9j8Cu3QxMty0GrsPsu68r41BMVYRY+lgX/jq2+z0VNLaOJvZ+FYPe7roPTeex4fvAQZm/v0OYbPdVSUWDQfc6TBpMTGViHDtjiZF9zCNuDdY0MfaXqUxM488i7P2rIjwD+EWgdqcKqcRdXcdcEFe/H4fiLlGGGMdQxVzxEmN/mcqkNPakxlxs0fcOWF9ehV2rK7C50JXdmSaEmKr4FgnugYmvLNdiAX1ZDgNOcs79kMGJ/9DsSjfZBgFuIr/TXB2+Rf6hyFa9doTI8mzgJ8BbgM8N+cwibLLiKW0ZJcQU4VgsM06fe7EJy4luzBFCiGmH/LAQQgghfChGEEIIIYQQIi12wl5i7O8Qsxx7tn9lZxaJMkiDCSGE6IKYxh8tEhRtEVO/F0IIMT3Q2COEEFOI2Z5zCz3nigrcLDOwLa+zTGADSZNc1nD9bbLKcy7k9uFi6rBN77+jshVdn/mcEKI4uzt/X4LEjxBCtIn8sBBCCCF8KEYQQgghhBAiHVYDvsLkAkGAD6AFgikhDSaEEKILNP6I6Yj6vRBCiLbR2COEEFOImZ5z15Hfwv3h2HanZTgY2+o4y+ewrcRFMXyLBH2/mRBFFwluiT2EE0IU57HO3xd3YoUQQkxf5IeFEEII4UMxghBCCCGEEGkwEzgJ2DNz7kzgw51YI6oiDSaEEKILNP6I6Yj6vRBCiLbR2COEEFOIYQvOzvGce3qJejcFPuucuwb4nxJ1CC0SFMXpLxK8fsRnrsf6z7yGbRFiKrEtsL5z7k9dGCKEENMU+WEhhBBC+FCMIIQQQgghRBrMAU4HXpI59zPgUGBlJxaJKkiDCSGE6AKNP2I6on4vhBCibTT2CCHEFGPYgrPjyS9Qe0PBOtcBTgM2ypy7DXgO8EAp64RvkeCM1q0QKTAfWATcO+Iz1/f+u82IzwghBnG3UQcJICGEaBP5YSGEEEL4UIwghBBCCCFEGiwFrsr8fQKwP7CkG3NERaTBhBBCdIHGHzEdUb8XQgjRNhp7hBBiGnEiMOEcbx1TZjvgIqfMHcCOzZk5pfky+d9gu04tEkKI6cWxDPrgxWixthBCtIn8sBBCCCF8KEYQQgghhBAiLY4Bnte1EaIy0mBCCCG6QOOPmI6o3wshhGgbjT1CCDGNWBP4FflFat8B9gbW7n1u3d7fnwMecj57PrBlq1ZPLXwLNbfv1CIhhJhe/IJBH/yrbs0RQohph/ywEEIIIXwoRhBCCCGEEEKI9pAGE0II0QUaf8R0RP1eCCFE22jsEUKIKcbsEf+2BDgA+ApwcOb8Ib0DYDmwmqfsQuDjwCeAlfXNnLas8Jyb2boVQggxPdgNeIdz7vHO31sBJ2f+/gfwgSaNEkKIaYT8sBBCCCF8KEYQQgghhBBCiPaQBhNCCNEFGn/EdET9XgghRNto7BFCCPF/PB34GbCU/M52/WMFcCHwTiZ3GRT1+DT567xjpxYJIcTU5d0MH+OGHV/sxFIhhJiayA8LIYQQwodiBCGEEEIIIYRoD2kwIYQQXaDxR0xH1O+FEEK0jcYeIYSYBozaSTDLL3rHOsATgc2AjTDnfydwG3ARcE8DNk5nlnnOrd66FUIIMT3YvUKZi4NbIYQQ0xf5YSGEEEL4UIwghBBCCCGEEO0hDSaEEKILNP6I6Yj6vRBCiLbR2COEEEJ0zIfIr8jfs1OLhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCRMPMrg0QI9FOgkIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYaiRYJx41skuFrrVgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhIgSLRKMm6Wec1okKIQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQAtAiwdjx7SS4eutWCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEiBItEowb3yJB7SQohBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBAC0CLB2NEiQSGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEPRIsG48S0SXL11K4QQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQkSJFgnGjXYSFEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIMRQtEoybpZ5zWiQohBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBAC0CLB2PHtJLh661YIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYSIEi0SjBvtJCiEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEGIoWiQYN0s85+a0boUQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQogo0SLBuHnQc26N1q0QQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQggRJVokGDe+RYJrtm6FEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEKIKJndtQFiJFokKJpmNeCNwPeAW4ADgbuA33VplJhSfATYbMS/Lwbe1pItIg5eBOw35jMfBf7egi1CTHU+Daw34t/lg4UQQojpi7SacJFWE0IIIYQQojmkwYSLNJgQ3aPnaKJJjqb4O35fBq5p0JapgGIp4aJYSojuUSwlhBBCRMqMrg0QI1kXC5SyfBl4bQe2iKnJ64ETgD8ATwK+Dvwa62dC1GV14H5sMeowfgU8tR1zRCScATxvzGc2Ae5owZapzHrAC4C1gO8Dt3VrzrRlFrAD8Ghgfex3mQPcB9wL3AT8o/fficBtrw/cPeYz8sFCCCHE9ERaTfiQVmsHabV4mQPsCGyDvXS2Fvb8ZBFwD3AzcBmm5YQQQgghyiANJnxIg7WDNFjcdKnD9BxNNM0iRi+cyPIM4BcN2pI6iqWED8VS7aBYKl66ns9WLCVEceYCewKPAjYAVgB3AlcAfwZWdmeaEEKILpiFvTCePU7u1CIx1TiNyb51LHA9cFCXBokpxe7kfZh7fKwz60RX3MjoPnFjd6blWMj4PlzkWIYJu6uxicr3YgvHmmJX4FYGr+naDbYnBnkY8GrsQc4SivWRB4DzgA8Bz8UmB+rytALtygeLPqH8XZnj5la+mRBCCB/SasJHKlotVZ0G0moxMh94N/Bb4CHG95tVWGb/bwEvwfSfEEIMQ1pbCNFHGkz4kAaTBpuuxKLD9BxNNM0iivvIp3dkYyoolhI+FEsplpqOxBJHgWIpIYqwM3AK8CDD75O7gOMZvWOyEEKIKcgyBgeE73drjphi/B1bHHg7k33skZ1aJKYy25MPcg/p1CIRAxcx2Cd+2K05/8c2hJmoG3WcDWwZ2O6Z2ASP29Z/BG5H5FkTeA+Whatu31gC/Bh4cUD7fH1aPlhAO/7Od5zZxpcTQghRCGk14SNGrZaqTgNptdh4AvAjLDtrnf6yHDgXeCmWuVkIIfpIawshRiENJnxIg4VFGiw+Ytdheo4mQqNFgs2hWEr4UCwVFsVScRF7HAWKpYTIMhP4AHbP+e5D3728CLs3hRAiCLO7NkCM5UFs2+4+a3RliJiSbAB8Htta/BTgJkzgCdEEu3vO/al1K4SPBcC8zN83AF9rod3ZwC7OuVj6xLqYX8zyTGAj59xPgLs95WcC6wCbADthC8hcngNcAuyNLdoOwc7Atp7zCwPVL/w8GnsJy732V/bOX4KNsfcCq2F9YztgD+BFwIZOuTWwHQXvB74dyEb5YDGMov4uNOp/zbKAbsZ2IUSaKE6IlwVIq2VJVaeBtFosbAZ8Bnihc34R9kLN74B/YP1nBTYv/3BgN6xP7AvMyJSbDTy1d3wKOAlLHrOsIftFnCxAsXdKLKCd30tae+qyAN3zoj7SYPGyAGmwLNJgIgSp6DD5ZiHSQfdrvCxAsVQWxVKiLqnEUSDfLESf2cCpwEGZc/djm/mcAlyH+fddgDcAr+n9vR5wMjaOfqg9c4UQQnTFzQyuFv9lt+aIKcYJwFq9/38Lyk4lmuUT5LNfzBhZQrTFrQz+Nl9uqd3HkM+K8pyW2q7CbeTtfViBcrMx4Xelp/wENmE3M5CN84FVTv0XBqxf5NmH/O6Bl2GTakVYHXgf/ixBRwS086PIB4vi+PzdFsDaNY+fZurbv7VvMz3pamwXQqSJtFq8SKuNJwWdBtJqMfBC7GWJ7G9wHfAqimdNfiRwOv4+MwEsRv5zOqLYOy26/L2ktacGuudFCKTB4kUabDzSYKIMKekwPUcTodFOgs2hWCpeFEuNR7GUKEpKcRQolhKiz5cYvBduBh414vMHYAt1s2Ve3bCNQgghIuBqBp3/Bd2aI4QQlTmPQX+mRc9xsAX5SYA3tNT2qz1tb9xS22XxXaeyO6+uDfzVU88EttAsFEdh4nEF8H3ivaZTgW2Auxj8Lc/An8FtHO8h3y+eFsZMAM5BPlgUw+fvrg1U9y2ZOjcLVKfI0+XYLoRIk/NQnBAj0mrjSUmngbRaV8wAPkz+9/0cMLdinR/w1DcB/KqusSI5FHunRZe/l7T21ED3vAjFeUiDxYg02HikwURRUtRheo4mQqNFgs1xHrpfY0Sx1HgUS4kipBhHgWIpIQAOZvA+WAHsVaDcm51yDwI7NGSjEEKISLiMQed/abfmCCFEJWZg2Wey/uzjnVok+jyP/CTA41pq+/NOuze21G4VfNfp1Ar1HOSpZwL4YBgz/485wBqB6xR5fsfg7/hXqk/KrQbc7tS3fgAb+yxEPlgUI5S/c9ksU9/NAeoTw+lybBdhOTRzHNixLWLqIq0WL9Jq40lNp4G0WtvMBL7K4O+6EnhNgLp/RL7PfCJAvSItFHunRZe/l7T21ED3vAiBNFi8SIONRxpMFCFVHabnaCI0WiTYDIql4kWx1HgUS4lxpBpHgWIpIVbHdvvM3gdfKFh2BrYjbLbsaQ3YKISYRmj75/h50Pm7ys40QgjRNY8E1nXO/akLQ0SO3Z2/lwOXt9T2Hs7fMfcJ11aAiyvU8+sh5zeqUNcolgIPBa5TDLI/8ETn3P+Qj92Kshz4Sebva4F7Ktblsg2wgXMu5vtNdIvP34XoL9l61f+apcuxXYTl25njix3bIqYu0mrxIq02ntR0Gkirtc0JwCudc28Gvhyg7vd6zlXpfyJtFHunRUxjK0hrp4jueRECabB4iWmciLVPSIOJIqSow/QcTYh0UCwVL4qlxqNYSowjxTgKFEsJAfB6YF7m7zKLZSeAjznn/gMlJxNC1ECLBOPnAedvLRIUoVkX2BfYqWM7pgpvBR7eQL3zgVc3UG9buJNBIDEYC+4k1F+xSZ6mmQ3s4pyLuU+E6sP3DTmvmCw93uL8fRdwVs06r838f8j7QT5YlKGp/pKtV/2vWboa24WIHWk1P4oT4kVabTzSaWIU/wO81jn3TYpnbh3HZVhm1yyx3iuiORR7p0WXv5e09tRA97wIgTRYvEiDjUcaTIwjVR0m3yxEOuh+jRfFUuNRLCVGkWocBfLNYuqzKZaoYBgzgHc7534H/LNEGz8E7nfO/XeJ8kIIIRLjDAa3kL2zW3PEFKS/lf3vujZkCnAsdi0vJ+zLp/OBG3p1/1fAetvkOAZ92SIsOBbdcxuDv82XWmr3MU67E8BzW2q7Cu51mgAeVqGerTz1TAD/L4yZoiXWwrKlZX/D0wLUe2SmviMC1Nfno8gHi+L4/N36Aep9IvCy3jE/QH1iOF2N7SI82d/xto5tSR1pteFIq8WLtNp4pNPEMPYBVjD4e14JzA3czmcz9S9G/nM6otg7Lbr8vaS1pwa650UIpMHiRRpsPNJgYhQp6zA9RxNNsAi/r/MdT+/IxhRRLBUviqXGo1hKDCPlOAoUS4mpyYbA64BzgZXA/iM++0TyPrnKAr8fOnU8SHg/IIQQIhJOYdDpuyvFhajLf2J969auDUmcjzF4r4Z6+TT70mn/eFeAetvmPAa/wy87tUb02YK8QDm8pbZf7Wl7k5baLovvOl1Tsa5neuqaAA6ub6ZokWeQ/w2PD1Dv3sB7e8f2Aerrcw7ywaIYPn937cgSIja6HNtFeLK/oxYJVkdabTTnoTghRqTVxiOdJoaxFnn/PAEc0EBbb8vU/6sG6hdxo9g7Lbr8vaS1pwa650UozkMaLEakwcYjDSZGkboO03M00QRaJNgM56H7NUYUS41HsZQYRupxFCiWElOH9YDDgJ8Ayxns15uOKPcJ8vfwkyq0/3ZPPf9RoR4hhGB21waIsSx2/p6LbQ2+qgNbQrIesC+wHbA6cBdwKbbNdJHv9kjgCcDm2GB8B/AH4OqANm4I7NSzcT1gTez3uAf4G/Zi4cqA7XXFNr3/bor1rwdbbHt1LIvCzsC6wL3AX4ELgCUFym+CBVPzgdWwnTavAC7CAqS2mEk+CNwZEzxPxfp3FeZjE1xbO+c3q1hfSNbCfrutsN9hOXALcDFwlfPZGcBuzrm2tpSfC+yF+YpNmOwnd2L95PaW7CjCepit22GZoh7EruklhPVtWXb3nGvrt3Hbvpn87zETeBywK/Yi9xLM3/8euK5pAzOEvE6+Cf5VpD1Bsjbwb8AOwAbAOlj/vRu4HrvXivj0EMzAfOeumK9cFxsP7sEm1S7B+lBdHuk5FyJzz296R2ge6/zd1n0O5ncfh41lG2H9ZSF2v18C/KtFW8bRhR/20eXY5fN3FzfYXghi8kEubv/vx7uLtBI5wAAAIABJREFUsHjpCuCBwG12Obb7SMUHPBK7dlsAa2DJeRZhY8e1wE20qy+mOm1eb2k1abUQSKvFqdWk00YTW4zUllYDOIq8f/498KNA9WdZlPn/JuPmFGKqrv1Cm32sTyyxd2z3+zi66isxja0grV2HLrQ2xHPPQxrjAkwfrS0NFh5pMGmwVIlp/Gw7Pk5dh3XxHC2m/jKOqfJezzhieU443VAsFR7FUoqlUiS2cVHz2eVoO5aKrb+MYzrEUinHUWthi3IPBZ4NzPF85hZGJ3V2F/VOAJdVsOWSIXV/v0JdQgghIsfdinkCC2piwbdlu3uckPn8usAnsQd0vs9eD7weE2c+9sJenh/W1uXAcyp+lxnY1t2fAv5e4HvdD5wKPL5EG68pUG/22MMpf0zBcu8tYdNZmXI7liiXZeMCNp2R+fzawPuwFzJ9n12I7cAwrB/sBpxJfpv1/vEv4KCK36UqM4FvemypukuFb1eKCez+6ZInAadjgfyw3/pP2C5bfbb3fObQBm2cBbwMy1Lz0Ag7V2GB9Rt6ZUJxxIg2+8eLM59/JvBThvfnCeBCTIS0Ydu4I9TuKBc69WZ9xFrAezCBNeqa7BXIlnG8z9N+leuwGpMvPmSPMyvaVdb3hmIG8O/AsUwu7h9lwzLgbGyXvKbYDvOPN4+xZQKbfDieahl7+hzjqfcfDB+3umQ+7fpgsD5yEBZj3OdpP3tcCryVsMlLYvbDw+h67Orj83dHlKwj65uaeCAWow9y7XsBNmk/rv+v7H2HOruHxjS29+nKB5QdF1fD7qUrx5RZik3cd0HWjth2EkzpekurTR7SavHGCDH581S0Wqw6DbrRarHGSG1rtc2xh+pu3U+rUeco5gLzekfoOftUYqqu/UKbfSwWXx3L/R57X4nl9wJp7VD2tam1Ia4+BOmMCylo7VBIg41HGqwY0mB2pKbBIM7xs20NBunrsLaeo8XQX6bLez2xjD/aSXA0iqXGE0tfrmrbuEOx1PSOpWIYF31oPrs8bcRSsfSX6RBLxTz2hGQN7NqdyvC1DNnj6yPqmku+T95Q0a5NPG1fWrEuIYQQkXMkeacfQ2b6PmUWCc6j2OK7CWwiwF2R/yZGBxPZ490lv8dzsayVw+p7CH9A3j9OwoTlOGJcJPg3JgOdqtuUP7eATUf1PrsHo6919viq084M7BqsLFj+5RW/T1VmAid77Cj78umwl06PD2lsSTYGvuexadixCnhLr+xLPP/u24UrBAdhC3V8Nj3IcJF4ObBtIBu+O6SN7LE9ljXltAKfzV7TY1uwbdzx1Jo2gL2c4PrUrI+4pqAtS7BJgKb5saftKtfhTZ56VmAZy6pQxveG4lVYJrVh7T2ATbYM+/dPEnYh3Zxenb42V2IvzIwaMy5n8MFCUd47pL4jq3+VxngR7flgsFjiCk+bE9jLP8N+j8uxrFkhiNkP+4hh7Orj83dlJ6Cfkyl7dlDr4vNBLvszuv+Psm0V9rLjniXbjGVs79OlDygzLu6IZW4rcn263Ikxa0dsiwRTu97SaoP+Rlpt+CGtlo5Wi1WnQftaLcYYqSut9mlPXddhc4opkUpM1aVf6KKPxeCrY7rfY+8rMfxefaS169GF1oa4+lAq40IM2q8NpMGKIw02HmkwO1LTYBDf+NmVBoP0dVgbz9Fi6S/T5b2eWMYfLRL0o1iqOLH05aq2jTsUS03fWCqWcTGL5rOr03QsFVN/mQ6xVMxjT11WA/YDvoHt5jjO5muADzF+bm0PT9lf17DTTaCwhGaSyAshhOiYN+MfZGPh37DBMHu4C/lOANbHsmf0zy3DspoMy5IwAXwp087LnX+7H8uEMCpb5n4lvscxnvLfxx68rp/53FzgCcDHgcXO5y9m/ELBfbEXE09meED1s8xn5jvlD8r82w8zZZZkzp8MHFjwe8/Agoqf9+p5W8FyLocz2Ad8GXj2wya27s+cuxf7HUdlhup/l1kMvtS5Ctu2/WZg+ZCyi7GMHG0yC/iWx5aiL5/Ow3bUdMt3+dLpLkNsWgh8DXg78Argv4BTmPyNV2HZco4j/7uEFrNrAF9w2lkGfBG77+b2Prcatrj5OPL95gZg6wC2fITB+zHr+/r9fktsge4E5jPPB47GFhK/rlfHsMmqtwa0zRWTf3X+3XesV6P9Pr4F5vthEybZ7CxLMB9xt+fzWZub5jZPuw8rWcfu+DPPvL+GXc9l8Lc5x1N/mbGwCJc49S/GRPzjgTUzn9ugZ9/pHps+FsiW9YE/OHX/FvNH85ic5JmBZft6BzZuuPa8rkLbvgcQ/eMkLLNPLLi7Ujfhg8EmTT9L/nqcjsUvG/Y+NxubEDyKwZhgAsuEv0MAW2L2w1liGrv6+Pzd+iNL5Mkuov1AQNsgLh+UZVj/PxN4IbARk/fdBtjLfT/3fL5KzBfL2B6DDyiqSfZhUMutxMaHG/FPtJ9Yw6a6ZO2IbZFgitdbWk1aLeYYIRZ/npJWi1WnQftaLbYYqSutthb5+doJLFNvKqQUU3XpF7rqYzH46pju99j7Sgy/Vx9p7Wp0qbUhjj6U0riwD/FovyaRBiuHNNh4pMHsSE2DQVzjZ5fPy6aCDmvjOVos/WW6vNcTy/ijRYJ5FEuVI5a+XMQ2xVLjUSw1SSzjYh/NZ9ej6Vgqpv4yHWKpmMeeKszCfo8vM3oM6B83YvOIZRKOHeap5zs1bL7OU1+TmwEIIYToCHdx3AQW8MfMTQzaewKTL+L9GQvGZmc+vyXwYfwPifYCtmEyaDoJ2DVTdga2Et/34O9aimeBOCZTbgVwSIEyW/W+T7bN7xZsr48vG8hPKBYofzVT5s0l2+2zWa/8e7Dv/amK9bi8lvz3ei62qPMBTJxmMyfNwjLnXuUp18+K+7+9v/8JLGBQKK+DXQPfbo+vCPSdyjAL+LbHlnEvn84jvpdO9yC/GHcpJkjXGFJmS+ACJkXzeU75XwW2cR3yYv3vwKPHlHsq+UwyPw1sG8AvnDb+DPyl9//njrBzBvbCh9sflhMm8N/SU/frA9RbhFd72t4P8/XLsBcfdnPKzMMmXn0Cba8Gbd3C0941Jet4Gf6Jnc+EMxPw71a7acD65zB4z/wSy/Q3jjc6Nq2gfgbr2dj9k633XQXKbYVNnNSNqzZn+OTLBDaxcwL5ftwF7gRuaB8MNtn0O6edOxmfKW0X8vfG1cDqge2L0Q/HOHb5/N21FerJJrJ4fiDbIC4flGVt4Pfk+/8zC5T9EPlr/tIatnQ1tsfqA3ya5NlMZoX7KRZ/ZB8ebEQ+jm8rPvKRtSO2RYIuqVxvaTVptSwxxgggrVaElHQaNKvVYouRutRqC/D3w+1K1tMVKcVU4/zCfCwBYBN+oev5gD5d+OrY7neX2PpKli7HVmntasSktaGbPpTSuBCj9msCabD6SIPlkQZLT4NBXONn1/HxAvx9MRUdBs0/R4upv7hMl/d6uhp/tEhwEMVS9VEslUexVHqxVGzjouaz69NkLBVbf3GZDrFUrGPPKGYAe2PX8naPDe5xB/B54MlUW+D6Pk+dn6th/4We+p5Voz4hhBCRciB5h79PpxaNx10k2M/mcCaDiwNd3kL+u36DyW2JDx9Rdjb+LCZFt2U/JlPmwwXLgD3YWui0+aQS5ecAl5K3+z/HlMtu031mifZcntSr4xDshcc6dWU5gcHvcy8mbv/J6CBvO/I7US7CgtgJ4AcMnxwCyyblXsuuXtqchWWEcO0Z9vLpPPwvnR7XvKlD2Rq41bHnQeyB7zg2ZjJrzlKnjk8EtHEN8hOBV2LZYYrwcfLXfO+A9sHwLCQnUGwrcN+uo18MYJdvfNkjQL1F+LzTbt9H3AI8dkzZM8nb/drGLIXnedo7dcTn18Qmx/YFjmRSGGePmyi2GL0sbka7mwPX/7hM3Rcx+KLHOM52bPtITVsOd+ork4HnsEy5ZVR/QeZE8r+t7/gbljGpiQmnIrhxSkgfDOaHf+m0cQewY8Hy7uTcBJYlMiSx+eFYxy6fv6t7bBXArj4x+aA+a5L/LW9n/MPCPjOBK5zyj6phTxdje8w+wNUki7F440Hg4BHl1mTw4X1b8ZGPrP2xLxJM6XpLq0mr9YktRugjrTaelHQaNKvVYouRutRqPyL/u15dso6uSCmmKuMXzvLYVdcvxDAfAN346tjud5fY+kqWLsdWae3yxKa1of0+lNK4ELP2C4k0WBikwfJIgzWDnpcVI0R8nLIO69P0c7SY+ovLdHmvp6vxR4sEJ1EsFQbFUnkUSzWD5rOLUTeWmgpxFDQbS8XWX1ymQywV69jjY0/sOrjrF3zHPdguxs+i2PcYxSc99ZdZg+DiLsycwNYLCCGEmGI8hbzD379Ti8bjG2RvwzIZjGIm+W2GH8C2TD6lQLu+LeQ/WdDmY3qfX8no3QN8HO20+cOS5R9Ffiv4hxjcMTHL1liQ0hdhZe3N0t+pck8si8cVNerK8kfyv8VC4BEFyvazQGWP+7HME+MCso09Zb9d3vxgzMJEvWuT+/LpPOJ76XQWcLHHpjIZdz/oKT8BvDignd906n6Qchl1dvDY9/mA9m3rqX8C+DHFdzrd2VN+CfUz/77fqXMZtnC5DXwZT+6l2MsaL/aUfU8zZgL+bC9VjruBMzC/G3qXtD4XOW2GWvjdpz85tgrYqWTZ1zNo24U17JgB3ODU9+QS5bOZ7P5Uw461yGcSHHdcDRyLTWS1wXyPDSF9MFhCh2z9qyj2QKfPWpjvztZxS0D7YvTDsY5dofxd/7g9gE1ZYvFBWU5x6l1FsV0NshyZKX8fxfuljy7G9ph9gE+TLKdYIpm+JmkzPvKRtT32RYKpXW9pNb/vllaTVktFq6Wk06BZrRZTjNSlVlsTf/bcL5espytSi6nuo5hfeImnbB2/EMt8AHTjq2O6333E1FdcuhxbpbXLE5vWhvb7UGrjQszaLwTSYGGQBvMjDdYMel5WjLrxceo6DNp5jhZLf/ExHd7r6XL80SJBQ7FUGBRL+VEs1Qyazy7GdJ7P7tN0LBVTf/Ex1WOpmMeePo/BFoD+c4it7vX9Nra4PaQP/ZKnrTrjyRme+l5V00YhhBAR8ljyDv/QTi0aj2+RYNEMlcd7yk5QXHhf55T7ZcFyj8d273tlwc9n6e/G1z8WUz67gG/r6b+Sz34xCzi/9+8rKb5T4jCO7tW1EfBVbLFiXVbDFjlW7be+FzXvo/i29W7b3yxqeEPMBr5H/jv1Xz6dR3wvnQK8jbxNZbLlADzBU8cEsH0gG32Zlv67ZB0zsHvW/W1CcbDHxsWUX9z7L089e9a07cdOfXVfjirKbPwTHQsKln+yp+wRwa2cxL1OVY4bsQw6L2f8gvmq+Hzv0YHb2BsbK8tM2Pdx74Vratjhi42KZvAD2DBT7sQadgCsjWUWqtIvrgTe1aujKV7oaTeUDwa/H/5KhXrO9dQTaufF2PxwzGNXCH+XPc4OYFOWWHxQn+eT/85fqlDPAZny59e0qe2xPWYfMEyTvLtg+fcDJwMfq2lHXbK2x7xIMNXrLa3WXJwQ83jXJ7YYIYu02nhS0WnQvFaLKUbqUqvt62l7AnhZyXq6IMWYqugc+j6esnX8QkzzAV346pjud5fY+opLV2Orr+26h7R2MUJqbWi3D6U4LsSu/eoiDRYGabA80mDNoOdlxakbH+/raX+CNHRYn6afo0E8/cVlurzX0+X4o0WChmKpMCiWyqNYqhk0n12c6TqfnaXpWCqm/uLy/9u783BLivrg498ZdmRxYRNGGUBAIy6Iivq6YMQt4pqoaGJwX7KYN+JLfGMiIL6JGI0mMXF5g5pEEk00ghKiQQWjEYkooiYIqCACI/smyzDLff+oe97pW6fOuaf36nu+n+fpB07P7eq6faur6tenq2oe+lK5tj0PIiwK9INEuvF2F3Aa4e+yY41zTvOJxHlnfVaW8ulEem+smUdJUoYewHiF39bS5k1JDRJcM+OxL08c++0S5z4tOvaKEsdWlZoR4+EV0km9nBjPKvS2wr/VWZJ45G8IMyQA/OFiurN2NCc5lPHf41uEByKz+Ezi+LeXOH+8FPf7Sxzblkkvn36P9EunTS67XsVujD+82ki5WbIgDD5NBQqzloVpdiTMfFtM+zqqdebjQGRTA/kbOZnxa/D7FdL5SiKd19fM28+i9Oq+HDWr1KqvFzL7DDNPSBzfZru4LjrXZuBjU7a/I8zoci7jszUvLO57H7Brw/lMXddnNXyOOuKH/1fWSGs0U1Rxm7T6bso2hOv1cGDPGvkoehLw1US+ZtmuA36zoXzE3hmdq6k6GNL18N2EARVlfYzx6/IbTWSSvOrh3NuuVH13H0I/Ztbt+MLxJzWQp6Y0WQdB+JvF12s9YcXvsopfQM26CvokXbbtudcBqZjkUtqdVbMNxfznPEhwyNfbWK35fkLu7d1ITn2EmLHa8oYSp0HesVrTfaQ+Y7X/nTj3ArPN2NunIfapvsvs9ULqZas69UJOzwP6qquravp+j+VWVmJ9/r2MtWeXa6wN3ZWhIbYLQ4n9qjIGa44x2DhjsPmLwWBlfV821DisqM3v0ZrQZj9+Xt7r6bP9Sb0QP2mrO0grV/almmNfapx9qfnrS/k8Oz8596X6eB660vpSObU9Byye+8JEWvG2Afg8YSxCG/VkLLXy35trpJcaQFp28gJJYuu+M6Bl3ZrY1+ZsIG34CbN3slI/9/US54oHBXbRyG9I7Lsv8J2S6byG8OCn+IXnGwgdls8SZkb6w8X95xEGDNa1P2H1RQr/3Z96L6Aeltj3fkJnZRZ7RJ83MT5YcpJ7M76K46UzHtumjYSl1FcDLyjsTy2D/h7qdRKb8Gpgl2jfpyg/o0rq3vg2s5eFaV5OuM+KPkh4EFLXasKX2nc3kFZ8P9xNtQdiNyT21Vl9bA3jDyi6ms0rVUf8BeEh2Cx2T+xr6z7fh/GB0z9k9pnHtgaeRqivD1/ctwPhQcRzCavBXpY+tLRHJvZ1OSv6ch4afb66RlqpftB7CTP8/Tzxb7ENlG+jl/MVwkPkQwmz5B9Nuqym7EZoJ58OvJDw8lNT4vutqToY0vXwpwkDKsq6JbHvPhXSScmpHn45+bZdqfruR6R/72kOLfz/Sq2DINzn8fX6FNUmKLmIMOMjwDdr5Knrtv3l5F0HpPob76OZ/l0VxxFmo6xjV8rPrgtwFtVWnSgjt+tdhrHaFsZqxmpDidWGFKdB3rFa032kPmO1VL19O91MIFfHyxlen+rP6a9eyOV5QJ91dVVN3++x3MpKUZ9/L2PtcnKMtaHbMvRyhtcuDCX2q8oYzBisTcZg8xeDwcr6vmyocVhRm9+jNaHNfvy8vNfTZ/tzFXC/GdNvOkbLhX0p+1Jtsi81f30pn2fnJ+e+VB/PQ1daXyqXtucw4PxlfmYz8DXC+xT/BFxfIv267kzsi/8+ZaSOTZ1DkqZykGD+Ul/i1AnO+vCDEj97e8PHV71WWwMPIXz5egDhhcydSTfAqdmDqnzRdjNhaexzovOcAjweOHUxX7cSXmLcWOEcsf3ZEsgVBwmWGZgZizuHdxEe8szqgdHnLzH7oMX4WICLS5y7TRsJg0Y+CTx/ws/k8NLpatIzdXy8QlrbJ/Y18eBgFeFhR+zUimmlVs/cjmYe1MUvg59JtSAkVc/UmZ03Faj29aBuPfCPJY4/ILGvTDtRRt3rtJHwNz+LEIQWXzxfC3yB0NY0MSgszuvVtL/i0EGEWbQeBNyL8IB/uwk/e2T0+Sc1zpt6wPlk4L+BdxBmVesrOL5gcftdQtv9AuB5zDbj+bMJK/we3WB+4jqoqft8Uj1cpa2AdH+tqf5uLvVw7m1XU+1CMZ2225W+6qDVNPe3hDAbadV7p6jLtn0IdUDqgfXf10yzjidSf5bN7YEXVzjuZrofJNj39S7LWC0wVjNWG0qsNqQ4DbqP1frqI0G/sVrqmeAl5PNCQsoQ+1R91wu5PA/os64u6vN+j+VWVopyalurnttYu7ymYm3orgwNsV0YWuxXljFYYAzWnpzbzyJjsOXN6/dlQ4zDYm19jzZNLv34eXmvp8/2Z9bJ9DfTfj3VB/tSgX2p9tiXWhl9KZ9nbzG0fhR035fKpR8F89GXyqXtedSUf/tPQt34SfqbdOG2xL46Y3NSx6bOIUlTOUgwf+sJwWKxURzaSoJlZkVNzf5T5vg44Jl1CfmR+xNe7H8p47M1lJF6QDGLrwEnAScU9u1GmGVj1Fl6Pc3MALM9YTakyxc/j/67f8104w7wN5i9k7KGMNNF0b+VOPdDEvsuKHF82zYQlos/irDkfNG1hACzb09gfOn6WwgPFcraL7GviWDwcYSgr2g91ZbV3obxv8VG0gOWyzqAEJAWVbmOMD67GtSbuSy+TzcA362RXp1zf4P0qrmT/EL0+We090CqqQeaGwh19zNYGvgeCPwW4aXzuuK8tvXgZW/gNwkv0tdpL75X49jPA9cwPiPd/YAPAX9CmGH7nwgPUfqYyXoTYXXBrxC+WHgkoW/xEtJfDoy8mPA7nN1AHvZjvE1tqlw8lvF6uGpbAemVn5v4u+VUD+fedjVR3+1B6MtB6Nf8tEZ+JsmhDnosof4uuoVyfdY2dNm2D6EOiK/HecBNNdPUZCvhehurGasZqw0nVhtSnAbdxGo59JGg31ht78S+SxpMvw1D7FOdS7l64cHR57r1Qi7PA/qsq3O532O5lZWinNpWMNaeJNdYG7orQ0NsF4YY+5VhDGYM1jZjsGCIMRjk0X723T8eYhxW1Ob3aLEcyktsHt7r6bv9mXWQ4DU0M0l8buxL2Zdqm32pYIh9qVzaRZ9n19NVXyqX8hJb6X2pnNqeVD0KYeDn3xAG96cWY+pKauXRe9RILzXJl4MEJWmFupYwS8Ro+0C/2VnWlSzNb5klhh8ZHbtAWMJ7Vickjp/VGwkNdnx8le3VJc4b2wr49wnpfqxGurEHLab5u4ufVxFmtKhzjm0W0yjm+cQSxz+X8d952kwQsQ9Hx8760K0r+xE6p5PKzTeBe/aWu+AdjOfrjIppHZNIK37AVsWJiXSb3H7cQB4BXpRIOzWTyyzidqBs3Rj7lyitrmby2powy1LVOgJCXpson7M4g/Hr/uQa6Z2ZSO+8mnmEdN17fAPpFm0NvJ3wELuJ+6zuakpHMFubfTNhNsKjyGNyjG2AlwGXMjnPf93QuX4lkXYTdTCk6+E69+J3E+m9qmYeIa96OPe2K1Xf/WLJNJ5ZOPbMmvmJ5VQHNV3+m9Jl2557HVA3JmlD6h7ravtgy79bjte7CmM1YzVjteHEakOJ06D9WC2nPtLIEfQTq61PnOPkBtJt0xD7VGXL7wU09/uNHEH/zwP6qKtzvN9Hci0rI321rWCsXUausTZ0V4aG2C4MMfYrwxjMGKxNxmBLt6HEYJBX+wn99o+HGIcVtfk92khu5WVkXt7r6bv9eXPimNT2zYp5yp19KftSbbIvtXQbSl8qx3bxCHyeXVXbfakcy8vIPPSlcmp7vp04vrjdDnyUMAFXH1L9ib+okd55ifSeUTOPkqRMjZaSHm0f7zc7y4oHCZZ5KTE1SPCoEsefkDh+Fn+UOG4j4Vo/h7DC4A4Tjl2TOLbOIEEIM5LcmEj3l2umW/SsxTSfV9h3MWGAYlWHUq+D/fbo2PWUW1o6DuBPL3Fs25Z76XS0nc/4LBxdOjeRp+MqpvXeKJ1bCYNR6/p6Io9Nbmc3kEcIwXsx3Zup9vvfK5HHBeCQGnn7WZRWmcHcdTyc8d+jTB2xLeMPStp8EWFddK7NpGdgntVfMv77l5nJbJLUdS3Tdi7nPoT7Ij7H1cD/ITw025PJ9fVvJI6dtprerA4CzkqkPWm7irCqXzyDXx+2Bz5COp9Nze70TsbLWhN1MKTr4aptxWrGH+AvAE+pn82s6uHc2664vlug/GCYNcCRi9vBNfNTlFsd1GT5b1KXbXvudUDdmKQNjyK0zWW34u9wU8U0UjMJNinH612WsZqxmrHasGK1ocRp0G6sllsfqaiPWG1jIt0TaqTXhSH2qZ5Z4vjtCLNrt1Ev9P08oOu6Ouf7HfIuK9Bf2wrG2mXkGmtDd2VoiO3C0GK/sozBjMHaZAw2fk80we/LZtua6h8PMQ4ravN7NMi3vMD8vNfTd/tz9ITj4i2n95qaZF/KvlSb7EsNry+Vc7vo8+xq2uxL5VxeYD76Ujm1PS8EvkyoP5e7P79HWCyoy+/0j0nk4x9qpPfjRHpNT2YiScrEN1ha4X+u3+wsa2iDBH8pccyNwOEznrONQYIAb0ukey3NdVh/ezHNhxX2fZ56M0u8mnod7HiGofNLHJsK4N9W4vg2rQUuZ/zavJcwEDXe/y36efl0tJpknJ+ysxuPxCtinlM/i6wi/eX2kxpIu2lfZGkev1Qxnacy/vveRvWHDak663UV0yrrVYlzl6kjDkscX2dWs2n2SZzr0pppvi+R5mbqPySpe12n2Rb4aiL9DwP3mDGNU6Jjr2oobyOHL+bnpkQ+U9v5hL9v31Yx/uBmAfhhQ+nHDzHPaSjdSfVw1ZeMDkmktQm4d+2c5lMP5952peq7psphXbnVQU2X/6Z02bYPoQ6oG5PkpPg7/KznvEwy9Ou9FmO1pvoJubd3Rbn0EWLGassbUpwG7cVqufWRJukyVrsjkd5bauS9bUPtU+1R4vhHJY5vul7o43lA13X1EO73nMtKn22rsfbsco21obsyNNR2YUixX1nGYM0yBhtnDLZ0yz0Gg/zaz5Su+8dDi8NibX2PBvmXl3l5r6fv9ufxieNS219VzFfO7Es1q++yPIl9qeXZlwpybxdHfJ5dTlt9qSGUl3noS+XY9hxIGLx4TSLNeLsT+DvgiRXzXUZqzMNXaqQX1w93AVvVzKOkObS67wxoJjdEn8vONKrp3p3Y90qaW4q9ir0Jg/hiuxM6L00Edvsv/vfWgmBLAAAgAElEQVSywr7LFs+9XcU0D4s+X025l1nj479V4tiHMD6jRpnj27KWEATtG+1/L/C7hJkkTo3+7RGEjnYTAyTKWEP6b/+DCmltTZg1paiJv8d9CStwxS5uIO2mPSL6fGHFdFIPIc8BNlRML77PoFywWUfTdQS0d5+3ca41iX3XEQK6Oupe12lOInyBUfRR4LXA7TOmEeev6fJ2HiE/exFW3P1nwgz00/LzBcrNwtSGBeCTif23NJR+XAc1da9MqoertBWQruPOJ0zYUFcu9XDubVeXdWtZudVBTZf/pnTZtg+hDmizXdS4IV/vtRirjRirVWOsNvl4aKc/MaQ4DdqrI3PrI03SZay2LrFvU4V0ujLEPtWVhAnsqh4PzdcLfTwP6LquHsL9nnNZyaltBWPtSXKNtaG7MjTEdmFIsV8VxmDNMgZb/tzGYHnHYJBf+5nSdf94aHFYrK3v0SD/8jIv7/X03f7MOkF7GwNd+mZfqll9l+VJ7Ev1c54h9qVybxdHfJ5dTlt9qSGUl3noS+XY9lwK/B6hHnwhWwaqpmwP/BphsN4PgGOB3SqccxYXJfKxtmJaewI7RPsuZnj1g6QMOEhwGOIvbfqYtX6legjwoGjfj4DTesjLyGrCQMBRpyQOCo4EjmvgPPsTylZxyfnLCAMQ96uYZp0O7D6ETk7V41OB9bdLHN+GtaRfOv1T4E2L/7+JfF4+3T+x7w5CIFPWI4Gdon1NBCTxtQT4Ofl9GX0A43X1JRXTSs0WfFbFtGD8XrmbsNR6F+rUEanjr6G9h+ZtPKxLLf3exAzida/rJPsAb4z2XZ/YN832wIOjfW190bOe8JDulwkP7X6bybOwPRj41ZLp70VY3fgo0n/LKlIP/i5L7CtrP8bbj6aue6oevpPq9+KTE/u+UDGtopzq4dzbrj6/wJkmxzoo9be8nf6/wO2ybR9CHdBWu6i0oV7vtRirFRmrVWOsNvn4tmK1IcVp0E4dmWMfaTltx2qQ/pvlsIL8JPPQp+ryGU4XZWyky7p6KPd7zmUlp7YVjLUnyTXWhu7K0Dy0C0NjDNYcY7DZzp1T+zntPDB/MRjk2X5O01X/eGhxWFGb36MNobzMw3s9ObQ/VzHboJ0q/Yvc2ZdqTg5leRL7UuXPA/PXlxpCuxjzefby2upLDaW8rPS+VM5tD4QBhp8CnkbI6x+Rfv9u5GDCQkJXAZ8grGzcxCI9I7czfk/fj9lXviz6hcS+71RIR5IcJDgQ8SBBVxJszqMS+77aeS6WeguhIwJh6etfJDwsKToJeHTN8+wPXB7tu7zwb2VtDTw02le3A1vn+KuZ3vlr277A2aRfOj022rcJ+HXGXz49lLBUd1cvn+6Y2HdrYt8snprY18RLEKnZxm5uIN2mpcrzTyqksxY4PNp3N+nVx2YV5+37TJ/5qCl16wgID4DrHF9G0w/rdgMOSez/Yo00oZnrOskrGJ8978OEh+Ozehghj0VdvEByE/B+QvD8ZmBj4mdSsxVN8zLgc4vbM2rlbov7JPY10Q9p80W0VD1cdfXDnYFfivZtBv62YnpFOdXDubddua5ukGMdlOvfssu2Pfc6oM12UeOGer2N1cYZq5W3FmO1oq5itaHEadBeHZljH6mMNmI1gP9I7KvyfHM5xxFeFhtt36faF73z0KfqazBJW2VspMu6egj3e+5lpa+2NXVuyKOvnGO5yrkf2VUZmod2YWiMwZpjDDbOGGxczjEY5Nl+zqrN/vHQ4rCiNr9Hy728zMt7PTm0PxsIq3stJ4fJMZpmX6o5OZTlSexLLc++VP7t4nJ8np3WVl9qCOVlHvpSObc9scuAtwL3B54PnEl4DpayLfBiwnf8lxBWJYwHbFb1uejzKkJZLCtePTmVtiTNJG4Mlacbos8OEmxOqpEvOytQk4NtDwdOXPz/HxBmwbhj8b9/Xfi5bYB/AB4O3FbxXPsBn4/2XVb4t7IOYfwhSpnOf90ZhnKaxXRfwqoUa6P97yEEjCmbCS+fwtIZZh5O6JgeyXhd0LTUMt53VUzrZdHn25g8q04ZqaCvah4hzPhTfIByPs08+EsFS1Xy+TLGZy75FGEWq6r6ulcezHggX6aO2Jbxh11dDxKsM/POL5GehebMGmlCuCbxdW3qujwrse+MkmmkBuN3WT9vJNS9OwEnRP8Wzzi4nGKZqHMPFj0ise9fG0g3Lr9N1cGQrodvr5jWC4Adon2n084Km9BfPZx725XjasyQZx3UZPlvUpdte+51QN2YROUM8Xobqxmr5dRHiBmrLW8ocRq0F6vl2EeqoslYDcI1ODHal3phpo69gbex9CWKt1GtLzTEPlWZMtL1M5yUpsvYSJd19RDu99zLSp/fGRhrzy7XWBu6K0NDbBdyj/3qMgYzBmuTMdi4nGMwyLP9LKuN/vHQ4rCiNr9Hy728zMt7Pbm0Px8jvWJd0cUl8zQE9qXsS7XJvtS4nPtSubeLs5r359mxtvpSQygv89CXyrntmWQjcNridj/gVcArF/8/5QHAOwmL9XwW+L/AvzHbKtAp/wy8Kdr3BODrJdN5fPT5Tpp5j1CSlKnfIjQ+xS3nAZ5XsjSvHyxx7CMZ/12PKnH8CYnjp3lL4uf/pMT5ILwYGKfx6pJpAOwC/Gjx+LsYn3HiE4nzxKsZzGqPxePfQyhLo22vwv6yXpXI314ljj8jOrZsAL8+Ov74Esc3aV/CYMuq5Wo18HeJ479DesWpJh2eOG+V2WqflkjnnGayyNpE2rPMvjbJZwrpXEF6trAqvsh4Pp9eMo17EH63YhqbGZ/Rqox9Evl6bY30yqhbRxyWOP65DedxJHWd6g5aOi+R5nepv3x96rret2aaEPJ1VyLt1Kx/05weHV9nJsRjCV+k/GmFYx/G+O/yvpJpXFo49hUV8hDbhvF7/DsNpAtwVpTuOQ2lC2EigSbq4VWEeyCu4+JZpKrKqR5em8hLLm1XG/VdE3KsgyBd/q+umNaJwPWL208JMz9W0XXbnnsdULe/kZvi71F2MpsuDO1674uxmrFaXn2EImO15Q0pToN2YrVc+0h9x2oj30mk1VR8sZotXxCPtnOpPnncEPtUZWbUTT3jr1Mv5FLGuqyrc73fY7mVlaI+21Zj7XJyjLWh2zI0xHYh59ivCcZgxmBtMgZbuuUcg0Ge7Wcu/WMYVhxW1Nb3aDmWl9i8vNeTa/szL+xL2Zdqk32p4fSlcm0Xc+lLDbUfBe30pXItL7F56Evl2vaUtRVh4OnphEGE8e8Ub5cBf0AYYFvWakJZK6b3lZJpbEdYebmYxj9XyIskaUBewniDVOeLrbYNaZDgKxI/X7ZhfWUijSqDBE8tHP+biX/flfQLjcdUONdjEukUt89USPOvojTKdrDXRcd/qMSxj2D8d3h2yfM34f7AjxN5KTvwdNLLpxfS7r2/I2FGrzr1zWrCrEdxGlUGnk5yRSL9XSqk80RC8FHnvp3kRsbzmLqvpzkhkcaHa+brGYk0Hz3hZw8g1L9HAU+teV6oX0e8lvG8T5rtpa7nJM5VZ6n7X0mkt7C4v66613WS3RnP7/qSaawhzHhUTOP0Gnka3fvfr3DsYxn/fco86N2VpfXFSRXyEHtDIk9NlAkIqxm1VQfDeF9vgfIP5l6cSOPPG8xjbvVwrm1X0/VdU3Ksg0bi8r+RMOi3jN0JX4aO0vizGvnpo23PuQ5oq13sS/F3yXGQ4JCut7GasdpIbn2EEWO15Q0pToN26shc+0h9xmpFqb/pByqmFTspSvc66pfzIfWprix5/OsS+apzvXIpY13W1bne77HcykpRn22rsXZ5ucXa0H0ZGlK7kHPs1xRjsOYYg40zBlu65RyDQZ7tZy79YxheHDbS1vdoOZaX2Ly815Nr+zMv7Es1J9eybF9qefal8m0Xc+lLDbUfBe30pXItL7F56Evl2vbUsTdhAOBliXzF2wbglArn+J0onc2EicFmlXquN6ltlSStEE9nvPI/sNccTTekQYIPTPz8zcDOJc755UQaZQP+YwrHnjbl5x7D+IOU2yhfHl7KeJ6L24Ul04Px2Wo+W+LYvRN5KDPD0GsSx1eZ0aGOSS+dvqtien29fPqtxDmPKXH8iYnjFwhlrimnJNI/umQa9yLM0DQ6/myamVkJwgOu1DX4lxJpPJrxe/0a4N418/bbiXxNqu8+XviZM2ueF+rVERCC4uLx1zaQp0lS5fi4imk9gJDXOL2zaKbM1b2uk+xKuhzvUSKNv08c/7aK+Sk+DCr7whmL5y3m4wbKvWTz5Oj471Pv73cg4w9VzquZ5khq5vEm62CAjybO8ZwSx+/F+H1xKWEmqSbkWA/n2nY1Wd81Kbc6qChV/o8smUZxcpB11FuBrI+2Pec6oK12sS/F3yXHQYJDud7GaoGxWp59hBFjteUNKU6DdurIHPtIfcdqRasIdUYxvbuBh1RMb+QtUZrrgafUTBOG1acq+yLFh6Pj69QLOZWxLuvqHO/3lJzKSqzPttVYu7xUndhnrA3dl6EhtQtdx35vAN4dbVt3cF5jsPqMwdKMwbZsucdgkF/7mVP/GIYXh0G736PlVl5S5uG9npzbn3liX6q+nMuyfanl2ZfKs13MqS81xH4UtNeXyrG8pKz0vlTObU8TVhPGY3ya8QGldevA7YDLo3T+csZjVzHed3IVQUmaA6mBc4/qNUfTDWmQIMB/JY6ZdTWBoxPHLlBukOCBhIF+C8BPWb4z9PuJ851PWE56Vn8wId+j7bYSaUH4Mu7OKI3jSxx/VCIPh5U4/oPRsetKHNuE1cB3Gf8dTm4g3b9NpHt2zXSn+Y3E+f6b2crXa1g6O1ZxO7jBPD6Y8SXAzyUsET6LnQnLeY+OvZbw4nBTXsT4779+Mc+z1N2HEF4CLx5/J/C4BvJ2fJTupHt9Z5YuX/6rNc9bt46AUM8Vj//Xmnma5gzG/4ZVHpg8jvGl5BcIAWHdl1Sgmes6TWpmoN+Z8dj/lTh2AXhWxbzEM9H9Qolj9yDMilU8/k0lz/9mxn+XN5ZMY+QQxgcqXA/sWzG9WGq2sSbrYAgPJTdF55j1ntwZ+Fp07DrCg+2m5FgP59p2NVXftSGnOqgoVf4/VeL4YwvHbaZcrJPSR9ueax3QdrvYh+LvktsgwaFcb2O1wFgtyLGPMNJHfQ7DitWGEqdBu3Vkbn2kvmO12P0Zn8X4R1SbJfkejNf1dwLPrJnHkZXcp4q/zK5TL+RUxrquq3O732O5lZVYX20rGGtXkVusDd2XoZXcLtT179H5b+/ovMZg9RmDjTMG27JdzjBiMMir/cypfzwypDgM2v8eLafyEpuX93pybn/miX2p+nIuy/allmdfKsitXcytLzW0fhS025fKrbzE5qEvlXPb07Q9CYNqi4P969aBL4nS2cBs1+0NjF+zB1bMgyRpQPZnvBFqYvn1tgxtkOALEscsEDoA02ZbORq4Y8Kxsw4S3IYtwedG4IkzHLMa+FLinGWW7f7I4jE/T2zrF/9t9xLpPSyRnzJ/t/jhwXrKDXr8ZnT8GSWObcoT2DLYcwF4Z0Ppxi+fXgs8tKG0U3ZgvKO+QJg9Y9KMs7uzZaalG4HPRcfeSnMzF43ES7cvAO8jXK9pDgW+VzjmFsJS7E06mfHf/y8W//8nhHouZRXhYedN0fEbCcuJNyEeZHwH6Wv2nsLP/Ij6s/LWrSO2ZUvdNNreUTNP06xjPL/3mvHYrQmrzp1K+sH1hcDahvJZ97ouZ9RWFLdbCKvaTrIj8P7EcaNtr4p5eWuUzn8w26q/9yP9wtmsD/ZH/oHx32UTof3aYcY0diXMFnd7lM6NhDakKX8cpd9GHQzjs/0vsPzAyQcA/xkdcy3hC5gm5VoP59h21anv2pZTHRRLlf/XLHPMdoyXzSZewOirbc+xDmi7XexD8XfJbZDgkK63sdqWPoexWp59BDBWm8VQ4jRot47MrY/Ud6yW8jjCM85i2uuAFzJbnbcDYfbe+OWbdcCTGshf0UrsUzVdL+RUxrquq3O732O5lZVYX20rGGtXlVOsDf2UoZXYLjQhrs8v6ui8xmD1GYONy739LDIG2yKn9jOn/nHRkOKwtr9Hy6m8xOblvZ6c2595Yl+qvpzLsn2p5dmXCnJrF3PsSw2pHwXt9qVyKy+xeehL5dz2tGUVYRD3J9jSRtQZXBqX4yuZPpD2WYy3TWVWmJSkpDZeGFbz7kloPIteBPxTD3lJ+SCwfeHzC1m6jPYlhJl2Rk5b3CAEP+8t/Nt9GO84fYmly3ufQJgNBUJAdEzh3x5O6IwV/U30+XWERrXoA8DrGfdd4KOEL9huJAQFDyPMbHPE4s98FHhFdNzXgUsLnz9CmOkS4M8IAwUgzAby5MX/Xwf82+L/b2D8y8/i77onYWaTogVCR+Xuxc9nM/67j5xDmAkltRz37xAeeDyGsDx2yrOBXy58Lv4eI6cROuks5qnYcXktS2eHeDxhqeqRnxMeDI18k6VLL/8VS8vYS1jaYb6I8Dcb+SzdLL/8OEIA+AHCINOmrAY+Rhgc/BTC7Fpt+kVCWYwD2esJZewiwiCXPYHHAk8j/D1uJizH/S6WBpk3sXQJ7s2E8r2pRh63IwQ6R0b7zyUEJl9my+w9exDK868SBgWPfq8fL36+sEY+Ur7I0tmfvkIYVHwRoT7fBJxFuEevAXYCDgKez/hMQLctHntmQ3l7Llvq35G3EurhOwn38pvYMgvPAuEaf7nkeerWEbsB7y583ilKD8KDmh8WPr8b+H7JfEJ4eHlQ4fNWwK9FP3M3YZDYJFsDuwD3JcyIs33iZzYApxBWpKs60/GxhBmlR5a7rhDanAsqnm8/Qju4U7R/A+GF+M8S2uPNhLJ7BPBKwt/vEkKdUazrNwEfL3y+Bvi9GfPyGeB50b7LCL/fWYQ2d8Pi/t0I/YHnEdrnYntxJuGeKrti7iWElX9TbiDMbH4eoUzeQigzOxG+yDiEMDjhaYS6q+hiwn15ccn8jOxKuAZFT2LpA+G4Do7vt6p2IFzPI6L9nyS02RcQ2vNdCH2nFxMmUSheg68CL2VpP68JudbDfbdddeq7b1Bu4o8m5FQHxSaV/1MJX15+h1B2tiHM7vV0wsxf+y/+3EZCnf7nFc9f1FXbHsuhDijb3xh5F+33p5uyUPj/a2j2S4yyhn69jdWM1SDfPgIYq8WGFKdBt7Fabn2kvmO1SR4JnA7sHe2/hPDM8T8JX2jfsZiPexMGUzyG8Gw6fjHkDMJ1vK6h/I0MsU/Vdb2QUxnruu+d2/2ee1mJdfX3MtZembE29BNvD7FdGGkz9lvH0nj4VMbvs7YYg9VjDDac9tMYbLqc2s+c+sexHOOwPr5Hy6m8zOt7PTm3P/PGvlQ9OZdl+1JL2ZeaLKd2EfLtS+XYj4Lu+1K5lZd57Evl3PZ0YTfCO/p/S/X7Z2vCe4TPLey7jTCR8d8TyvBqQj38ekI5KQ60Px54e8VzS5IGZhXjy9svN3tml+KZLJbbTigcu6bksQssnY3g9RWOjzuREIKzPyE9+8qk7U5CMDvL71BcWTA1U1K83ZXIY9nfddqXy1cQOpUpz108/iVTjk+tqDRt+1Z0/AUljz+xcOw+JY9d7ndp2v1bSnc1oax15RjGl0df7m98IKG+umWZn606GCa2I+HL4Enn2ch43blACBw/QAhc2nBjdL7RKp9PZfLqo6ntPwiDeZu0LWF2rvhcmxmfkWQj8KqK56lbRzyr5PELjAeas7qhwrnKbOsIQft+FfNX9NMK5580sG1Wz2TpyjvLbZsJAe0uhBd3pv3s6SXy8XrCA69p6d1J+p5fIDyUOpbqE2Q8mNBPuHqZPMy6XQ/8T8rNCJXylArnju+3OnYivKQ06Vx3T9h/PeHBW1Mz1MZyrof7bLvq1Hd/WOO8deRSB6UsV/7jdnW0/RezrR4+q67a9pS+64Cy/Y3Rdt+a5+1SMd99ryS4Eq63sZqxWs59BGO1pYYUp0H3sVpOfaS+Y7Vp7k2YuG3SuWfZvs74S2JNG1qfqut6Iacy1kffO6f7PfeyEuvq72WsXa9cxXKJtaG/eHto7cJoayv2u2fiXK9r6VyTHIMxWFXGYMNpP43BlpdL+5lT/zgltzisr+/Rcikv8/peTy7tz7sIKxvNsk1bXWbojsG+VFW5lOUU+1JL2ZeaLpd2EfLuS+XWj4J++lI5lZd57Evl3PYMyVaEVTdT9/PdE/bfAvx6H5mVJPVrNCvNaDuu3+wssRIGCY48jjCjwrTO9i2EmQLWlvgdchokuC1hRodJK1GOlsV+64R/hzDzRpm8fKhw7HZM/hJz0vbswvHPKXnsAvUf+s+rQwgzeUy7H75NmC1nNJvFQVN+drSd2nA+j1jM513LnPenhEE+ByVTacYBifMWA7CHAF9g8oDkTYRVR1/YYh73I8zyMuk6bSbM+DJpefhZ1KkjAN5W8vhrKuZz/5LnmbTdAVxLmCHua8BfEx4KPYbmHgztUSFfNzd0/oMJL6ZMqwtuBf6RMIsWhLp+wzL5K/si1FaEGbBOYba2dIEwY9Kbae7B/FaEmZ2OJ8zKffuM+Vgg9OX+kTDL1A4N5ee4EuefdL814UhC3TbpRa0FQvk5j/D3mNYXq2sI9TB033bVre+eWfP8deRSB00yS/nfTChXxxBmDWtaF237NH3VAWX7GwvAVQ2duyvFvPc9SHAerveQGKuVN4Q+grFaMKQ4DfqL1XLqI+UQq01zMPCnLP/yx+g++wFwMnBYB3krGkqfqo96Iacy1kffO5f7fQhlJdb238tYu365miSHWBv6jbeH0i4s0G7s9/zoXBuA3Vs83yTGYOUZgwVDaD+NwWaXS/uZU/94klzisD6/R8uhvMzjez05tT83TzhHamt7gqK+2ZcqL6eyPIl9qcC+1GxyaBdHcu9L5dKPgv76UrmUl3nrSw2h7RmahxIGm06bMOEG4H2MryQqSbW0NTuUmncR8MDC5z8mLFWuduwMPJYQ0N6L0IG8jrC8+DfYsqz4EB1EmE3pPYTgJbYrIbj7CM2uNKLh2otwP+xDCHZ/Tlj2+pvk9eLvPQgDffcmPNTYijCodx1hZpafdJCHFxGC1KKDCUFj0d6Ea7ovYbDQDYQVys6l+lLlZT0AOBzYkzAz2m2Ea3Qe4ZpJsZ2B/8GWtvFOQnn9MeGB2MaO87OG8ABiDWFGqB0Ig/ZuAX4IXLj4/21aRViV6GDCfb3z4rZAuKduJTxU/B7zcV/tTKiH70t4WWeBUEZ+RigjN3WQhyHVw5BH2zUUudVBsbj8ryb0qX8EnL/4/23ru23PoQ6Q5o2x2uyG1Efouz7XsOTYR8ohVptk7WLe9iVcu1WEuO0WwnPfCwn3XJ/sUy0vhzLWR12d4/0+FLatk+VernKItaHfMjTv7cKngRcUPn+C5lYZqsIYbHbGYFrJcms/c+gfT7OW/OOwNuVWXla6nNqfmwnvX83iqcAXGzpvzuxLzS6nsrwc+1IqI8d2Mee+1FrsR+VWXlayIbU9Q7MjYdD3wYSyvJlwrb5PeMa5qb+sSZL6Fs+8MmmVOGk5zyCUod+a8jM3A2d3kx1pRTmZpXX1LTggX5K6ZD0sSZJS7CNIkiRJw3II4SWpUR/+buBBveZIZRiDSZL6kFP740qCqiOnsixJmg+2PZK0gqxe/keUiWujz7v1kgutBPsv/nfazEaXF35O0uwOiz5fQAiaJEndsB6WJEkp9hEkSZKk4dgGOIWl7zKcBFzUT3ZUgTGYJKkPtj9aKSzLkqSu2fZI0griIMHhuCb67CBBVTXrIME1hC/hJM3uEdHn83vJhSTNL+thSZKUYh9BkiRJGobVwMeARxf2fRb4o15yo6qMwSRJfbD90UphWZYkdc22R5JWEAcJDocrCaopo0GCl0/5mcsJ9cPalvMirSQHAPeK9n2rj4xI0pyyHpYkSSn2ESRJkqRh2A44DXhpYd8XgKOBTb3kSFUYg0mS+mD7o5XCsixJ6pptjyStMA4SHA4HCaop+wE3A7dO+ZnLF/+7/5SfkbRUvOQ6GCxJUpeshyVJUop9BEmSJGkY1gOXFD5/EDgKuLOf7KgiYzBJUh9sf7RSWJYlSV2z7ZEkqSfPBxYK24Z+syNJipzM0nr6FmBVrzmSpPliPSxJklLsI0iSJEnDcgLwnL4zocqMwSRJfbD90UphWZYkdc22R5JWmK37zoBmFq8kuDVwT8KKcJKk/sUzqnybEDRJkrphPSxJklLsI0iSJEnDckLfGVAtxmCSpD7Y/milsCxLkrpm2yNJK4yDBIcjHiQIsBsOEpSkPhwKHBvte0z0+X7AxwufLwZOajNTkjRHrIclSVKKfQRJkiRJ6o4xmCSpD7Y/Wiksy5Kkrtn2SJKUkV1YupzvAnB4rzmSpPn1e4zXycttH+olp5K0MlkPS5KkFPsIkiRJktQdYzBJUh9sf7RSWJYlSV2z7ZGkObC67wxoZrcCd0X7dusjI5KksSXWZ3F+47mQpPllPSxJklLsI0iSJElSd4zBJEl9sP3RSmFZliR1zbZHkqTMXMHS0fnH9JsdSZIkSZIkSZIkSZIkSZIkSZIkSVKfXElwWK6JPruSoCRJkiRJkiRJkiRJkiRJkiRJkiTNMQcJDsu10WcHCUqSJEmSJEmSJEmSJEmSJEmSJEnSHHOQ4LC4kqAkSZIkSZIkSZIkSZIkSZIkSZIk6f9zkOCwrIs+795LLiRJkiRJkiRJkiRJkiRJkiRJkiRJWXCQ4LBcHX3es5dcSJIkSZIkSZIkSZIkSZIkSZIkSZKy4CDBYYkHCe7VSy4kSZIkSZIkSZIkSZIkSZIkSZIkSVlwkOCwuJKgJEmSJEmSJEmSJEmSJEmSJEmSJEkDtQZYiLZdes2RJEmSJEmSJEmSJEmSJEmSJEmSJEmaydbAJpYOEjyw1xxJkiRJkiRJkiRJkiRJkiRJkiRJklgSYrkAAAKiSURBVHqzuu8MqJSNwHXRvr36yIgkSZIkSZIkSZIkSZIkSZIkSZIkqX8OEhyeq6PPDhKUJEmSJEmSJEmSJEmSJEmSJEmSpDnlIMHhiQcJ7tlLLiRJkiRJkiRJkiRJkiRJkiRJkiRJvXOQ4PC4kqAkSZIkSZIkSZIkSZIkSZIkSZIkCXCQ4BBdFX12JUFJkiRJkiRJkiRJkiRJkiRJkiRJmlMOEhweVxKUJEmSJEmSJEmSJEmSJEmSJEmSJAEOEhyieJCgKwlKkiRJkiRJkiRJkiRJkiRJkiRJ0pxykODwuJKgJEmSJEmSJEmSJEmSJEmSJEmSJEkDtTuwUNjW95sdSZIkSZIkSZIkSZIkSZIkSZIkSZJUxh0sHSi4W7/ZkSRJkiRJkiRJkiRJkiRJkiRJkiT1YXXfGVAlV0af9+klF5IkSZIkSZIkSZIkSZIkSZIkSZKkXjlIcJiuiD6v6SUXkiRJkiRJkiRJkiRJkiRJkiRJkqReOUhwmOJBgq4kKEmSJEmSJEmSJEmSJEmSJEmSJElzyEGCw+QgQUmSJEmSJEmSJEmSJEmSJEmSJEmSgwQHykGCkiRJkiRJkiRJkiRJkiRJkiRJkiQHCQ5UPEhwTS+5kCRJkiRJkiRJkiRJkiRJkiRJkiT1ykGCw+RKgpIkSZIkSZIkSZIkSZIkSZIkSZIkDdT2wEJhu7Hf7EiSJEmSJEmSJEmSJEmSJEmSJEmSpDKuZelAwR37zY4kSZIkSZIkSZIkSZIkSZIkSZIkqWur+86AKrsi+rx3L7mQJEmSJEmSJEmSJEmSJEmSJEmSJPXGQYLDFQ8SXNNLLiRJkiRJkiRJkiRJkiRJkiRJkiRJvXGQ4HDFgwT36SUXkiRJkiRJkiRJkiRJkiRJkiRJkqTe/D/SkJdV5hoUkwAAAABJRU5ErkJggg== $$o = \\begin{cases} m \\times depthBiasSlopeFactor + r \\times depthBiasConstantFactor & depthBiasClamp = 0\\ or\\ NaN \\\\ \\min(m \\times depthBiasSlopeFactor + r \\times depthBiasConstantFactor, depthBiasClamp) & depthBiasClamp > 0 \\\\ \\max(m \\times depthBiasSlopeFactor + r \\times depthBiasConstantFactor, depthBiasClamp) & depthBiasClamp \< 0 \\\\ \\end{cases}$$>>------ m is computed as described above. If the depth buffer uses a fixed-point--- representation, m is a function of depth values in the range [0,1], and--- o is applied to depth values in the same range.------ For fixed-point depth buffers, fragment depth values are always limited--- to the range [0,1] by clamping after depth bias addition is performed.--- Fragment depth values are clamped even when the depth buffer uses a--- floating-point representation.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_DEPTH_BIAS@ dynamic state enabled------ - If the--- <{html_spec_relative}#features-features-depthBiasClamp depth bias clamping>--- feature is not enabled, @depthBiasClamp@ /must/ be @0.0@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdSetDepthBias" vkCmdSetDepthBias :: ("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()--- | vkCmdSetBlendConstants - Set the values of blend constants------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @blendConstants@ is an array of four values specifying the R, G, B,--- and A components of the blend constant color used in blending,--- depending on the--- <{html_spec_relative}#framebuffer-blendfactors blend factor>.------ = Description--- #_description#------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdSetBlendConstants" vkCmdSetBlendConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()--- | vkCmdSetDepthBounds - Set the depth bounds test values for a command--- buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @minDepthBounds@ is the lower bound of the range of depth values--- used in the depth bounds test.------ - @maxDepthBounds@ is the upper bound of the range.------ = Description--- #_description#------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ dynamic state enabled------ - @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive------ - @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdSetDepthBounds" vkCmdSetDepthBounds :: ("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()--- | vkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the--- set of stencil state for which to update the compare mask.------ - @compareMask@ is the new value to use as the stencil compare mask.------ = Description--- #_description#------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'--- values------ - @faceMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'-foreign import ccall "vkCmdSetStencilCompareMask" vkCmdSetStencilCompareMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()--- | vkCmdSetStencilWriteMask - Set the stencil write mask dynamic state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the--- set of stencil state for which to update the write mask, as--- described above for 'vkCmdSetStencilCompareMask'.------ - @writeMask@ is the new value to use as the stencil write mask.------ = Description--- #_description#------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'--- values------ - @faceMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'-foreign import ccall "vkCmdSetStencilWriteMask" vkCmdSetStencilWriteMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()--- | vkCmdSetStencilReference - Set the stencil reference dynamic state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the--- set of stencil state for which to update the reference value, as--- described above for 'vkCmdSetStencilCompareMask'.------ - @reference@ is the new value to use as the stencil reference value.------ = Description--- #_description#------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'--- values------ - @faceMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'-foreign import ccall "vkCmdSetStencilReference" vkCmdSetStencilReference :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()--- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer that the descriptor sets will--- be bound to.------ - @pipelineBindPoint@ is a--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' indicating whether--- the descriptors will be used by graphics pipelines or compute--- pipelines. There is a separate set of bind points for each of--- graphics and compute, so binding one does not disturb the other.------ - @layout@ is a @VkPipelineLayout@ object used to program the--- bindings.------ - @firstSet@ is the set number of the first descriptor set to be--- bound.------ - @descriptorSetCount@ is the number of elements in the--- @pDescriptorSets@ array.------ - @pDescriptorSets@ is an array of handles to @VkDescriptorSet@--- objects describing the descriptor sets to write to.------ - @dynamicOffsetCount@ is the number of dynamic offsets in the--- @pDynamicOffsets@ array.------ - @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values--- specifying dynamic offsets.------ = Description--- #_description#------ @vkCmdBindDescriptorSets@ causes the sets numbered [@firstSet@..--- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in--- @pDescriptorSets@[0..@descriptorSetCount@-1] for subsequent rendering--- commands (either compute or graphics, according to the--- @pipelineBindPoint@). Any bindings that were previously applied via--- these sets are no longer valid.------ Once bound, a descriptor set affects rendering of subsequent graphics or--- compute commands in the command buffer until a different set is bound to--- the same set number, or else until the set is disturbed as described in--- <{html_spec_relative}#descriptorsets-compatibility Pipeline Layout Compatibility>.------ A compatible descriptor set /must/ be bound for all set numbers that any--- shaders in a pipeline access, at the time that a draw or dispatch--- command is recorded to execute using that pipeline. However, if none of--- the shaders in a pipeline statically use any bindings with a particular--- set number, then no descriptor set need be bound for that set number,--- even if the pipeline layout includes a non-trivial descriptor set layout--- for that set number.------ If any of the sets being bound include dynamic uniform or storage--- buffers, then @pDynamicOffsets@ includes one element for each array--- element in each dynamic descriptor type binding in each set. Values are--- taken from @pDynamicOffsets@ in an order such that all entries for set N--- come before set N+1; within a set, entries are ordered by the binding--- numbers in the descriptor set layouts; and within a binding array,--- elements are in order. @dynamicOffsetCount@ /must/ equal the total--- number of dynamic descriptors in the sets being bound.------ The effective offset used for dynamic uniform and storage buffer--- bindings is the sum of the relative offset taken from @pDynamicOffsets@,--- and the base address of the buffer plus base offset in the descriptor--- set. The length of the dynamic uniform and storage buffer bindings is--- the buffer range as specified in the descriptor set.------ Each of the @pDescriptorSets@ /must/ be compatible with the pipeline--- layout specified by @layout@. The layout used to program the bindings--- /must/ also be compatible with the pipeline used in subsequent graphics--- or compute commands, as defined in the--- <{html_spec_relative}#descriptorsets-compatibility Pipeline Layout Compatibility>--- section.------ The descriptor set contents bound by a call to @vkCmdBindDescriptorSets@--- /may/ be consumed at the following times:------ - during host execution of the command, or during shader execution of--- the resulting draws and dispatches, or any time in between.------ Thus, the contents of a descriptor set binding /must/ not be altered--- (overwritten by an update command, or freed) between the first point in--- time that it /may/ be consumed, and and when the command completes--- executing on the queue.------ The contents of @pDynamicOffsets@ are consumed immediately during--- execution of @vkCmdBindDescriptorSets@. Once all pending uses have--- completed, it is legal to update and reuse a descriptor set.------ == Valid Usage------ - Each element of @pDescriptorSets@ /must/ have been allocated with a--- @VkDescriptorSetLayout@ that matches (is the same as, or identically--- defined as) the @VkDescriptorSetLayout@ at set /n/ in @layout@,--- where /n/ is the sum of @firstSet@ and the index into--- @pDescriptorSets@------ - @dynamicOffsetCount@ /must/ be equal to the total number of dynamic--- descriptors in @pDescriptorSets@------ - The sum of @firstSet@ and @descriptorSetCount@ /must/ be less than--- or equal to @VkPipelineLayoutCreateInfo@::@setLayoutCount@ provided--- when @layout@ was created------ - @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s--- parent @VkCommandPool@’s queue family------ - Each element of @pDynamicOffsets@ /must/ satisfy the required--- alignment for the corresponding descriptor binding’s descriptor type------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - @pDescriptorSets@ /must/ be a valid pointer to an array of--- @descriptorSetCount@ valid @VkDescriptorSet@ handles------ - If @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a--- valid pointer to an array of @dynamicOffsetCount@ @uint32_t@ values------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - @descriptorSetCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @layout@, and the elements of--- @pDescriptorSets@ /must/ have been created, allocated, or retrieved--- from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'-foreign import ccall "vkCmdBindDescriptorSets" vkCmdBindDescriptorSets :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()--- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer being bound.------ - @offset@ is the starting offset in bytes within @buffer@ used in--- index buffer address calculations.------ - @indexType@ is a 'VkIndexType' value specifying whether indices are--- treated as 16 bits or 32 bits.------ = Description--- #_description#------ == Valid Usage------ - @offset@ /must/ be less than the size of @buffer@------ - The sum of @offset@ and the address of the range of @VkDeviceMemory@--- object that is backing @buffer@, /must/ be a multiple of the type--- indicated by @indexType@------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDEX_BUFFER_BIT@ flag------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @indexType@ /must/ be a valid 'VkIndexType' value------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,--- 'VkIndexType'-foreign import ccall "vkCmdBindIndexBuffer" vkCmdBindIndexBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()--- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @firstBinding@ is the index of the first vertex input binding whose--- state is updated by the command.------ - @bindingCount@ is the number of vertex input bindings whose state is--- updated by the command.------ - @pBuffers@ is a pointer to an array of buffer handles.------ - @pOffsets@ is a pointer to an array of buffer offsets.------ = Description--- #_description#------ The values taken from elements i of @pBuffers@ and @pOffsets@ replace--- the current state for the vertex input binding @firstBinding@ + i, for i--- in [0, @bindingCount@). The vertex input binding is updated to start at--- the offset indicated by @pOffsets@[i] from the start of the buffer--- @pBuffers@[i]. All vertex input attributes that use each of these--- bindings will use these updated addresses in their address calculations--- for subsequent draw commands.------ == Valid Usage------ - @firstBinding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - The sum of @firstBinding@ and @bindingCount@ /must/ be less than or--- equal to @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - All elements of @pOffsets@ /must/ be less than the size of the--- corresponding element in @pBuffers@------ - All elements of @pBuffers@ /must/ have been created with the--- @VK_BUFFER_USAGE_VERTEX_BUFFER_BIT@ flag------ - Each element of @pBuffers@ that is non-sparse /must/ be bound--- completely and contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@--- valid @VkBuffer@ handles------ - @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@--- @VkDeviceSize@ values------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - @bindingCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and the elements of @pBuffers@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall "vkCmdBindVertexBuffers" vkCmdBindVertexBuffers :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()--- | vkCmdDraw - Draw primitives------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @vertexCount@ is the number of vertices to draw.------ - @instanceCount@ is the number of instances to draw.------ - @firstVertex@ is the index of the first vertex to draw.------ - @firstInstance@ is the instance ID of the first instance to draw.------ = Description--- #_description#------ When the command is executed, primitives are assembled using the current--- primitive topology and @vertexCount@ consecutive vertex indices with the--- first @vertexIndex@ value equal to @firstVertex@. The primitives are--- drawn @instanceCount@ times with @instanceIndex@ starting with--- @firstInstance@ and increasing sequentially for each instance. The--- assembled primitives execute the bound graphics pipeline.------ == Valid Usage------ - The current render pass /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdDraw" vkCmdDraw :: ("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()--- | vkCmdDrawIndexed - Issue an indexed draw into a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @indexCount@ is the number of vertices to draw.------ - @instanceCount@ is the number of instances to draw.------ - @firstIndex@ is the base index within the index buffer.------ - @vertexOffset@ is the value added to the vertex index before--- indexing into the vertex buffer.------ - @firstInstance@ is the instance ID of the first instance to draw.------ = Description--- #_description#------ When the command is executed, primitives are assembled using the current--- primitive topology and @indexCount@ vertices whose indices are retrieved--- from the index buffer. The index buffer is treated as an array of--- tightly packed unsigned integers of size defined by the--- 'vkCmdBindIndexBuffer'::@indexType@ parameter with which the buffer was--- bound.------ The first vertex index is at an offset of @firstIndex@ * @indexSize@ +--- @offset@ within the bound index buffer, where @offset@ is the offset--- specified by @vkCmdBindIndexBuffer@ and @indexSize@ is the byte size of--- the type specified by @indexType@. Subsequent index values are retrieved--- from consecutive locations in the index buffer. Indices are first--- compared to the primitive restart value, then zero extended to 32 bits--- (if the @indexType@ is @VK_INDEX_TYPE_UINT16@) and have @vertexOffset@--- added to them, before being supplied as the @vertexIndex@ value.------ The primitives are drawn @instanceCount@ times with @instanceIndex@--- starting with @firstInstance@ and increasing sequentially for each--- instance. The assembled primitives execute the bound graphics pipeline.------ == Valid Usage------ - The current render pass /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be--- less than or equal to the size of the bound index buffer, with--- indexSize being based on the type specified by @indexType@, where--- the index buffer, @indexType@, and @offset@ are specified via--- @vkCmdBindIndexBuffer@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdDrawIndexed" vkCmdDrawIndexed :: ("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()--- | vkCmdDrawIndirect - Issue an indirect draw into a command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer containing draw parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ - @drawCount@ is the number of draws to execute, and /can/ be zero.------ - @stride@ is the byte stride between successive sets of draw--- parameters.------ = Description--- #_description#------ @vkCmdDrawIndirect@ behaves similarly to 'vkCmdDraw' except that the--- parameters are read by the device from a buffer during execution.--- @drawCount@ draws are executed by the command, with parameters taken--- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for--- each successive draw. The parameters of each draw are encoded in an--- array of 'VkDrawIndirectCommand' structures. If @drawCount@ is less than--- or equal to one, @stride@ is ignored.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of--- @4@ and /must/ be greater than or equal to--- @sizeof@(@VkDrawIndirectCommand@)------ - If the--- <{html_spec_relative}#features-features-multiDrawIndirect multi-draw indirect>--- feature is not enabled, @drawCount@ /must/ be @0@ or @1@------ - If the--- <{html_spec_relative}#features-features-drawIndirectFirstInstance drawIndirectFirstInstance>--- feature is not enabled, all the @firstInstance@ members of the--- @VkDrawIndirectCommand@ structures accessed by this command /must/--- be @0@------ - The current render pass /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - If @drawCount@ is equal to @1@, (@offset@ +--- @sizeof@('VkDrawIndirectCommand')) /must/ be less than or equal to--- the size of @buffer@------ - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) +--- @offset@ + @sizeof@('VkDrawIndirectCommand')) /must/ be less than or--- equal to the size of @buffer@------ - @drawCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall "vkCmdDrawIndirect" vkCmdDrawIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()--- | vkCmdDrawIndexedIndirect - Perform an indexed indirect draw------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer containing draw parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ - @drawCount@ is the number of draws to execute, and /can/ be zero.------ - @stride@ is the byte stride between successive sets of draw--- parameters.------ = Description--- #_description#------ @vkCmdDrawIndexedIndirect@ behaves similarly to 'vkCmdDrawIndexed'--- except that the parameters are read by the device from a buffer during--- execution. @drawCount@ draws are executed by the command, with--- parameters taken from @buffer@ starting at @offset@ and increasing by--- @stride@ bytes for each successive draw. The parameters of each draw are--- encoded in an array of 'VkDrawIndexedIndirectCommand' structures. If--- @drawCount@ is less than or equal to one, @stride@ is ignored.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of--- @4@ and /must/ be greater than or equal to--- @sizeof@(@VkDrawIndexedIndirectCommand@)------ - If the--- <{html_spec_relative}#features-features-multiDrawIndirect multi-draw indirect>--- feature is not enabled, @drawCount@ /must/ be @0@ or @1@------ - If the--- <{html_spec_relative}#features-features-drawIndirectFirstInstance drawIndirectFirstInstance>--- feature is not enabled, all the @firstInstance@ members of the--- @VkDrawIndexedIndirectCommand@ structures accessed by this command--- /must/ be @0@------ - The current render pass /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - If @drawCount@ is equal to @1@, (@offset@ +--- @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less than or--- equal to the size of @buffer@------ - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) +--- @offset@ + @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less--- than or equal to the size of @buffer@------ - @drawCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall "vkCmdDrawIndexedIndirect" vkCmdDrawIndexedIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()--- | vkCmdDispatch - Dispatch compute work items------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @groupCountX@ is the number of local workgroups to dispatch in the X--- dimension.------ - @groupCountY@ is the number of local workgroups to dispatch in the Y--- dimension.------ - @groupCountZ@ is the number of local workgroups to dispatch in the Z--- dimension.------ = Description--- #_description#------ When the command is executed, a global workgroup consisting of--- groupCountX × groupCountY × groupCountZ local workgroups is assembled.------ == Valid Usage------ - @groupCountX@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]------ - @groupCountY@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]------ - @groupCountZ@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_COMPUTE@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - A valid compute pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_COMPUTE@------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for push constants with the--- one used to create the current @VkPipeline@, as described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - This command /must/ only be called outside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Compute | Compute |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdDispatch" vkCmdDispatch :: ("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()--- | vkCmdDispatchIndirect - Dispatch compute work items using indirect--- parameters------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @buffer@ is the buffer containing dispatch parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ = Description--- #_description#------ @vkCmdDispatchIndirect@ behaves similarly to 'vkCmdDispatch' except that--- the parameters are read by the device from a buffer during execution.--- The parameters of the dispatch are encoded in a--- 'VkDispatchIndirectCommand' structure taken from @buffer@ starting at--- @offset@.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_COMPUTE@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - A valid compute pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_COMPUTE@------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - The sum of @offset@ and the size of @VkDispatchIndirectCommand@--- /must/ be less than or equal to the size of @buffer@------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for push constants with the--- one used to create the current @VkPipeline@, as described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Compute | Compute |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall "vkCmdDispatchIndirect" vkCmdDispatchIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()--- | vkCmdCopyBuffer - Copy data between buffer regions------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcBuffer@ is the source buffer.------ - @dstBuffer@ is the destination buffer.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkBufferCopy' structures--- specifying the regions to copy.------ = Description--- #_description#------ Each region in @pRegions@ is copied from the source buffer to the same--- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be--- the same buffer or alias the same memory, but the result is undefined if--- the copy regions overlap in memory.------ == Valid Usage------ - The @size@ member of each element of @pRegions@ /must/ be greater--- than @0@------ - The @srcOffset@ member of each element of @pRegions@ /must/ be less--- than the size of @srcBuffer@------ - The @dstOffset@ member of each element of @pRegions@ /must/ be less--- than the size of @dstBuffer@------ - The @size@ member of each element of @pRegions@ /must/ be less than--- or equal to the size of @srcBuffer@ minus @srcOffset@------ - The @size@ member of each element of @pRegions@ /must/ be less than--- or equal to the size of @dstBuffer@ minus @dstOffset@------ - The union of the source regions, and the union of the destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcBuffer@ /must/ be a valid @VkBuffer@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- @VkBufferCopy@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstBuffer@, and @srcBuffer@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferCopy',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdCopyBuffer" vkCmdCopyBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()--- | vkCmdCopyImage - Copy data between images------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the current layout of the source image--- subresource.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the current layout of the destination image--- subresource.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkImageCopy' structures--- specifying the regions to copy.------ = Description--- #_description#------ Each region in @pRegions@ is copied from the source image to the same--- region of the destination image. @srcImage@ and @dstImage@ /can/ be the--- same image or alias the same memory.------ The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats--- are considered compatible if their element size is the same between both--- formats. For example, @VK_FORMAT_R8G8B8A8_UNORM@ is compatible with--- @VK_FORMAT_R32_UINT@ because both texels are 4 bytes in size.--- Depth\/stencil formats /must/ match exactly.------ @vkCmdCopyImage@ allows copying between /size-compatible/ compressed and--- uncompressed internal formats. Formats are size-compatible if the--- element size of the uncompressed format is equal to the element size--- (compressed texel block size) of the compressed format. Such a copy does--- not perform on-the-fly compression or decompression. When copying from--- an uncompressed format to a compressed format, each texel of--- uncompressed data of the source image is copied as a raw value to the--- corresponding compressed texel block of the destination image. When--- copying from a compressed format to an uncompressed format, each--- compressed texel block of the source image is copied as a raw value to--- the corresponding texel of uncompressed data in the destination image.--- Thus, for example, it is legal to copy between a 128-bit uncompressed--- format and a compressed format which has a 128-bit sized compressed--- texel block representing 4×4 texels (using 8 bits per texel), or between--- a 64-bit uncompressed format and a compressed format which has a 64-bit--- sized compressed texel block representing 4×4 texels (using 4 bits per--- texel).------ When copying between compressed and uncompressed formats the @extent@--- members represent the texel dimensions of the source image and not the--- destination. When copying from a compressed image to an uncompressed--- image the image texel dimensions written to the uncompressed image will--- be source extent divided by the compressed texel block dimensions. When--- copying from an uncompressed image to a compressed image the image texel--- dimensions written to the compressed image will be the source extent--- multiplied by the compressed texel block dimensions. In both cases the--- number of bytes read and the number of bytes written will be identical.------ Copying to or from block-compressed images is typically done in--- multiples of the compressed texel block size. For this reason the--- @extent@ /must/ be a multiple of the compressed texel block dimension.--- There is one exception to this rule which is /required/ to handle--- compressed images created with dimensions that are not a multiple of the--- compressed texel block dimensions: if the @srcImage@ is compressed,--- then:------ - If @extent.width@ is not a multiple of the compressed texel block--- width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image--- subresource width.------ - If @extent.height@ is not a multiple of the compressed texel block--- height, then (@extent.height@ + @srcOffset.y@) /must/ equal the--- image subresource height.------ - If @extent.depth@ is not a multiple of the compressed texel block--- depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image--- subresource depth.------ Similarly, if the @dstImage@ is compressed, then:------ - If @extent.width@ is not a multiple of the compressed texel block--- width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image--- subresource width.------ - If @extent.height@ is not a multiple of the compressed texel block--- height, then (@extent.height@ + @dstOffset.y@) /must/ equal the--- image subresource height.------ - If @extent.depth@ is not a multiple of the compressed texel block--- depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image--- subresource depth.------ This allows the last compressed texel block of the image in each--- non-multiple dimension to be included as a source or destination of the--- copy.------ @vkCmdCopyImage@ /can/ be used to copy image data between multisample--- images, but both images /must/ have the same number of samples.------ == Valid Usage------ - The source region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcImage@------ - The destination region specified by each element of @pRegions@--- /must/ be a region that is contained within @dstImage@------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - @dstImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - The 'Graphics.Vulkan.Core10.Core.VkFormat' of each of @srcImage@ and--- @dstImage@ /must/ be compatible, as defined--- <{html_spec_relative}#copies-images-format-compatibility below>------ - The sample count of @srcImage@ and @dstImage@ /must/ match------ - The @srcSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcOffset@ and and @extent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ - The @dstOffset@ and and @extent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkImageCopy@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageCopy',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall "vkCmdCopyImage" vkCmdCopyImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()--- | vkCmdBlitImage - Copy regions of an image, potentially performing format--- conversion,------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the layout of the source image subresources for--- the blit.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the layout of the destination image subresources--- for the blit.------ - @regionCount@ is the number of regions to blit.------ - @pRegions@ is a pointer to an array of 'VkImageBlit' structures--- specifying the regions to blit.------ - @filter@ is a 'Graphics.Vulkan.Core10.Sampler.VkFilter' specifying--- the filter to apply if the blits require scaling.------ = Description--- #_description#------ @vkCmdBlitImage@ /must/ not be used for multisampled source or--- destination images. Use 'vkCmdResolveImage' for this purpose.------ As the sizes of the source and destination extents /can/ differ in any--- dimension, texels in the source extent are scaled and filtered to the--- destination extent. Scaling occurs via the following operations:------ - For each destination texel, the integer coordinate of that texel is--- converted to an unnormalized texture coordinate, using the effective--- inverse of the equations described in--- <{html_spec_relative}#textures-unnormalized-to-integer unnormalized to integer conversion>:------ []--- ubase = i + ½------ []--- vbase = j + ½------ []--- wbase = k + ½------ - These base coordinates are then offset by the first destination--- offset:------ []--- uoffset = ubase - xdst0------ []--- voffset = vbase - ydst0------ []--- woffset = wbase - zdst0------ []--- aoffset = a - @baseArrayCount@dst------ - The scale is determined from the source and destination regions, and--- applied to the offset coordinates:------ []--- scale_u = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)------ []--- scale_v = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)------ []--- scale_w = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)------ []--- uscaled = uoffset * scaleu------ []--- vscaled = voffset * scalev------ []--- wscaled = woffset * scalew------ - Finally the source offset is added to the scaled coordinates, to--- determine the final unnormalized coordinates used to sample from--- @srcImage@:------ []--- u = uscaled + xsrc0------ []--- v = vscaled + ysrc0------ []--- w = wscaled + zsrc0------ []--- q = @mipLevel@------ []--- a = aoffset + @baseArrayCount@src------ These coordinates are used to sample from the source image, as described--- in <{html_spec_relative}#textures Image Operations chapter>, with the--- filter mode equal to that of @filter@, a mipmap mode of--- @VK_SAMPLER_MIPMAP_MODE_NEAREST@ and an address mode of--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@. Implementations /must/ clamp at--- the edge of the source image, and /may/ additionally clamp to the edge--- of the source region.------ __Note__------ Due to allowable rounding errors in the generation of the source texture--- coordinates, it is not always possible to guarantee exactly which source--- texels will be sampled for a given blit. As rounding errors are--- implementation dependent, the exact results of a blitting operation are--- also implementation dependent.------ Blits are done layer by layer starting with the @baseArrayLayer@ member--- of @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are blitted to the destination image.------ 3D textures are blitted slice by slice. Slices in the source region--- bounded by @srcOffsets@[0].@z@ and @srcOffsets@[1].@z@ are copied to--- slices in the destination region bounded by @dstOffsets@[0].@z@ and--- @dstOffsets@[1].@z@. For each destination slice, a source __z__--- coordinate is linearly interpolated between @srcOffsets@[0].@z@ and--- @srcOffsets@[1].@z@. If the @filter@ parameter is @VK_FILTER_LINEAR@--- then the value sampled from the source image is taken by doing linear--- filtering using the interpolated __z__ coordinate. If @filter@ parameter--- is @VK_FILTER_NEAREST@ then value sampled from the source image is taken--- from the single nearest slice (with undefined rounding mode).------ The following filtering and conversion rules apply:------ - Integer formats /can/ only be converted to other integer formats--- with the same signedness.------ - No format conversion is supported between depth\/stencil images. The--- formats /must/ match.------ - Format conversions on unorm, snorm, unscaled and packed float--- formats of the copied aspect of the image are performed by first--- converting the pixels to float values.------ - For sRGB source formats, nonlinear RGB values are converted to--- linear representation prior to filtering.------ - After filtering, the float values are first clamped and then cast to--- the destination image format. In case of sRGB destination format,--- linear RGB values are converted to nonlinear representation before--- writing the pixel to the image.------ Signed and unsigned integers are converted by first clamping to the--- representable range of the destination format, then casting the value.------ == Valid Usage------ - The source region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcImage@------ - The destination region specified by each element of @pRegions@--- /must/ be a region that is contained within @dstImage@------ - The union of all destination regions, specified by the elements of--- @pRegions@, /must/ not overlap in memory with any texel that /may/--- be sampled during the blit operation------ - @srcImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @srcImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - @dstImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_BLIT_DST_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @dstImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - The sample count of @srcImage@ and @dstImage@ /must/ both be equal--- to @VK_SAMPLE_COUNT_1_BIT@------ - If either of @srcImage@ or @dstImage@ was created with a signed--- integer 'Graphics.Vulkan.Core10.Core.VkFormat', the other /must/--- also have been created with a signed integer--- 'Graphics.Vulkan.Core10.Core.VkFormat'------ - If either of @srcImage@ or @dstImage@ was created with an unsigned--- integer 'Graphics.Vulkan.Core10.Core.VkFormat', the other /must/--- also have been created with an unsigned integer--- 'Graphics.Vulkan.Core10.Core.VkFormat'------ - If either of @srcImage@ or @dstImage@ was created with a--- depth\/stencil format, the other /must/ have exactly the same format------ - If @srcImage@ was created with a depth\/stencil format, @filter@--- /must/ be @VK_FILTER_NEAREST@------ - @srcImage@ /must/ have been created with a @samples@ value of--- @VK_SAMPLE_COUNT_1_BIT@------ - @dstImage@ /must/ have been created with a @samples@ value of--- @VK_SAMPLE_COUNT_1_BIT@------ - If @filter@ is @VK_FILTER_LINEAR@, @srcImage@ /must/ be of a format--- which supports linear filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - The @srcSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkImageBlit@ structures------ - @filter@ /must/ be a valid 'Graphics.Vulkan.Core10.Sampler.VkFilter'--- value------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | Transfer |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Sampler.VkFilter',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageBlit',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall "vkCmdBlitImage" vkCmdBlitImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()--- | vkCmdCopyBufferToImage - Copy data from a buffer into an image------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcBuffer@ is the source buffer.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the layout of the destination image subresources--- for the copy.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkBufferImageCopy'--- structures specifying the regions to copy.------ = Description--- #_description#------ Each region in @pRegions@ is copied from the specified region of the--- source buffer to the specified region of the destination image.------ == Valid Usage------ - The buffer region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcBuffer@------ - The image region specified by each element of @pRegions@ /must/ be a--- region that is contained within @dstImage@------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImage@ /must/ have a sample count equal to--- @VK_SAMPLE_COUNT_1_BIT@------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - The @imageSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @imageSubresource.baseArrayLayer@ +--- @imageSubresource.layerCount@ of each element of @pRegions@ /must/--- be less than or equal to the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @imageOffset@ and and @imageExtent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcBuffer@ /must/ be a valid @VkBuffer@ handle------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkBufferImageCopy@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcBuffer@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall "vkCmdCopyBufferToImage" vkCmdCopyBufferToImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()--- | vkCmdCopyImageToBuffer - Copy image data into a buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the layout of the source image subresources for--- the copy.------ - @dstBuffer@ is the destination buffer.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkBufferImageCopy'--- structures specifying the regions to copy.------ = Description--- #_description#------ Each region in @pRegions@ is copied from the specified region of the--- source image to the specified region of the destination buffer.------ == Valid Usage------ - The image region specified by each element of @pRegions@ /must/ be a--- region that is contained within @srcImage@------ - The buffer region specified by each element of @pRegions@ /must/ be--- a region that is contained within @dstBuffer@------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImage@ /must/ have a sample count equal to--- @VK_SAMPLE_COUNT_1_BIT@------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - The @imageSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @imageSubresource.baseArrayLayer@ +--- @imageSubresource.layerCount@ of each element of @pRegions@ /must/--- be less than or equal to the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @imageOffset@ and and @imageExtent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkBufferImageCopy@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstBuffer@, and @srcImage@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall "vkCmdCopyImageToBuffer" vkCmdCopyImageToBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()--- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @dstBuffer@ is a handle to the buffer to be updated.------ - @dstOffset@ is the byte offset into the buffer to start updating,--- and /must/ be a multiple of 4.------ - @dataSize@ is the number of bytes to update, and /must/ be a--- multiple of 4.------ - @pData@ is a pointer to the source data for the buffer update, and--- /must/ be at least @dataSize@ bytes in size.------ = Description--- #_description#------ @dataSize@ /must/ be less than or equal to 65536 bytes. For larger--- updates, applications /can/ use buffer to buffer--- <{html_spec_relative}#copies-buffers copies>.------ __Note__------ Buffer updates performed with @vkCmdUpdateBuffer@ first copy the data--- into command buffer memory when the command is recorded (which requires--- additional storage and may incur an additional allocation), and then--- copy the data from the command buffer into @dstBuffer@ when the command--- is executed on a device.------ The additional cost of this functionality compared to--- <{html_spec_relative}#copies-buffers buffer to buffer copies> means it--- is only recommended for very small amounts of data, and is why it is--- limited to only 65536 bytes.------ Applications /can/ work around this by issuing multiple--- @vkCmdUpdateBuffer@ commands to different ranges of the same buffer, but--- it is strongly recommended that they /should/ not.------ The source data is copied from the user pointer to the command buffer--- when the command is called.------ @vkCmdUpdateBuffer@ is only allowed outside of a render pass. This--- command is treated as “transfer” operation, for the purposes of--- synchronization barriers. The @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ /must/--- be specified in @usage@ of--- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo' in order for the--- buffer to be compatible with @vkCmdUpdateBuffer@.------ == Valid Usage------ - @dstOffset@ /must/ be less than the size of @dstBuffer@------ - @dataSize@ /must/ be less than or equal to the size of @dstBuffer@--- minus @dstOffset@------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstOffset@ /must/ be a multiple of @4@------ - @dataSize@ /must/ be less than or equal to @65536@------ - @dataSize@ /must/ be a multiple of @4@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @dataSize@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall "vkCmdUpdateBuffer" vkCmdUpdateBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()--- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @dstBuffer@ is the buffer to be filled.------ - @dstOffset@ is the byte offset into the buffer at which to start--- filling, and /must/ be a multiple of 4.------ - @size@ is the number of bytes to fill, and /must/ be either a--- multiple of 4, or @VK_WHOLE_SIZE@ to fill the range from @offset@ to--- the end of the buffer. If @VK_WHOLE_SIZE@ is used and the remaining--- size of the buffer is not a multiple of 4, then the nearest smaller--- multiple is used.------ - @data@ is the 4-byte word written repeatedly to the buffer to fill--- @size@ bytes of data. The data word is written to memory according--- to the host endianness.------ = Description--- #_description#------ @vkCmdFillBuffer@ is treated as “transfer” operation for the purposes of--- synchronization barriers. The @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ /must/--- be specified in @usage@ of @VkBufferCreateInfo@ in order for the buffer--- to be compatible with @vkCmdFillBuffer@.------ == Valid Usage------ - @dstOffset@ /must/ be less than the size of @dstBuffer@------ - @dstOffset@ /must/ be a multiple of @4@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater--- than @0@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less--- than or equal to the size of @dstBuffer@ minus @dstOffset@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be a--- multiple of @4@------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics or compute operations------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall "vkCmdFillBuffer" vkCmdFillBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()--- | vkCmdClearColorImage - Clear regions of a color image------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @image@ is the image to be cleared.------ - @imageLayout@ specifies the current layout of the image subresource--- ranges to be cleared, and /must/ be @VK_IMAGE_LAYOUT_GENERAL@ or--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@.------ - @pColor@ is a pointer to a 'VkClearColorValue' structure that--- contains the values the image subresource ranges will be cleared to--- (see--- <{html_spec_relative}#clears-values {html_spec_relative}#clears-values>--- below).------ - @rangeCount@ is the number of image subresource range structures in--- @pRanges@.------ - @pRanges@ points to an array of--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- structures that describe a range of mipmap levels, array layers, and--- aspects to be cleared, as described in--- <{html_spec_relative}#resources-image-views Image Views>. The--- @aspectMask@ of all image subresource ranges /must/ only include--- @VK_IMAGE_ASPECT_COLOR_BIT@.------ = Description--- #_description#------ Each specified range in @pRanges@ is cleared to the value specified by--- @pColor@.------ == Valid Usage------ - @image@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @image@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @imageLayout@ /must/ specify the layout of the image subresource--- ranges of @image@ specified in @pRanges@ at the time this command is--- executed on a @VkDevice@------ - @imageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseMipLevel@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @levelCount@ member is not--- @VK_REMAINING_MIP_LEVELS@, then @baseMipLevel@ + @levelCount@ /must/--- be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseArrayLayer@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @layerCount@ member is not--- @VK_REMAINING_ARRAY_LAYERS@, then @baseArrayLayer@ + @layerCount@--- /must/ be less than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - @image@ /must/ not have a compressed or depth\/stencil format------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @imageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pColor@ /must/ be a valid pointer to a valid @VkClearColorValue@--- union------ - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@--- valid @VkImageSubresourceRange@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @rangeCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @image@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | Transfer |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'VkClearColorValue', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'-foreign import ccall "vkCmdClearColorImage" vkCmdClearColorImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()--- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil--- image------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @image@ is the image to be cleared.------ - @imageLayout@ specifies the current layout of the image subresource--- ranges to be cleared, and /must/ be @VK_IMAGE_LAYOUT_GENERAL@ or--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@.------ - @pDepthStencil@ is a pointer to a 'VkClearDepthStencilValue'--- structure that contains the values the depth and stencil image--- subresource ranges will be cleared to (see--- <{html_spec_relative}#clears-values {html_spec_relative}#clears-values>--- below).------ - @rangeCount@ is the number of image subresource range structures in--- @pRanges@.------ - @pRanges@ points to an array of--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- structures that describe a range of mipmap levels, array layers, and--- aspects to be cleared, as described in--- <{html_spec_relative}#resources-image-views Image Views>. The--- @aspectMask@ of each image subresource range in @pRanges@ /can/--- include @VK_IMAGE_ASPECT_DEPTH_BIT@ if the image format has a depth--- component, and @VK_IMAGE_ASPECT_STENCIL_BIT@ if the image format has--- a stencil component. @pDepthStencil@ is a pointer to a--- @VkClearDepthStencilValue@ structure that contains the values the--- image subresource ranges will be cleared to (see--- <{html_spec_relative}#clears-values {html_spec_relative}#clears-values>--- below).------ = Description--- #_description#------ == Valid Usage------ - @image@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @image@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @imageLayout@ /must/ specify the layout of the image subresource--- ranges of @image@ specified in @pRanges@ at the time this command is--- executed on a @VkDevice@------ - @imageLayout@ /must/ be either of--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseMipLevel@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @levelCount@ member is not--- @VK_REMAINING_MIP_LEVELS@, then @baseMipLevel@ + @levelCount@ /must/--- be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseArrayLayer@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @layerCount@ member is not--- @VK_REMAINING_ARRAY_LAYERS@, then @baseArrayLayer@ + @layerCount@--- /must/ be less than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - @image@ /must/ have a depth\/stencil format------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @imageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pDepthStencil@ /must/ be a valid pointer to a valid--- @VkClearDepthStencilValue@ structure------ - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@--- valid @VkImageSubresourceRange@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @rangeCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @image@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | Transfer |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'VkClearDepthStencilValue',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'-foreign import ccall "vkCmdClearDepthStencilImage" vkCmdClearDepthStencilImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()--- | vkCmdClearAttachments - Clear regions within bound framebuffer--- attachments------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @attachmentCount@ is the number of entries in the @pAttachments@--- array.------ - @pAttachments@ is a pointer to an array of 'VkClearAttachment'--- structures defining the attachments to clear and the clear values to--- use.------ - @rectCount@ is the number of entries in the @pRects@ array.------ - @pRects@ points to an array of 'VkClearRect' structures defining--- regions within each selected attachment to clear.------ = Description--- #_description#------ @vkCmdClearAttachments@ /can/ clear multiple regions of each attachment--- used in the current subpass of a render pass instance. This command--- /must/ be called only inside a render pass instance, and implicitly--- selects the images to clear based on the current framebuffer attachments--- and the command parameters.------ == Valid Usage------ - If the @aspectMask@ member of any element of @pAttachments@ contains--- @VK_IMAGE_ASPECT_COLOR_BIT@, the @colorAttachment@ member of that--- element /must/ refer to a valid color attachment in the current--- subpass------ - The rectangular region specified by each element of @pRects@ /must/--- be contained within the render area of the current render pass--- instance------ - The layers specified by each element of @pRects@ /must/ be contained--- within every attachment that @pAttachments@ refers to------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pAttachments@ /must/ be a valid pointer to an array of--- @attachmentCount@ valid @VkClearAttachment@ structures------ - @pRects@ /must/ be a valid pointer to an array of @rectCount@--- @VkClearRect@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - @attachmentCount@ /must/ be greater than @0@------ - @rectCount@ /must/ be greater than @0@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'VkClearAttachment', 'VkClearRect',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdClearAttachments" vkCmdClearAttachments :: ("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()--- | vkCmdResolveImage - Resolve regions of an image------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the layout of the source image subresources for--- the resolve.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the layout of the destination image subresources--- for the resolve.------ - @regionCount@ is the number of regions to resolve.------ - @pRegions@ is a pointer to an array of 'VkImageResolve' structures--- specifying the regions to resolve.------ = Description--- #_description#------ During the resolve the samples corresponding to each pixel location in--- the source are converted to a single sample before being written to the--- destination. If the source formats are floating-point or normalized--- types, the sample values for each pixel are resolved in an--- implementation-dependent manner. If the source formats are integer--- types, a single sample’s value is selected for each pixel.------ @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets--- in texels of the sub-regions of the source and destination image data.--- @extent@ is the size in texels of the source image to resolve in--- @width@, @height@ and @depth@.------ Resolves are done layer by layer starting with @baseArrayLayer@ member--- of @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are resolved to the destination image.------ == Valid Usage------ - The source region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcImage@------ - The destination region specified by each element of @pRegions@--- /must/ be a region that is contained within @dstImage@------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImage@ /must/ have a sample count equal to any valid sample--- count value other than @VK_SAMPLE_COUNT_1_BIT@------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImage@ /must/ have a sample count equal to--- @VK_SAMPLE_COUNT_1_BIT@------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - If @dstImage@ was created with @tiling@ equal to--- @VK_IMAGE_TILING_LINEAR@, @dstImage@ /must/ have been created with a--- @format@ that supports being a color attachment, as specified by the--- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ - If @dstImage@ was created with @tiling@ equal to--- @VK_IMAGE_TILING_OPTIMAL@, @dstImage@ /must/ have been created with--- a @format@ that supports being a color attachment, as specified by--- the @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @srcImage@ and @dstImage@ /must/ have been created with the same--- image format------ - The @srcSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkImageResolve@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | Transfer |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkImageResolve'-foreign import ccall "vkCmdResolveImage" vkCmdResolveImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()--- | vkCmdSetEvent - Set an event object to signaled state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @event@ is the event that will be signaled.------ - @stageMask@ specifies the--- <{html_spec_relative}#synchronization-pipeline-stages source stage mask>--- used to determine when the @event@ is signaled.------ = Description--- #_description#------ When 'vkCmdSetEvent' is submitted to a queue, it defines an execution--- dependency on commands that were submitted before it, and defines an--- event signal operation which sets the event to the signaled state.------ The first--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur earlier in--- <{html_spec_relative}#synchronization-submission-order submission order>.--- The synchronization scope is limited to operations on the pipeline--- stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>--- specified by @stageMask@.------ The second--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes only the event signal operation.------ If @event@ is already in the signaled state when 'vkCmdSetEvent' is--- executed on the device, then 'vkCmdSetEvent' has no effect, no event--- signal operation occurs, and no execution dependency is generated.------ == Valid Usage------ - @stageMask@ /must/ not include @VK_PIPELINE_STAGE_HOST_BIT@------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @event@ /must/ be a valid @VkEvent@ handle------ - @stageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @stageMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @event@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Event.VkEvent',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall "vkCmdSetEvent" vkCmdSetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()--- | vkCmdResetEvent - Reset an event object to non-signaled state------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @event@ is the event that will be unsignaled.------ - @stageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the--- <{html_spec_relative}#synchronization-pipeline-stages source stage mask>--- used to determine when the @event@ is unsignaled.------ = Description--- #_description#------ When 'vkCmdResetEvent' is submitted to a queue, it defines an execution--- dependency on commands that were submitted before it, and defines an--- event unsignal operation which resets the event to the unsignaled state.------ The first--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur earlier in--- <{html_spec_relative}#synchronization-submission-order submission order>.--- The synchronization scope is limited to operations on the pipeline--- stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>--- specified by @stageMask@.------ The second--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes only the event unsignal operation.------ If @event@ is already in the unsignaled state when 'vkCmdResetEvent' is--- executed on the device, then 'vkCmdResetEvent' has no effect, no event--- unsignal operation occurs, and no execution dependency is generated.------ == Valid Usage------ - @stageMask@ /must/ not include @VK_PIPELINE_STAGE_HOST_BIT@------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - When this command executes, @event@ /must/ not be waited on by a--- @vkCmdWaitEvents@ command that is currently executing------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @event@ /must/ be a valid @VkEvent@ handle------ - @stageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @stageMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @event@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Event.VkEvent',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall "vkCmdResetEvent" vkCmdResetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()--- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @eventCount@ is the length of the @pEvents@ array.------ - @pEvents@ is an array of event object handles to wait on.------ - @srcStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the--- <{html_spec_relative}#synchronization-pipeline-stages source stage mask>.------ - @dstStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the--- <{html_spec_relative}#synchronization-pipeline-stages destination stage mask>.------ - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.------ - @pMemoryBarriers@ is a pointer to an array of 'VkMemoryBarrier'--- structures.------ - @bufferMemoryBarrierCount@ is the length of the--- @pBufferMemoryBarriers@ array.------ - @pBufferMemoryBarriers@ is a pointer to an array of--- 'VkBufferMemoryBarrier' structures.------ - @imageMemoryBarrierCount@ is the length of the--- @pImageMemoryBarriers@ array.------ - @pImageMemoryBarriers@ is a pointer to an array of--- 'VkImageMemoryBarrier' structures.------ = Description--- #_description#------ When @vkCmdWaitEvents@ is submitted to a queue, it defines a memory--- dependency between prior event signal operations on the same queue or--- the host, and subsequent commands. @vkCmdWaitEvents@ /must/ not be used--- to wait on event signal operations occuring on other queues.------ The first synchronization scope only includes event signal operations--- that operate on members of @pEvents@, and the operations that--- happened-before the event signal operations. Event signal operations--- performed by 'vkCmdSetEvent' that occur earlier in--- <{html_spec_relative}#synchronization-submission-order submission order>--- are included in the first synchronization scope, if the--- <{html_spec_relative}#synchronization-pipeline-stages-order logically latest>--- pipeline stage in their @stageMask@ parameter is--- <{html_spec_relative}#synchronization-pipeline-stages-order logically earlier>--- than or equal to the--- <{html_spec_relative}#synchronization-pipeline-stages-order logically latest>--- pipeline stage in @srcStageMask@. Event signal operations performed by--- 'Graphics.Vulkan.Core10.Event.vkSetEvent' are only included in the first--- synchronization scope if @VK_PIPELINE_STAGE_HOST_BIT@ is included in--- @srcStageMask@.------ The second--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur later in--- <{html_spec_relative}#synchronization-submission-order submission order>.--- The second synchronization scope is limited to operations on the--- pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@.------ The first--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access in the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>--- specified by @srcStageMask@. Within that, the first access scope only--- includes the first access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <{html_spec_relative}#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the first access scope--- includes no accesses.------ The second--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access in the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@. Within that, the second access scope only--- includes the second access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <{html_spec_relative}#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the second access scope--- includes no accesses.------ __Note__------ 'vkCmdWaitEvents' is used with 'vkCmdSetEvent' to define a memory--- dependency between two sets of action commands, roughly in the same way--- as pipeline barriers, but split into two commands such that work between--- the two /may/ execute unhindered.------ __Note__------ Applications /should/ be careful to avoid race conditions when using--- events. There is no direct ordering guarantee between a--- 'vkCmdResetEvent' command and a 'vkCmdWaitEvents' command submitted--- after it, so some other execution dependency /must/ be included between--- these commands (e.g. a semaphore).------ == Valid Usage------ - @srcStageMask@ /must/ be the bitwise OR of the @stageMask@ parameter--- used in previous calls to @vkCmdSetEvent@ with any of the members of--- @pEvents@ and @VK_PIPELINE_STAGE_HOST_BIT@ if any of the members of--- @pEvents@ was set using @vkSetEvent@------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If @pEvents@ includes one or more events that will be signaled by--- @vkSetEvent@ after @commandBuffer@ has been submitted to a queue,--- then @vkCmdWaitEvents@ /must/ not be called inside a render pass--- instance------ - Any pipeline stage included in @srcStageMask@ or @dstStageMask@--- /must/ be supported by the capabilities of the queue family--- specified by the @queueFamilyIndex@ member of the--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo'--- structure that was used to create the @VkCommandPool@ that--- @commandBuffer@ was allocated from, as specified in the--- <{html_spec_relative}#synchronization-pipeline-stages-supported table of supported pipeline stages>.------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @srcAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @srcStageMask@, as specified in the--- <{html_spec_relative}#synchronization-access-types-supported table of supported access types>.------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @dstAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @dstStageMask@, as specified in the--- <{html_spec_relative}#synchronization-access-types-supported table of supported access types>.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pEvents@ /must/ be a valid pointer to an array of @eventCount@--- valid @VkEvent@ handles------ - @srcStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @srcStageMask@ /must/ not be @0@------ - @dstStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @dstStageMask@ /must/ not be @0@------ - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a--- valid pointer to an array of @memoryBarrierCount@ valid--- @VkMemoryBarrier@ structures------ - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@--- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@--- valid @VkBufferMemoryBarrier@ structures------ - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@--- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@--- valid @VkImageMemoryBarrier@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - @eventCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and the elements of @pEvents@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Event.VkEvent', 'VkImageMemoryBarrier',--- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall "vkCmdWaitEvents" vkCmdWaitEvents :: ("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()--- | vkCmdPipelineBarrier - Insert a memory dependency------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @srcStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>.------ - @dstStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>.------ - @dependencyFlags@ is a bitmask of--- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlagBits' specifying how--- execution and memory dependencies are formed.------ - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.------ - @pMemoryBarriers@ is a pointer to an array of 'VkMemoryBarrier'--- structures.------ - @bufferMemoryBarrierCount@ is the length of the--- @pBufferMemoryBarriers@ array.------ - @pBufferMemoryBarriers@ is a pointer to an array of--- 'VkBufferMemoryBarrier' structures.------ - @imageMemoryBarrierCount@ is the length of the--- @pImageMemoryBarriers@ array.------ - @pImageMemoryBarriers@ is a pointer to an array of--- 'VkImageMemoryBarrier' structures.------ = Description--- #_description#------ When 'vkCmdPipelineBarrier' is submitted to a queue, it defines a memory--- dependency between commands that were submitted before it, and those--- submitted after it.------ If 'vkCmdPipelineBarrier' was recorded outside a render pass instance,--- the first--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur earlier in--- <{html_spec_relative}#synchronization-submission-order submission order>.--- If 'vkCmdPipelineBarrier' was recorded inside a render pass instance,--- the first synchronization scope includes only commands that occur--- earlier in--- <{html_spec_relative}#synchronization-submission-order submission order>--- within the same subpass. In either case, the first synchronization scope--- is limited to operations on the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>--- specified by @srcStageMask@.------ If 'vkCmdPipelineBarrier' was recorded outside a render pass instance,--- the second--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes all commands that occur later in--- <{html_spec_relative}#synchronization-submission-order submission order>.--- If 'vkCmdPipelineBarrier' was recorded inside a render pass instance,--- the second synchronization scope includes only commands that occur later--- in--- <{html_spec_relative}#synchronization-submission-order submission order>--- within the same subpass. In either case, the second synchronization--- scope is limited to operations on the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@.------ The first--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access in the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>--- specified by @srcStageMask@. Within that, the first access scope only--- includes the first access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <{html_spec_relative}#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the first access scope--- includes no accesses.------ The second--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access in the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>--- specified by @dstStageMask@. Within that, the second access scope only--- includes the second access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of--- <{html_spec_relative}#synchronization-memory-barriers memory barriers>.--- If no memory barriers are specified, then the second access scope--- includes no accesses.------ If @dependencyFlags@ includes @VK_DEPENDENCY_BY_REGION_BIT@, then any--- dependency between--- <{html_spec_relative}#synchronization-framebuffer-regions framebuffer-space>--- pipeline stages is--- <{html_spec_relative}#synchronization-framebuffer-regions framebuffer-local>--- - otherwise it is--- <{html_spec_relative}#synchronization-framebuffer-regions framebuffer-global>.------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the render pass /must/ have been created with a--- @VkSubpassDependency@ instance in @pDependencies@ that expresses a--- dependency from the current subpass to itself.------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @srcStageMask@ /must/ contain a subset of the bit values in the--- @srcStageMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @dstStageMask@ /must/ contain a subset of the bit values in the--- @dstStageMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @srcAccessMask@ of any element of @pMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ contain a subset of the bit values the--- @srcAccessMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @dstAccessMask@ of any element of @pMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ contain a subset of the bit values the--- @dstAccessMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @dependencyFlags@ /must/ be equal to the @dependencyFlags@ member of--- that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @bufferMemoryBarrierCount@ /must/ be @0@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @image@ member of any element of @pImageMemoryBarriers@ /must/--- be equal to one of the elements of @pAttachments@ that the current--- @framebuffer@ was created with, that is also referred to by one of--- the elements of the @pColorAttachments@, @pResolveAttachments@ or--- @pDepthStencilAttachment@ members of the @VkSubpassDescription@--- instance that the current subpass was created with------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @oldLayout@ and @newLayout@ members of any element of--- @pImageMemoryBarriers@ /must/ be equal to the @layout@ member of an--- element of the @pColorAttachments@, @pResolveAttachments@ or--- @pDepthStencilAttachment@ members of the @VkSubpassDescription@--- instance that the current subpass was created with, that refers to--- the same @image@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @oldLayout@ and @newLayout@ members of an element of--- @pImageMemoryBarriers@ /must/ be equal------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any--- element of @pImageMemoryBarriers@ /must/ be--- @VK_QUEUE_FAMILY_IGNORED@------ - Any pipeline stage included in @srcStageMask@ or @dstStageMask@--- /must/ be supported by the capabilities of the queue family--- specified by the @queueFamilyIndex@ member of the--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo'--- structure that was used to create the @VkCommandPool@ that--- @commandBuffer@ was allocated from, as specified in the--- <{html_spec_relative}#synchronization-pipeline-stages-supported table of supported pipeline stages>.------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ and--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @srcAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @srcStageMask@, as specified in the--- <{html_spec_relative}#synchronization-access-types-supported table of supported access types>.------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ and--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @dstAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @dstStageMask@, as specified in the--- <{html_spec_relative}#synchronization-access-types-supported table of supported access types>.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @srcStageMask@ /must/ not be @0@------ - @dstStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @dstStageMask@ /must/ not be @0@------ - @dependencyFlags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlagBits' values------ - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a--- valid pointer to an array of @memoryBarrierCount@ valid--- @VkMemoryBarrier@ structures------ - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@--- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@--- valid @VkBufferMemoryBarrier@ structures------ - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@--- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@--- valid @VkImageMemoryBarrier@ structures------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Transfer | |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlags', 'VkImageMemoryBarrier',--- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall "vkCmdPipelineBarrier" vkCmdPipelineBarrier :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()--- | vkCmdBeginQuery - Begin a query------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the query pool that will manage the results of the--- query.------ - @query@ is the query index within the query pool that will contain--- the results.------ - @flags@ is a bitmask of--- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlagBits'--- specifying constraints on the types of queries that /can/ be--- performed.------ = Description--- #_description#------ If the @queryType@ of the pool is @VK_QUERY_TYPE_OCCLUSION@ and @flags@--- contains @VK_QUERY_CONTROL_PRECISE_BIT@, an implementation /must/ return--- a result that matches the actual number of samples passed. This is--- described in more detail in--- <{html_spec_relative}#queries-occlusion Occlusion Queries>.------ After beginning a query, that query is considered /active/ within the--- command buffer it was called in until that same query is ended. Queries--- active in a primary command buffer when secondary command buffers are--- executed are considered active for those secondary command buffers.------ == Valid Usage------ - @queryPool@ /must/ have been created with a @queryType@ that differs--- from that of any queries that are--- <{html_spec_relative}#queries-operation-active active> within--- @commandBuffer@------ - All queries used by the command /must/ be unavailable------ - If the--- <{html_spec_relative}#features-features-occlusionQueryPrecise precise occlusion queries>--- feature is not enabled, or the @queryType@ used to create--- @queryPool@ was not @VK_QUERY_TYPE_OCCLUSION@, @flags@ /must/ not--- contain @VK_QUERY_CONTROL_PRECISE_BIT@------ - @query@ /must/ be less than the number of queries in @queryPool@------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_OCCLUSION@, the @VkCommandPool@ that @commandBuffer@--- was allocated from /must/ support graphics operations------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ and any of the--- @pipelineStatistics@ indicate graphics operations, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ and any of the--- @pipelineStatistics@ indicate compute operations, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlagBits' values------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlags',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall "vkCmdBeginQuery" vkCmdBeginQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()--- | vkCmdEndQuery - Ends a query------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the query pool that is managing the results of the--- query.------ - @query@ is the query index within the query pool where the result is--- stored.------ = Description--- #_description#------ As queries operate asynchronously, ending a query does not immediately--- set the query’s status to available. A query is considered /finished/--- when the final results of the query are ready to be retrieved by--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults' and--- 'vkCmdCopyQueryPoolResults', and this is when the query’s status is set--- to available.------ Once a query is ended the query /must/ finish in finite time, unless the--- state of the query is changed using other commands, e.g. by issuing a--- reset of the query.------ == Valid Usage------ - All queries used by the command /must/ be--- <{html_spec_relative}#queries-operation-active active>------ - @query@ /must/ be less than the number of queries in @queryPool@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall "vkCmdEndQuery" vkCmdEndQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()--- | vkCmdResetQueryPool - Reset queries in a query pool------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the handle of the query pool managing the queries--- being reset.------ - @firstQuery@ is the initial query index to reset.------ - @queryCount@ is the number of queries to reset.------ = Description--- #_description#------ When executed on a queue, this command sets the status of query indices--- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.------ == Valid Usage------ - @firstQuery@ /must/ be less than the number of queries in--- @queryPool@------ - The sum of @firstQuery@ and @queryCount@ /must/ be less than or--- equal to the number of queries in @queryPool@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall "vkCmdResetQueryPool" vkCmdResetQueryPool :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()--- | vkCmdWriteTimestamp - Write a device timestamp into a query object------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @pipelineStage@ is one of the--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits', specifying a--- stage of the pipeline.------ - @queryPool@ is the query pool that will manage the timestamp.------ - @query@ is the query within the query pool that will contain the--- timestamp.------ = Description--- #_description#------ @vkCmdWriteTimestamp@ latches the value of the timer when all previous--- commands have completed executing as far as the specified pipeline--- stage, and writes the timestamp value to memory. When the timestamp--- value is written, the availability status of the query is set to--- available.------ __Note__------ If an implementation is unable to detect completion and latch the timer--- at any specific stage of the pipeline, it /may/ instead do so at any--- logically later stage.------ 'vkCmdCopyQueryPoolResults' /can/ then be called to copy the timestamp--- value from the query pool into buffer memory, with ordering and--- synchronization behavior equivalent to how other queries operate.--- Timestamp values /can/ also be retrieved from the query pool using--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'. As with other--- queries, the query /must/ be reset using 'vkCmdResetQueryPool' before--- requesting the timestamp value be written to it.------ While @vkCmdWriteTimestamp@ /can/ be called inside or outside of a--- render pass instance, 'vkCmdCopyQueryPoolResults' /must/ only be called--- outside of a render pass instance.------ Timestamps /may/ only be meaningfully compared if they are written by--- commands submitted to the same queue.------ __Note__------ An example of such a comparison is determining the execution time of a--- sequence of commands.------ == Valid Usage------ - @queryPool@ /must/ have been created with a @queryType@ of--- @VK_QUERY_TYPE_TIMESTAMP@------ - The query identified by @queryPool@ and @query@ /must/ be--- /unavailable/------ - The command pool’s queue family /must/ support a non-zero--- @timestampValidBits@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pipelineStage@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' value------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall "vkCmdWriteTimestamp" vkCmdWriteTimestamp :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()--- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool--- to a buffer object------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the query pool managing the queries containing the--- desired results.------ - @firstQuery@ is the initial query index.------ - @queryCount@ is the number of queries. @firstQuery@ and @queryCount@--- together define a range of queries.------ - @dstBuffer@ is a @VkBuffer@ object that will receive the results of--- the copy command.------ - @dstOffset@ is an offset into @dstBuffer@.------ - @stride@ is the stride in bytes between results for individual--- queries within @dstBuffer@. The required size of the backing memory--- for @dstBuffer@ is determined as described above for--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'.------ - @flags@ is a bitmask of--- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlagBits' specifying how--- and when results are returned.------ = Description--- #_description#------ @vkCmdCopyQueryPoolResults@ is guaranteed to see the effect of previous--- uses of @vkCmdResetQueryPool@ in the same queue, without any additional--- synchronization. Thus, the results will always reflect the most recent--- use of the query.------ @flags@ has the same possible values described above for the @flags@--- parameter of 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults', but--- the different style of execution causes some subtle behavioral--- differences. Because @vkCmdCopyQueryPoolResults@ executes in order with--- respect to other query commands, there is less ambiguity about which use--- of a query is being requested.------ If no bits are set in @flags@, results for all requested queries in the--- available state are written as 32-bit unsigned integer values, and--- nothing is written for queries in the unavailable state.------ If @VK_QUERY_RESULT_64_BIT@ is set, the results are written as an array--- of 64-bit unsigned integer values as described for--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'.------ If @VK_QUERY_RESULT_WAIT_BIT@ is set, the implementation will wait for--- each query’s status to be in the available state before retrieving the--- numerical results for that query. This is guaranteed to reflect the most--- recent use of the query on the same queue, assuming that the query is--- not being simultaneously used by other queues. If the query does not--- become available in a finite amount of time (e.g. due to not issuing a--- query since the last reset), a @VK_ERROR_DEVICE_LOST@ error /may/ occur.------ Similarly, if @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ is set and--- @VK_QUERY_RESULT_WAIT_BIT@ is not set, the availability is guaranteed to--- reflect the most recent use of the query on the same queue, assuming--- that the query is not being simultaneously used by other queues. As with--- @vkGetQueryPoolResults@, implementations /must/ guarantee that if they--- return a non-zero availability value, then the numerical results are--- valid.------ If @VK_QUERY_RESULT_PARTIAL_BIT@ is set, @VK_QUERY_RESULT_WAIT_BIT@ is--- not set, and the query’s status is unavailable, an intermediate result--- value between zero and the final result value is written for that query.------ @VK_QUERY_RESULT_PARTIAL_BIT@ /must/ not be used if the pool’s--- @queryType@ is @VK_QUERY_TYPE_TIMESTAMP@.------ @vkCmdCopyQueryPoolResults@ is considered to be a transfer operation,--- and its writes to buffer memory /must/ be synchronized using--- @VK_PIPELINE_STAGE_TRANSFER_BIT@ and @VK_ACCESS_TRANSFER_WRITE_BIT@--- before using the results.------ == Valid Usage------ - @dstOffset@ /must/ be less than the size of @dstBuffer@------ - @firstQuery@ /must/ be less than the number of queries in--- @queryPool@------ - The sum of @firstQuery@ and @queryCount@ /must/ be less than or--- equal to the number of queries in @queryPool@------ - If @VK_QUERY_RESULT_64_BIT@ is not set in @flags@ then @dstOffset@--- and @stride@ /must/ be multiples of @4@------ - If @VK_QUERY_RESULT_64_BIT@ is set in @flags@ then @dstOffset@ and--- @stride@ /must/ be multiples of @8@------ - @dstBuffer@ /must/ have enough storage, from @dstOffset@, to contain--- the result of each query, as described--- <{html_spec_relative}#queries-operation-memorylayout here>------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_TIMESTAMP@, @flags@ /must/ not contain--- @VK_QUERY_RESULT_PARTIAL_BIT@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlagBits' values------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Each of @commandBuffer@, @dstBuffer@, and @queryPool@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | Transfer |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Query.VkQueryPool',--- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlags'-foreign import ccall "vkCmdCopyQueryPoolResults" vkCmdCopyQueryPoolResults :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()--- | vkCmdPushConstants - Update the values of push constants------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer in which the push constant--- update will be recorded.------ - @layout@ is the pipeline layout used to program the push constant--- updates.------ - @stageFlags@ is a bitmask of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' specifying--- the shader stages that will use the push constants in the updated--- range.------ - @offset@ is the start offset of the push constant range to update,--- in units of bytes.------ - @size@ is the size of the push constant range to update, in units of--- bytes.------ - @pValues@ is an array of @size@ bytes containing the new push--- constant values.------ = Description--- #_description#------ == Valid Usage------ - For each byte in the range specified by @offset@ and @size@ and for--- each shader stage in @stageFlags@, there /must/ be a push constant--- range in @layout@ that includes that byte and that stage------ - For each byte in the range specified by @offset@ and @size@ and for--- each push constant range that overlaps that byte, @stageFlags@--- /must/ include all stages in that push constant range’s--- 'Graphics.Vulkan.Core10.PipelineLayout.VkPushConstantRange'::@stageFlags@------ - @offset@ /must/ be a multiple of @4@------ - @size@ /must/ be a multiple of @4@------ - @offset@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@------ - @size@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@ minus @offset@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - @stageFlags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' values------ - @stageFlags@ /must/ not be @0@------ - @pValues@ /must/ be a valid pointer to an array of @size@ bytes------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - @size@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @layout@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'-foreign import ccall "vkCmdPushConstants" vkCmdPushConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()--- | vkCmdBeginRenderPass - Begin a new render pass------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer in which to record the--- command.------ - @pRenderPassBegin@ is a pointer to a 'VkRenderPassBeginInfo'--- structure (defined below) which specifies the render pass to begin--- an instance of, and the framebuffer the instance uses.------ - @contents@ is a 'VkSubpassContents' value specifying how the--- commands in the first subpass will be provided.------ = Description--- #_description#------ After beginning a render pass instance, the command buffer is ready to--- record the commands for the first subpass of that render pass.------ == Valid Usage------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@--- then the corresponding attachment image subresource of the--- framebuffer specified in the @framebuffer@ member of--- @pRenderPassBegin@ /must/ have been created with--- @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@, or--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ then the--- corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/--- have been created with @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@--- set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@--- then the corresponding attachment image subresource of the--- framebuffer specified in the @framebuffer@ member of--- @pRenderPassBegin@ /must/ have been created with--- @VK_IMAGE_USAGE_SAMPLED_BIT@ or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ then--- the corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/--- have been created with @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ then--- the corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/--- have been created with @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ set------ - If any of the @initialLayout@ members of the--- @VkAttachmentDescription@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is not @VK_IMAGE_LAYOUT_UNDEFINED@, then each--- such @initialLayout@ /must/ be equal to the current layout of the--- corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@------ - The @srcStageMask@ and @dstStageMask@ members of any element of the--- @pDependencies@ member of--- 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo' used to create--- @renderPass@ /must/ be supported by the capabilities of the queue--- family identified by the @queueFamilyIndex@ member of the--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo' used to--- create the command pool which @commandBuffer@ was allocated from.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pRenderPassBegin@ /must/ be a valid pointer to a valid--- @VkRenderPassBeginInfo@ structure------ - @contents@ /must/ be a valid 'VkSubpassContents' value------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Outside | Graphics | Graphics |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkRenderPassBeginInfo',--- 'VkSubpassContents'-foreign import ccall "vkCmdBeginRenderPass" vkCmdBeginRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()--- | vkCmdNextSubpass - Transition to the next subpass of a render pass------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer in which to record the--- command.------ - @contents@ specifies how the commands in the next subpass will be--- provided, in the same fashion as the corresponding parameter of--- 'vkCmdBeginRenderPass'.------ = Description--- #_description#------ The subpass index for a render pass begins at zero when--- @vkCmdBeginRenderPass@ is recorded, and increments each time--- @vkCmdNextSubpass@ is recorded.------ Moving to the next subpass automatically performs any multisample--- resolve operations in the subpass being ended. End-of-subpass--- multisample resolves are treated as color attachment writes for the--- purposes of synchronization. That is, they are considered to execute in--- the @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ pipeline stage and--- their writes are synchronized with--- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@. Synchronization between--- rendering within a subpass and any resolve operations at the end of the--- subpass occurs automatically, without need for explicit dependencies or--- pipeline barriers. However, if the resolve attachment is also used in a--- different subpass, an explicit dependency is needed.------ After transitioning to the next subpass, the application /can/ record--- the commands for that subpass.------ == Valid Usage------ - The current subpass index /must/ be less than the number of--- subpasses in the render pass minus one------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @contents@ /must/ be a valid 'VkSubpassContents' value------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkSubpassContents'-foreign import ccall "vkCmdNextSubpass" vkCmdNextSubpass :: ("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()--- | vkCmdEndRenderPass - End the current render pass------ = Parameters--- #_parameters#------ - @commandBuffer@ is the command buffer in which to end the current--- render pass instance.------ = Description--- #_description#------ Ending a render pass instance performs any multisample resolve--- operations on the final subpass.------ == Valid Usage------ - The current subpass index /must/ be equal to the number of subpasses--- in the render pass minus one------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdEndRenderPass" vkCmdEndRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()--- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary--- command buffer------ = Parameters--- #_parameters#------ - @commandBuffer@ is a handle to a primary command buffer that the--- secondary command buffers are executed in.------ - @commandBufferCount@ is the length of the @pCommandBuffers@ array.------ - @pCommandBuffers@ is an array of secondary command buffer handles,--- which are recorded to execute in the primary command buffer in the--- order they are listed in the array.------ = Description--- #_description#------ If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, and it was recorded--- into any other primary command buffer which is currently in the--- <{html_spec_relative}#commandbuffers-lifecycle executable or recording state>,--- that primary command buffer becomes--- <{html_spec_relative}#commandbuffers-lifecycle invalid>.------ == Valid Usage------ - @commandBuffer@ /must/ have been allocated with a @level@ of--- @VK_COMMAND_BUFFER_LEVEL_PRIMARY@------ - Each element of @pCommandBuffers@ /must/ have been allocated with a--- @level@ of @VK_COMMAND_BUFFER_LEVEL_SECONDARY@------ - Each element of @pCommandBuffers@ /must/ be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending or executable state>.------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, and it was--- recorded into any other primary command buffer, that primary command--- buffer /must/ not be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not--- be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>.------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not--- have already been recorded to @commandBuffer@.------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not--- appear more than once in @pCommandBuffers@.------ - Each element of @pCommandBuffers@ /must/ have been allocated from a--- @VkCommandPool@ that was created for the same queue family as the--- @VkCommandPool@ from which @commandBuffer@ was allocated------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, that render pass instance /must/ have been begun with the--- @contents@ parameter of @vkCmdBeginRenderPass@ set to--- @VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS@------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, each element of @pCommandBuffers@ /must/ have been--- recorded with the @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, each element of @pCommandBuffers@ /must/ have been--- recorded with @VkCommandBufferInheritanceInfo@::@subpass@ set to the--- index of the subpass which the given command buffer will be executed--- in------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, the render passes specified in the--- pname::pBeginInfo::@pInheritanceInfo@::@renderPass@ members of the--- 'Graphics.Vulkan.Core10.CommandBuffer.vkBeginCommandBuffer' commands--- used to begin recording each element of @pCommandBuffers@ /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- current render pass.------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, and any element of @pCommandBuffers@ was recorded with--- @VkCommandBufferInheritanceInfo@::@framebuffer@ not equal to--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', that--- @VkFramebuffer@ /must/ match the @VkFramebuffer@ used in the current--- render pass instance------ - If @vkCmdExecuteCommands@ is not being called within a render pass--- instance, each element of @pCommandBuffers@ /must/ not have been--- recorded with the @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@------ - If the--- <{html_spec_relative}#features-features-inheritedQueries inherited queries>--- feature is not enabled, @commandBuffer@ /must/ not have any queries--- <{html_spec_relative}#queries-operation-active active>------ - If @commandBuffer@ has a @VK_QUERY_TYPE_OCCLUSION@ query--- <{html_spec_relative}#queries-operation-active active>, then each--- element of @pCommandBuffers@ /must/ have been recorded with--- @VkCommandBufferInheritanceInfo@::@occlusionQueryEnable@ set to--- @VK_TRUE@------ - If @commandBuffer@ has a @VK_QUERY_TYPE_OCCLUSION@ query--- <{html_spec_relative}#queries-operation-active active>, then each--- element of @pCommandBuffers@ /must/ have been recorded with--- @VkCommandBufferInheritanceInfo@::@queryFlags@ having all bits set--- that are set for the query------ - If @commandBuffer@ has a @VK_QUERY_TYPE_PIPELINE_STATISTICS@ query--- <{html_spec_relative}#queries-operation-active active>, then each--- element of @pCommandBuffers@ /must/ have been recorded with--- @VkCommandBufferInheritanceInfo@::@pipelineStatistics@ having all--- bits set that are set in the @VkQueryPool@ the query uses------ - Each element of @pCommandBuffers@ /must/ not begin any query types--- that are <{html_spec_relative}#queries-operation-active active> in--- @commandBuffer@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pCommandBuffers@ /must/ be a valid pointer to an array of--- @commandBufferCount@ valid @VkCommandBuffer@ handles------ - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ - @commandBufferCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and the elements of @pCommandBuffers@--- /must/ have been created, allocated, or retrieved from the same--- @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Transfer | |--- > | | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------+------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall "vkCmdExecuteCommands" vkCmdExecuteCommands :: ("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()--- | VkClearRect - Structure specifying a clear rectangle------ = Description--- #_description#------ The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting--- from the base layer of the attachment image view are cleared.------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Pipeline.VkRect2D', 'vkCmdClearAttachments'-data VkClearRect = VkClearRect- { -- No documentation found for Nested "VkClearRect" "vkRect"- vkRect :: VkRect2D- , -- No documentation found for Nested "VkClearRect" "vkBaseArrayLayer"- vkBaseArrayLayer :: Word32- , -- No documentation found for Nested "VkClearRect" "vkLayerCount"- vkLayerCount :: Word32- }- deriving (Eq, Show)--instance Storable VkClearRect where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkClearRect <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkRect (poked :: VkClearRect))- *> poke (ptr `plusPtr` 16) (vkBaseArrayLayer (poked :: VkClearRect))- *> poke (ptr `plusPtr` 20) (vkLayerCount (poked :: VkClearRect))--- | VkImageSubresourceLayers - Structure specifying a image subresource--- layers------ = Description--- #_description#------ == Valid Usage------ - If @aspectMask@ contains @VK_IMAGE_ASPECT_COLOR_BIT@, it /must/ not--- contain either of @VK_IMAGE_ASPECT_DEPTH_BIT@ or--- @VK_IMAGE_ASPECT_STENCIL_BIT@------ - @aspectMask@ /must/ not contain @VK_IMAGE_ASPECT_METADATA_BIT@------ - @layerCount@ /must/ be greater than 0------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- values------ - @aspectMask@ /must/ not be @0@------ = See Also--- #_see_also#------ 'VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',--- 'VkImageBlit', 'VkImageCopy', 'VkImageResolve'-data VkImageSubresourceLayers = VkImageSubresourceLayers- { -- No documentation found for Nested "VkImageSubresourceLayers" "vkAspectMask"- vkAspectMask :: VkImageAspectFlags- , -- No documentation found for Nested "VkImageSubresourceLayers" "vkMipLevel"- vkMipLevel :: Word32- , -- No documentation found for Nested "VkImageSubresourceLayers" "vkBaseArrayLayer"- vkBaseArrayLayer :: Word32- , -- No documentation found for Nested "VkImageSubresourceLayers" "vkLayerCount"- vkLayerCount :: Word32- }- deriving (Eq, Show)--instance Storable VkImageSubresourceLayers where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkImageSubresourceLayers <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkImageSubresourceLayers))- *> poke (ptr `plusPtr` 4) (vkMipLevel (poked :: VkImageSubresourceLayers))- *> poke (ptr `plusPtr` 8) (vkBaseArrayLayer (poked :: VkImageSubresourceLayers))- *> poke (ptr `plusPtr` 12) (vkLayerCount (poked :: VkImageSubresourceLayers))--- | VkMemoryBarrier - Structure specifying a global memory barrier------ = Description--- #_description#------ The first--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access types in the--- <{html_spec_relative}#synchronization-access-masks source access mask>--- specified by @srcAccessMask@.------ The second--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access types in the--- <{html_spec_relative}#synchronization-access-masks destination access mask>--- specified by @dstAccessMask@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_BARRIER@------ - @pNext@ /must/ be @NULL@------ - @srcAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @dstAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',--- 'vkCmdWaitEvents'-data VkMemoryBarrier = VkMemoryBarrier- { -- No documentation found for Nested "VkMemoryBarrier" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryBarrier" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryBarrier" "vkSrcAccessMask"- vkSrcAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkMemoryBarrier" "vkDstAccessMask"- vkDstAccessMask :: VkAccessFlags- }- deriving (Eq, Show)--instance Storable VkMemoryBarrier where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkMemoryBarrier <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryBarrier))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryBarrier))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkMemoryBarrier))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkMemoryBarrier))--- | VkBufferMemoryBarrier - Structure specifying a buffer memory barrier------ = Description--- #_description#------ The first--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access to memory through the specified buffer range, via--- access types in the--- <{html_spec_relative}#synchronization-access-masks source access mask>--- specified by @srcAccessMask@. If @srcAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@, memory writes performed by that access type--- are also made visible, as that access type is not performed through a--- resource.------ The second--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access to memory through the specified buffer range, via--- access types in the--- <{html_spec_relative}#synchronization-access-masks destination access mask>.--- specified by @dstAccessMask@. If @dstAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@ or @VK_ACCESS_HOST_READ_BIT@, available--- memory writes are also made visible to accesses of those types, as those--- access types are not performed through a resource.------ If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and--- @srcQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a--- <{html_spec_relative}#synchronization-queue-transfers-release queue family release operation>--- for the specified buffer range, and the second access scope includes no--- access, as if @dstAccessMask@ was @0@.------ If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and--- @dstQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a--- <{html_spec_relative}#synchronization-queue-transfers-acquire queue family acquire operation>--- for the specified buffer range, and the first access scope includes no--- access, as if @srcAccessMask@ was @0@.------ == Valid Usage------ - @offset@ /must/ be less than the size of @buffer@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater--- than @0@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less--- than or equal to than the size of @buffer@ minus @offset@------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_CONCURRENT@, @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ /must/ both be @VK_QUEUE_FAMILY_IGNORED@------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@, @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ /must/ either both be--- @VK_QUEUE_FAMILY_IGNORED@, or both be a valid queue family (see--- <{html_spec_relative}#devsandqueues-queueprops {html_spec_relative}#devsandqueues-queueprops>)------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@, and @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ are not @VK_QUEUE_FAMILY_IGNORED@, at least--- one of them /must/ be the same as the family of the queue that will--- execute this barrier------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER@------ - @pNext@ /must/ be @NULL@------ - @srcAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @dstAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',--- 'vkCmdWaitEvents'-data VkBufferMemoryBarrier = VkBufferMemoryBarrier- { -- No documentation found for Nested "VkBufferMemoryBarrier" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkSrcAccessMask"- vkSrcAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkDstAccessMask"- vkDstAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkSrcQueueFamilyIndex"- vkSrcQueueFamilyIndex :: Word32- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkDstQueueFamilyIndex"- vkDstQueueFamilyIndex :: Word32- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkBuffer"- vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkOffset"- vkOffset :: VkDeviceSize- , -- No documentation found for Nested "VkBufferMemoryBarrier" "vkSize"- vkSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkBufferMemoryBarrier where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkBufferMemoryBarrier <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 24) (vkSrcQueueFamilyIndex (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 28) (vkDstQueueFamilyIndex (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 32) (vkBuffer (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 40) (vkOffset (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 48) (vkSize (poked :: VkBufferMemoryBarrier))--- | VkImageMemoryBarrier - Structure specifying the parameters of an image--- memory barrier------ = Description--- #_description#------ The first--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access to memory through the specified image subresource--- range, via access types in the--- <{html_spec_relative}#synchronization-access-masks source access mask>--- specified by @srcAccessMask@. If @srcAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@, memory writes performed by that access type--- are also made visible, as that access type is not performed through a--- resource.------ The second--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access to memory through the specified image subresource--- range, via access types in the--- <{html_spec_relative}#synchronization-access-masks destination access mask>--- specified by @dstAccessMask@. If @dstAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@ or @VK_ACCESS_HOST_READ_BIT@, available--- memory writes are also made visible to accesses of those types, as those--- access types are not performed through a resource.------ If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and--- @srcQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a--- <{html_spec_relative}#synchronization-queue-transfers-release queue family release operation>--- for the specified image subresource range, and the second access scope--- includes no access, as if @dstAccessMask@ was @0@.------ If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and--- @dstQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a--- <{html_spec_relative}#synchronization-queue-transfers-acquire queue family acquire operation>--- for the specified image subresource range, and the first access scope--- includes no access, as if @srcAccessMask@ was @0@.------ If @oldLayout@ is not equal to @newLayout@, then the memory barrier--- defines an--- <{html_spec_relative}#synchronization-image-layout-transitions image layout transition>--- for the specified image subresource range.------ Layout transitions that are performed via image memory barriers execute--- in their entirety in--- <{html_spec_relative}#synchronization-submission-order submission order>,--- relative to other image layout transitions submitted to the same queue,--- including those performed by--- <{html_spec_relative}#renderpass render passes>. In effect there is an--- implicit execution dependency from each such layout transition to all--- layout transitions previously submitted to the same queue.------ == Valid Usage------ - @oldLayout@ /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@ or the current--- layout of the image subresources affected by the barrier------ - @newLayout@ /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or--- @VK_IMAGE_LAYOUT_PREINITIALIZED@------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_CONCURRENT@, @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ /must/ both be @VK_QUEUE_FAMILY_IGNORED@------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@, @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ /must/ either both be--- @VK_QUEUE_FAMILY_IGNORED@, or both be a valid queue family (see--- <{html_spec_relative}#devsandqueues-queueprops {html_spec_relative}#devsandqueues-queueprops>).------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@, and @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ are not @VK_QUEUE_FAMILY_IGNORED@, at least--- one of them /must/ be the same as the family of the queue that will--- execute this barrier------ - @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@--- specified in 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when--- @image@ was created------ - If @subresourceRange.levelCount@ is not @VK_REMAINING_MIP_LEVELS@,--- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@--- /must/ be less than or equal to the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - @subresourceRange.baseArrayLayer@ /must/ be less than the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @subresourceRange.layerCount@ is not @VK_REMAINING_ARRAY_LAYERS@,--- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@--- /must/ be less than or equal to the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @image@ has a depth\/stencil format with both depth and stencil--- components, then the @aspectMask@ member of @subresourceRange@--- /must/ include both @VK_IMAGE_ASPECT_DEPTH_BIT@ and--- @VK_IMAGE_ASPECT_STENCIL_BIT@------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@ then @image@ /must/ have--- been created with @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@ then @image@--- /must/ have been created with--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ then @image@--- /must/ have been created with--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ then @image@ /must/ have--- been created with @VK_IMAGE_USAGE_SAMPLED_BIT@ or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ then @image@ /must/ have been--- created with @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ then @image@ /must/ have been--- created with @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ set------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT'------ - @srcAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @dstAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @oldLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @newLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @image@ /must/ be a valid @VkImage@ handle------ - @subresourceRange@ /must/ be a valid @VkImageSubresourceRange@--- structure------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',--- 'vkCmdWaitEvents'-data VkImageMemoryBarrier = VkImageMemoryBarrier- { -- No documentation found for Nested "VkImageMemoryBarrier" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkSrcAccessMask"- vkSrcAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkDstAccessMask"- vkDstAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkOldLayout"- vkOldLayout :: VkImageLayout- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkNewLayout"- vkNewLayout :: VkImageLayout- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkSrcQueueFamilyIndex"- vkSrcQueueFamilyIndex :: Word32- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkDstQueueFamilyIndex"- vkDstQueueFamilyIndex :: Word32- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkImage"- vkImage :: VkImage- , -- No documentation found for Nested "VkImageMemoryBarrier" "vkSubresourceRange"- vkSubresourceRange :: VkImageSubresourceRange- }- deriving (Eq, Show)--instance Storable VkImageMemoryBarrier where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkImageMemoryBarrier <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 24) (vkOldLayout (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 28) (vkNewLayout (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 32) (vkSrcQueueFamilyIndex (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 36) (vkDstQueueFamilyIndex (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 40) (vkImage (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 48) (vkSubresourceRange (poked :: VkImageMemoryBarrier))--- | VkBufferCopy - Structure specifying a buffer copy operation------ = Description--- #_description#------ = See Also--- #_see_also#------ @VkDeviceSize@, 'vkCmdCopyBuffer'-data VkBufferCopy = VkBufferCopy- { -- No documentation found for Nested "VkBufferCopy" "vkSrcOffset"- vkSrcOffset :: VkDeviceSize- , -- No documentation found for Nested "VkBufferCopy" "vkDstOffset"- vkDstOffset :: VkDeviceSize- , -- No documentation found for Nested "VkBufferCopy" "vkSize"- vkSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkBufferCopy where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkBufferCopy <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcOffset (poked :: VkBufferCopy))- *> poke (ptr `plusPtr` 8) (vkDstOffset (poked :: VkBufferCopy))- *> poke (ptr `plusPtr` 16) (vkSize (poked :: VkBufferCopy))--- | VkImageCopy - Structure specifying an image copy operation------ = Description--- #_description#------ Copies are done layer by layer starting with @baseArrayLayer@ member of--- @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are copied to the destination image.------ == Valid Usage------ - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - The @layerCount@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - If either of the calling command’s @srcImage@ or @dstImage@--- parameters are of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,--- respectively------ - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects--- present in the calling command’s @srcImage@------ - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects--- present in the calling command’s @dstImage@------ - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource width------ - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource height------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource depth------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_2D@,--- then @srcOffset.z@ /must/ be @0@.------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_2D@,--- then @dstOffset.z@ /must/ be @0@.------ - If the calling command’s @srcImage@ or @dstImage@ is of type--- @VK_IMAGE_TYPE_2D@, then @extent.depth@ /must/ be @1@.------ - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource width------ - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource height------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource depth------ - If the calling command’s @srcImage@ is a compressed image, all--- members of @srcOffset@ /must/ be a multiple of the corresponding--- dimensions of the compressed texel block------ - If the calling command’s @srcImage@ is a compressed image,--- @extent.width@ /must/ be a multiple of the compressed texel block--- width or (@extent.width@ + @srcOffset.x@) /must/ equal the source--- image subresource width------ - If the calling command’s @srcImage@ is a compressed image,--- @extent.height@ /must/ be a multiple of the compressed texel block--- height or (@extent.height@ + @srcOffset.y@) /must/ equal the source--- image subresource height------ - If the calling command’s @srcImage@ is a compressed image,--- @extent.depth@ /must/ be a multiple of the compressed texel block--- depth or (@extent.depth@ + @srcOffset.z@) /must/ equal the source--- image subresource depth------ - If the calling command’s @dstImage@ is a compressed format image,--- all members of @dstOffset@ /must/ be a multiple of the corresponding--- dimensions of the compressed texel block------ - If the calling command’s @dstImage@ is a compressed format image,--- @extent.width@ /must/ be a multiple of the compressed texel block--- width or (@extent.width@ + @dstOffset.x@) /must/ equal the--- destination image subresource width------ - If the calling command’s @dstImage@ is a compressed format image,--- @extent.height@ /must/ be a multiple of the compressed texel block--- height or (@extent.height@ + @dstOffset.y@) /must/ equal the--- destination image subresource height------ - If the calling command’s @dstImage@ is a compressed format image,--- @extent.depth@ /must/ be a multiple of the compressed texel block--- depth or (@extent.depth@ + @dstOffset.z@) /must/ equal the--- destination image subresource depth------ == Valid Usage (Implicit)------ - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdCopyImage'-data VkImageCopy = VkImageCopy- { -- No documentation found for Nested "VkImageCopy" "vkSrcSubresource"- vkSrcSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageCopy" "vkSrcOffset"- vkSrcOffset :: VkOffset3D- , -- No documentation found for Nested "VkImageCopy" "vkDstSubresource"- vkDstSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageCopy" "vkDstOffset"- vkDstOffset :: VkOffset3D- , -- No documentation found for Nested "VkImageCopy" "vkExtent"- vkExtent :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkImageCopy where- sizeOf ~_ = 68- alignment ~_ = 4- peek ptr = VkImageCopy <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 16) (vkSrcOffset (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 28) (vkDstSubresource (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 44) (vkDstOffset (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 56) (vkExtent (poked :: VkImageCopy))--- | VkImageBlit - Structure specifying an image blit operation------ = Description--- #_description#------ For each element of the @pRegions@ array, a blit operation is performed--- the specified source and destination regions.------ == Valid Usage------ - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - The @layerCount@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - If either of the calling command’s @srcImage@ or @dstImage@--- parameters are of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,--- respectively------ - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects--- present in the calling command’s @srcImage@------ - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects--- present in the calling command’s @dstImage@------ - @srcOffset@[0].@x@ and @srcOffset@[1].@x@ /must/ both be greater--- than or equal to @0@ and less than or equal to the source image--- subresource width------ - @srcOffset@[0].@y@ and @srcOffset@[1].@y@ /must/ both be greater--- than or equal to @0@ and less than or equal to the source image--- subresource height------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y /must/ be--- @1@.------ - @srcOffset@[0].@z@ and @srcOffset@[1].@z@ /must/ both be greater--- than or equal to @0@ and less than or equal to the source image--- subresource depth------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @srcOffset@[0].z /must/ be @0@ and--- @srcOffset@[1].z /must/ be @1@.------ - @dstOffset@[0].@x@ and @dstOffset@[1].@x@ /must/ both be greater--- than or equal to @0@ and less than or equal to the destination image--- subresource width------ - @dstOffset@[0].@y@ and @dstOffset@[1].@y@ /must/ both be greater--- than or equal to @0@ and less than or equal to the destination image--- subresource height------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y /must/ be--- @1@.------ - @dstOffset@[0].@z@ and @dstOffset@[1].@z@ /must/ both be greater--- than or equal to @0@ and less than or equal to the destination image--- subresource depth------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @dstOffset@[0].z /must/ be @0@ and--- @dstOffset@[1].z /must/ be @1@.------ == Valid Usage (Implicit)------ - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also--- #_see_also#------ 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdBlitImage'-data VkImageBlit = VkImageBlit- { -- No documentation found for Nested "VkImageBlit" "vkSrcSubresource"- vkSrcSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageBlit" "vkSrcOffsets"- vkSrcOffsets :: Vector 2 VkOffset3D- , -- No documentation found for Nested "VkImageBlit" "vkDstSubresource"- vkDstSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageBlit" "vkDstOffsets"- vkDstOffsets :: Vector 2 VkOffset3D- }- deriving (Eq, Show)--instance Storable VkImageBlit where- sizeOf ~_ = 80- alignment ~_ = 4- peek ptr = VkImageBlit <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageBlit))- *> poke (ptr `plusPtr` 16) (vkSrcOffsets (poked :: VkImageBlit))- *> poke (ptr `plusPtr` 40) (vkDstSubresource (poked :: VkImageBlit))- *> poke (ptr `plusPtr` 56) (vkDstOffsets (poked :: VkImageBlit))--- | VkBufferImageCopy - Structure specifying a buffer image copy operation------ = Description--- #_description#------ When copying to or from a depth or stencil aspect, the data in buffer--- memory uses a layout that is a (mostly) tightly packed representation of--- the depth or stencil data. Specifically:------ - data copied to or from the stencil aspect of any depth\/stencil--- format is tightly packed with one @VK_FORMAT_S8_UINT@ value per--- texel.------ - data copied to or from the depth aspect of a @VK_FORMAT_D16_UNORM@--- or @VK_FORMAT_D16_UNORM_S8_UINT@ format is tightly packed with one--- @VK_FORMAT_D16_UNORM@ value per texel.------ - data copied to or from the depth aspect of a @VK_FORMAT_D32_SFLOAT@--- or @VK_FORMAT_D32_SFLOAT_S8_UINT@ format is tightly packed with one--- @VK_FORMAT_D32_SFLOAT@ value per texel.------ - data copied to or from the depth aspect of a--- @VK_FORMAT_X8_D24_UNORM_PACK32@ or @VK_FORMAT_D24_UNORM_S8_UINT@--- format is packed with one 32-bit word per texel with the D24 value--- in the LSBs of the word, and undefined values in the eight MSBs.------ __Note__------ To copy both the depth and stencil aspects of a depth\/stencil format,--- two entries in @pRegions@ /can/ be used, where one specifies the depth--- aspect in @imageSubresource@, and the other specifies the stencil--- aspect.------ Because depth or stencil aspect buffer to image copies /may/ require--- format conversions on some implementations, they are not supported on--- queues that do not support graphics. When copying to a depth aspect, the--- data in buffer memory /must/ be in the the range [0,1] or undefined--- results occur.------ Copies are done layer by layer starting with image layer--- @baseArrayLayer@ member of @imageSubresource@. @layerCount@ layers are--- copied from the source image or to the destination image.------ == Valid Usage------ - If the calling command’s @VkImage@ parameter’s format is not a--- depth\/stencil format, then @bufferOffset@ /must/ be a multiple of--- the format’s element size------ - @bufferOffset@ /must/ be a multiple of @4@------ - @bufferRowLength@ /must/ be @0@, or greater than or equal to the--- @width@ member of @imageExtent@------ - @bufferImageHeight@ /must/ be @0@, or greater than or equal to the--- @height@ member of @imageExtent@------ - @imageOffset.x@ and (@imageExtent.width@ + @imageOffset.x@) /must/--- both be greater than or equal to @0@ and less than or equal to the--- image subresource width------ - @imageOffset.y@ and (imageExtent.height + @imageOffset.y@) /must/--- both be greater than or equal to @0@ and less than or equal to the--- image subresource height------ - If the calling command’s @srcImage@ ('vkCmdCopyImageToBuffer') or--- @dstImage@ ('vkCmdCopyBufferToImage') is of type @VK_IMAGE_TYPE_1D@,--- then @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/--- be @1@.------ - @imageOffset.z@ and (imageExtent.depth + @imageOffset.z@) /must/--- both be greater than or equal to @0@ and less than or equal to the--- image subresource depth------ - If the calling command’s @srcImage@ ('vkCmdCopyImageToBuffer') or--- @dstImage@ ('vkCmdCopyBufferToImage') is of type @VK_IMAGE_TYPE_1D@--- or @VK_IMAGE_TYPE_2D@, then @imageOffset.z@ /must/ be @0@ and--- @imageExtent.depth@ /must/ be @1@------ - If the calling command’s @VkImage@ parameter is a compressed image,--- @bufferRowLength@ /must/ be a multiple of the compressed texel block--- width------ - If the calling command’s @VkImage@ parameter is a compressed image,--- @bufferImageHeight@ /must/ be a multiple of the compressed texel--- block height------ - If the calling command’s @VkImage@ parameter is a compressed image,--- all members of @imageOffset@ /must/ be a multiple of the--- corresponding dimensions of the compressed texel block------ - If the calling command’s @VkImage@ parameter is a compressed image,--- @bufferOffset@ /must/ be a multiple of the compressed texel block--- size in bytes------ - If the calling command’s @VkImage@ parameter is a compressed image,--- @imageExtent.width@ /must/ be a multiple of the compressed texel--- block width or (@imageExtent.width@ + @imageOffset.x@) /must/ equal--- the image subresource width------ - If the calling command’s @VkImage@ parameter is a compressed image,--- @imageExtent.height@ /must/ be a multiple of the compressed texel--- block height or (@imageExtent.height@ + @imageOffset.y@) /must/--- equal the image subresource height------ - If the calling command’s @VkImage@ parameter is a compressed image,--- @imageExtent.depth@ /must/ be a multiple of the compressed texel--- block depth or (@imageExtent.depth@ + @imageOffset.z@) /must/ equal--- the image subresource depth------ - The @aspectMask@ member of @imageSubresource@ /must/ specify aspects--- present in the calling command’s @VkImage@ parameter------ - The @aspectMask@ member of @imageSubresource@ /must/ only have a--- single bit set------ - If the calling command’s @VkImage@ parameter is of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- @imageSubresource@ /must/ be @0@ and @1@, respectively------ - When copying to the depth aspect of an image subresource, the data--- in the source buffer /must/ be in the range [0,1]------ == Valid Usage (Implicit)------ - @imageSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also--- #_see_also#------ @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdCopyBufferToImage', 'vkCmdCopyImageToBuffer'-data VkBufferImageCopy = VkBufferImageCopy- { -- No documentation found for Nested "VkBufferImageCopy" "vkBufferOffset"- vkBufferOffset :: VkDeviceSize- , -- No documentation found for Nested "VkBufferImageCopy" "vkBufferRowLength"- vkBufferRowLength :: Word32- , -- No documentation found for Nested "VkBufferImageCopy" "vkBufferImageHeight"- vkBufferImageHeight :: Word32- , -- No documentation found for Nested "VkBufferImageCopy" "vkImageSubresource"- vkImageSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkBufferImageCopy" "vkImageOffset"- vkImageOffset :: VkOffset3D- , -- No documentation found for Nested "VkBufferImageCopy" "vkImageExtent"- vkImageExtent :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkBufferImageCopy where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkBufferImageCopy <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 44)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBufferOffset (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 8) (vkBufferRowLength (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 12) (vkBufferImageHeight (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 16) (vkImageSubresource (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 32) (vkImageOffset (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 44) (vkImageExtent (poked :: VkBufferImageCopy))--- | VkImageResolve - Structure specifying an image resolve operation------ = Description--- #_description#------ == Valid Usage------ - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@--- /must/ only contain @VK_IMAGE_ASPECT_COLOR_BIT@------ - The @layerCount@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - If either of the calling command’s @srcImage@ or @dstImage@--- parameters are of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,--- respectively------ - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource width------ - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource height------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource depth------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @srcOffset.z@ /must/ be @0@ and--- @extent.depth@ /must/ be @1@.------ - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource width------ - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource height------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource depth------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @dstOffset.z@ /must/ be @0@ and--- @extent.depth@ /must/ be @1@.------ == Valid Usage (Implicit)------ - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdResolveImage'-data VkImageResolve = VkImageResolve- { -- No documentation found for Nested "VkImageResolve" "vkSrcSubresource"- vkSrcSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageResolve" "vkSrcOffset"- vkSrcOffset :: VkOffset3D- , -- No documentation found for Nested "VkImageResolve" "vkDstSubresource"- vkDstSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageResolve" "vkDstOffset"- vkDstOffset :: VkOffset3D- , -- No documentation found for Nested "VkImageResolve" "vkExtent"- vkExtent :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkImageResolve where- sizeOf ~_ = 68- alignment ~_ = 4- peek ptr = VkImageResolve <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 16) (vkSrcOffset (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 28) (vkDstSubresource (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 44) (vkDstOffset (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 56) (vkExtent (poked :: VkImageResolve))--- | VkRenderPassBeginInfo - Structure specifying render pass begin info------ = Description--- #_description#------ @renderArea@ is the render area that is affected by the render pass--- instance. The effects of attachment load, store and multisample resolve--- operations are restricted to the pixels whose x and y coordinates fall--- within the render area on all attachments. The render area extends to--- all layers of @framebuffer@. The application /must/ ensure (using--- scissor if necessary) that all rendering is contained within the render--- area, otherwise the pixels outside of the render area become undefined--- and shader side effects /may/ occur for fragments outside the render--- area. The render area /must/ be contained within the framebuffer--- dimensions.------ __Note__------ There /may/ be a performance cost for using a render area smaller than--- the framebuffer, unless it matches the render area granularity for the--- render pass.------ == Valid Usage------ - @clearValueCount@ /must/ be greater than the largest attachment--- index in @renderPass@ that specifies a @loadOp@ (or @stencilLoadOp@,--- if the attachment has a depth\/stencil format) of--- @VK_ATTACHMENT_LOAD_OP_CLEAR@------ - If @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid--- pointer to an array of @clearValueCount@ valid @VkClearValue@ unions------ - @renderPass@ /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkFramebufferCreateInfo@ structure--- specified when creating @framebuffer@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo'--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkRenderPassSampleLocationsBeginInfoEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @renderPass@ /must/ be a valid @VkRenderPass@ handle------ - @framebuffer@ /must/ be a valid @VkFramebuffer@ handle------ - Both of @framebuffer@, and @renderPass@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ = See Also--- #_see_also#------ 'VkClearValue', 'Graphics.Vulkan.Core10.Pass.VkFramebuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdBeginRenderPass'-data VkRenderPassBeginInfo = VkRenderPassBeginInfo- { -- No documentation found for Nested "VkRenderPassBeginInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkRenderPassBeginInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkRenderPassBeginInfo" "vkRenderPass"- vkRenderPass :: VkRenderPass- , -- No documentation found for Nested "VkRenderPassBeginInfo" "vkFramebuffer"- vkFramebuffer :: VkFramebuffer- , -- No documentation found for Nested "VkRenderPassBeginInfo" "vkRenderArea"- vkRenderArea :: VkRect2D- , -- No documentation found for Nested "VkRenderPassBeginInfo" "vkClearValueCount"- vkClearValueCount :: Word32- , -- No documentation found for Nested "VkRenderPassBeginInfo" "vkPClearValues"- vkPClearValues :: Ptr VkClearValue- }- deriving (Eq, Show)--instance Storable VkRenderPassBeginInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkRenderPassBeginInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 16) (vkRenderPass (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 24) (vkFramebuffer (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 32) (vkRenderArea (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 48) (vkClearValueCount (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 56) (vkPClearValues (poked :: VkRenderPassBeginInfo))--- | VkClearDepthStencilValue - Structure specifying a clear depth stencil--- value------ = Description--- #_description#------ == Valid Usage------ - @depth@ /must/ be between @0.0@ and @1.0@, inclusive------ = See Also--- #_see_also#------ 'VkClearValue', 'vkCmdClearDepthStencilImage'-data VkClearDepthStencilValue = VkClearDepthStencilValue- { -- No documentation found for Nested "VkClearDepthStencilValue" "vkDepth"- vkDepth :: CFloat- , -- No documentation found for Nested "VkClearDepthStencilValue" "vkStencil"- vkStencil :: Word32- }- deriving (Eq, Show)--instance Storable VkClearDepthStencilValue where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkClearDepthStencilValue <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkDepth (poked :: VkClearDepthStencilValue))- *> poke (ptr `plusPtr` 4) (vkStencil (poked :: VkClearDepthStencilValue))--- | VkClearAttachment - Structure specifying a clear attachment------ = Description--- #_description#------ No memory barriers are needed between @vkCmdClearAttachments@ and--- preceding or subsequent draw or attachment clear commands in the same--- subpass.------ The @vkCmdClearAttachments@ command is not affected by the bound--- pipeline state.------ Attachments /can/ also be cleared at the beginning of a render pass--- instance by setting @loadOp@ (or @stencilLoadOp@) of--- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription' to--- @VK_ATTACHMENT_LOAD_OP_CLEAR@, as described for--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass'.------ == Valid Usage------ - If @aspectMask@ includes @VK_IMAGE_ASPECT_COLOR_BIT@, it /must/ not--- include @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@------ - @aspectMask@ /must/ not include @VK_IMAGE_ASPECT_METADATA_BIT@------ - @clearValue@ /must/ be a valid @VkClearValue@ union------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- values------ - @aspectMask@ /must/ not be @0@------ = See Also--- #_see_also#------ 'VkClearValue',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',--- 'vkCmdClearAttachments'-data VkClearAttachment = VkClearAttachment- { -- No documentation found for Nested "VkClearAttachment" "vkAspectMask"- vkAspectMask :: VkImageAspectFlags- , -- No documentation found for Nested "VkClearAttachment" "vkColorAttachment"- vkColorAttachment :: Word32- , -- No documentation found for Nested "VkClearAttachment" "vkClearValue"- vkClearValue :: VkClearValue- }- deriving (Eq, Show)--instance Storable VkClearAttachment where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkClearAttachment <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkClearAttachment))- *> poke (ptr `plusPtr` 4) (vkColorAttachment (poked :: VkClearAttachment))- *> poke (ptr `plusPtr` 8) (vkClearValue (poked :: VkClearAttachment))--- | VkDrawIndirectCommand - Structure specifying a draw indirect command------ = Description--- #_description#------ The members of @VkDrawIndirectCommand@ have the same meaning as the--- similarly named parameters of 'vkCmdDraw'.------ == Valid Usage------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>------ - If the--- <{html_spec_relative}#features-features-drawIndirectFirstInstance drawIndirectFirstInstance>--- feature is not enabled, @firstInstance@ /must/ be @0@------ = See Also--- #_see_also#------ 'vkCmdDrawIndirect'-data VkDrawIndirectCommand = VkDrawIndirectCommand- { -- No documentation found for Nested "VkDrawIndirectCommand" "vkVertexCount"- vkVertexCount :: Word32- , -- No documentation found for Nested "VkDrawIndirectCommand" "vkInstanceCount"- vkInstanceCount :: Word32- , -- No documentation found for Nested "VkDrawIndirectCommand" "vkFirstVertex"- vkFirstVertex :: Word32- , -- No documentation found for Nested "VkDrawIndirectCommand" "vkFirstInstance"- vkFirstInstance :: Word32- }- deriving (Eq, Show)--instance Storable VkDrawIndirectCommand where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkDrawIndirectCommand <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkVertexCount (poked :: VkDrawIndirectCommand))- *> poke (ptr `plusPtr` 4) (vkInstanceCount (poked :: VkDrawIndirectCommand))- *> poke (ptr `plusPtr` 8) (vkFirstVertex (poked :: VkDrawIndirectCommand))- *> poke (ptr `plusPtr` 12) (vkFirstInstance (poked :: VkDrawIndirectCommand))--- | VkDrawIndexedIndirectCommand - Structure specifying a draw indexed--- indirect command------ = Description--- #_description#------ The members of @VkDrawIndexedIndirectCommand@ have the same meaning as--- the similarly named parameters of 'vkCmdDrawIndexed'.------ == Valid Usage------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>------ - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be--- less than or equal to the size of the bound index buffer, with--- @indexSize@ being based on the type specified by @indexType@, where--- the index buffer, @indexType@, and @offset@ are specified via--- @vkCmdBindIndexBuffer@------ - If the--- <{html_spec_relative}#features-features-drawIndirectFirstInstance drawIndirectFirstInstance>--- feature is not enabled, @firstInstance@ /must/ be @0@------ = See Also--- #_see_also#------ 'vkCmdDrawIndexedIndirect'-data VkDrawIndexedIndirectCommand = VkDrawIndexedIndirectCommand- { -- No documentation found for Nested "VkDrawIndexedIndirectCommand" "vkIndexCount"- vkIndexCount :: Word32- , -- No documentation found for Nested "VkDrawIndexedIndirectCommand" "vkInstanceCount"- vkInstanceCount :: Word32- , -- No documentation found for Nested "VkDrawIndexedIndirectCommand" "vkFirstIndex"- vkFirstIndex :: Word32- , -- No documentation found for Nested "VkDrawIndexedIndirectCommand" "vkVertexOffset"- vkVertexOffset :: Int32- , -- No documentation found for Nested "VkDrawIndexedIndirectCommand" "vkFirstInstance"- vkFirstInstance :: Word32- }- deriving (Eq, Show)--instance Storable VkDrawIndexedIndirectCommand where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkDrawIndexedIndirectCommand <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkIndexCount (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 4) (vkInstanceCount (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 8) (vkFirstIndex (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 12) (vkVertexOffset (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 16) (vkFirstInstance (poked :: VkDrawIndexedIndirectCommand))--- | VkDispatchIndirectCommand - Structure specifying a dispatch indirect--- command------ = Description--- #_description#------ The members of @VkDispatchIndirectCommand@ have the same meaning as the--- corresponding parameters of 'vkCmdDispatch'.------ == Valid Usage------ - @x@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]------ - @y@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]------ - @z@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]------ = See Also--- #_see_also#------ 'vkCmdDispatchIndirect'-data VkDispatchIndirectCommand = VkDispatchIndirectCommand- { -- No documentation found for Nested "VkDispatchIndirectCommand" "vkX"- vkX :: Word32- , -- No documentation found for Nested "VkDispatchIndirectCommand" "vkY"- vkY :: Word32- , -- No documentation found for Nested "VkDispatchIndirectCommand" "vkZ"- vkZ :: Word32- }- deriving (Eq, Show)--instance Storable VkDispatchIndirectCommand where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkDispatchIndirectCommand <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkDispatchIndirectCommand))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkDispatchIndirectCommand))- *> poke (ptr `plusPtr` 8) (vkZ (poked :: VkDispatchIndirectCommand))--- | VkClearColorValue - Structure specifying a clear color value------ = Description--- #_description#------ The four array elements of the clear color map to R, G, B, and A--- components of image formats, in order.------ If the image has more than one sample, the same value is written to all--- samples for any pixels being cleared.------ = See Also--- #_see_also#------ 'VkClearValue', 'vkCmdClearColorImage'-data VkClearColorValue- = -- No documentation found for Nested "VkClearColorValue" "VkFloat32"- VkFloat32 (Vector 4 CFloat)- | -- No documentation found for Nested "VkClearColorValue" "VkInt32"- VkInt32 (Vector 4 Int32)- | -- No documentation found for Nested "VkClearColorValue" "VkUint32"- VkUint32 (Vector 4 Word32)- deriving (Eq, Show)---- | _Note_: peek is undefined as we wouldn't know which constructor to use-instance Storable VkClearColorValue where- sizeOf ~_ = 16- alignment ~_ = 4- peek _ = error "peek @VkClearColorValue"- poke ptr = \case- VkFloat32 e -> poke (castPtr ptr) e- VkInt32 e -> poke (castPtr ptr) e- VkUint32 e -> poke (castPtr ptr) e--- | VkClearValue - Structure specifying a clear value------ = Description--- #_description#------ This union is used where part of the API requires either color or--- depth\/stencil clear values, depending on the attachment, and defines--- the initial clear values in the 'VkRenderPassBeginInfo' structure.------ == Valid Usage------ - @depthStencil@ /must/ be a valid @VkClearDepthStencilValue@--- structure------ = See Also--- #_see_also#------ 'VkClearAttachment', 'VkClearColorValue', 'VkClearDepthStencilValue',--- 'VkRenderPassBeginInfo'-data VkClearValue- = -- No documentation found for Nested "VkClearValue" "VkColor"- VkColor VkClearColorValue- | -- No documentation found for Nested "VkClearValue" "VkDepthStencil"- VkDepthStencil VkClearDepthStencilValue- deriving (Eq, Show)---- | _Note_: peek is undefined as we wouldn't know which constructor to use-instance Storable VkClearValue where- sizeOf ~_ = 16- alignment ~_ = 4- peek _ = error "peek @VkClearValue"- poke ptr = \case- VkColor e -> poke (castPtr ptr) e- VkDepthStencil e -> poke (castPtr ptr) e--- | VkStencilFaceFlags - Bitmask of VkStencilFaceFlagBits------ = Description--- #_description#------ @VkStencilFaceFlags@ is a bitmask type for setting a mask of zero or--- more 'VkStencilFaceFlagBits'.------ = See Also--- #_see_also#+--+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableIndexBufferEntryNVX',+-- 'vkCmdBindIndexBuffer'+newtype VkIndexType = VkIndexType Int32+ deriving (Eq, Ord, Storable)++instance Show VkIndexType where+ showsPrec _ VK_INDEX_TYPE_UINT16 = showString "VK_INDEX_TYPE_UINT16"+ showsPrec _ VK_INDEX_TYPE_UINT32 = showString "VK_INDEX_TYPE_UINT32"+ showsPrec p (VkIndexType x) = showParen (p >= 11) (showString "VkIndexType " . showsPrec 11 x)++instance Read VkIndexType where+ readPrec = parens ( choose [ ("VK_INDEX_TYPE_UINT16", pure VK_INDEX_TYPE_UINT16)+ , ("VK_INDEX_TYPE_UINT32", pure VK_INDEX_TYPE_UINT32)+ ] ++++ prec 10 (do+ expectP (Ident "VkIndexType")+ v <- step readPrec+ pure (VkIndexType v)+ )+ )++-- | @VK_INDEX_TYPE_UINT16@ specifies that indices are 16-bit unsigned+-- integer values.+pattern VK_INDEX_TYPE_UINT16 :: VkIndexType+pattern VK_INDEX_TYPE_UINT16 = VkIndexType 0++-- | @VK_INDEX_TYPE_UINT32@ specifies that indices are 32-bit unsigned+-- integer values.+pattern VK_INDEX_TYPE_UINT32 :: VkIndexType+pattern VK_INDEX_TYPE_UINT32 = VkIndexType 1+-- ** VkSubpassContents++-- | VkSubpassContents - Specify how commands in the first subpass of a+-- render pass are provided+--+-- = See Also+--+-- 'vkCmdBeginRenderPass', 'vkCmdNextSubpass'+newtype VkSubpassContents = VkSubpassContents Int32+ deriving (Eq, Ord, Storable)++instance Show VkSubpassContents where+ showsPrec _ VK_SUBPASS_CONTENTS_INLINE = showString "VK_SUBPASS_CONTENTS_INLINE"+ showsPrec _ VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = showString "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"+ showsPrec p (VkSubpassContents x) = showParen (p >= 11) (showString "VkSubpassContents " . showsPrec 11 x)++instance Read VkSubpassContents where+ readPrec = parens ( choose [ ("VK_SUBPASS_CONTENTS_INLINE", pure VK_SUBPASS_CONTENTS_INLINE)+ , ("VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS", pure VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)+ ] ++++ prec 10 (do+ expectP (Ident "VkSubpassContents")+ v <- step readPrec+ pure (VkSubpassContents v)+ )+ )++-- | @VK_SUBPASS_CONTENTS_INLINE@ specifies that the contents of the subpass+-- will be recorded inline in the primary command buffer, and secondary+-- command buffers /must/ not be executed within the subpass.+pattern VK_SUBPASS_CONTENTS_INLINE :: VkSubpassContents+pattern VK_SUBPASS_CONTENTS_INLINE = VkSubpassContents 0++-- | @VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS@ specifies that the+-- contents are recorded in secondary command buffers that will be called+-- from the primary command buffer, and 'vkCmdExecuteCommands' is the only+-- valid command on the command buffer until 'vkCmdNextSubpass' or+-- 'vkCmdEndRenderPass'.+pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS :: VkSubpassContents+pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = VkSubpassContents 1+-- ** VkStencilFaceFlagBits++-- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for+-- which to update the compare mask+--+-- = See Also+--+-- 'VkStencilFaceFlags'+newtype VkStencilFaceFlagBits = VkStencilFaceFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkStencilFaceFlagBits where+ showsPrec _ VK_STENCIL_FACE_FRONT_BIT = showString "VK_STENCIL_FACE_FRONT_BIT"+ showsPrec _ VK_STENCIL_FACE_BACK_BIT = showString "VK_STENCIL_FACE_BACK_BIT"+ showsPrec _ VK_STENCIL_FRONT_AND_BACK = showString "VK_STENCIL_FRONT_AND_BACK"+ showsPrec p (VkStencilFaceFlagBits x) = showParen (p >= 11) (showString "VkStencilFaceFlagBits " . showsPrec 11 x)++instance Read VkStencilFaceFlagBits where+ readPrec = parens ( choose [ ("VK_STENCIL_FACE_FRONT_BIT", pure VK_STENCIL_FACE_FRONT_BIT)+ , ("VK_STENCIL_FACE_BACK_BIT", pure VK_STENCIL_FACE_BACK_BIT)+ , ("VK_STENCIL_FRONT_AND_BACK", pure VK_STENCIL_FRONT_AND_BACK)+ ] ++++ prec 10 (do+ expectP (Ident "VkStencilFaceFlagBits")+ v <- step readPrec+ pure (VkStencilFaceFlagBits v)+ )+ )++-- | @VK_STENCIL_FACE_FRONT_BIT@ specifies that only the front set of stencil+-- state is updated.+pattern VK_STENCIL_FACE_FRONT_BIT :: VkStencilFaceFlagBits+pattern VK_STENCIL_FACE_FRONT_BIT = VkStencilFaceFlagBits 0x00000001++-- | @VK_STENCIL_FACE_BACK_BIT@ specifies that only the back set of stencil+-- state is updated.+pattern VK_STENCIL_FACE_BACK_BIT :: VkStencilFaceFlagBits+pattern VK_STENCIL_FACE_BACK_BIT = VkStencilFaceFlagBits 0x00000002++-- | @VK_STENCIL_FRONT_AND_BACK@ is the combination of+-- @VK_STENCIL_FACE_FRONT_BIT@ and @VK_STENCIL_FACE_BACK_BIT@, and+-- specifies that both sets of stencil state are updated.+pattern VK_STENCIL_FRONT_AND_BACK :: VkStencilFaceFlagBits+pattern VK_STENCIL_FRONT_AND_BACK = VkStencilFaceFlagBits 0x00000003+-- | vkCmdBindPipeline - Bind a pipeline object to a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer that the pipeline will be+-- bound to.+--+-- - @pipelineBindPoint@ is a+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value specifying+-- whether to bind to the compute or graphics bind point. Binding one+-- does not disturb the other.+--+-- - @pipeline@ is the pipeline to be bound.+--+-- = Description+--+-- Once bound, a pipeline binding affects subsequent graphics or compute+-- commands in the command buffer until a different pipeline is bound to+-- the bind point. The pipeline bound to @VK_PIPELINE_BIND_POINT_COMPUTE@+-- controls the behavior of 'vkCmdDispatch' and 'vkCmdDispatchIndirect'.+-- The pipeline bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ controls the+-- behavior of all [drawing+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing).+-- No other commands are affected by the pipeline state.+--+-- == Valid Usage+--+-- - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_COMPUTE@, the+-- @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support compute operations+--+-- - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_GRAPHICS@, the+-- @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_COMPUTE@,+-- @pipeline@ /must/ be a compute pipeline+--+-- - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_GRAPHICS@,+-- @pipeline@ /must/ be a graphics pipeline+--+-- - If the [variable multisample+-- rate](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-variableMultisampleRate)+-- feature is not supported, @pipeline@ is a graphics pipeline, the+-- current subpass has no attachments, and this is not the first call+-- to this function with a graphics pipeline after transitioning to the+-- current subpass, then the sample count specified by this pipeline+-- /must/ match that set in the previous pipeline+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@+-- is @VK_FALSE@, and @pipeline@ is a graphics pipeline created with a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+-- structure having its @sampleLocationsEnable@ member set to @VK_TRUE@+-- but without @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ enabled then the+-- current render pass instance /must/ have been begun by specifying a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkRenderPassSampleLocationsBeginInfoEXT'+-- structure whose @pPostSubpassSampleLocations@ member contains an+-- element with a @subpassIndex@ matching the current subpass index and+-- the @sampleLocationsInfo@ member of that element /must/ match the+-- @sampleLocationsInfo@ specified in+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+-- when the pipeline was created+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pipelineBindPoint@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value+--+-- - @pipeline@ /must/ be a valid @VkPipeline@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - Both of @commandBuffer@, and @pipeline@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline',+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint'+foreign import ccall "vkCmdBindPipeline" vkCmdBindPipeline :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()+-- | vkCmdSetViewport - Set the viewport on a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @firstViewport@ is the index of the first viewport whose parameters+-- are updated by the command.+--+-- - @viewportCount@ is the number of viewports whose parameters are+-- updated by the command.+--+-- - @pViewports@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.Pipeline.VkViewport' structures specifying+-- viewport parameters.+--+-- = Description+--+-- The viewport parameters taken from element i of @pViewports@ replace the+-- current state for the viewport index @firstViewport@ + i, for i in [0,+-- @viewportCount@).+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_VIEWPORT@ dynamic state enabled+--+-- - @firstViewport@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxViewports@+--+-- - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@+-- and @VkPhysicalDeviceLimits@::@maxViewports@, inclusive+--+-- - If the [multiple+-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)+-- feature is not enabled, @firstViewport@ /must/ be @0@+--+-- - If the [multiple+-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)+-- feature is not enabled, @viewportCount@ /must/ be @1@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pViewports@ /must/ be a valid pointer to an array of+-- @viewportCount@ @VkViewport@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - @viewportCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.VkViewport'+foreign import ccall "vkCmdSetViewport" vkCmdSetViewport :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()+-- | vkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @firstScissor@ is the index of the first scissor whose state is+-- updated by the command.+--+-- - @scissorCount@ is the number of scissors whose rectangles are+-- updated by the command.+--+-- - @pScissors@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structures defining+-- scissor rectangles.+--+-- = Description+--+-- The scissor rectangles taken from element i of @pScissors@ replace the+-- current state for the scissor index @firstScissor@ + i, for i in [0,+-- @scissorCount@).+--+-- Each scissor rectangle is described by a+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structure, with the+-- @offset.x@ and @offset.y@ values determining the upper left corner of+-- the scissor rectangle, and the @extent.width@ and @extent.height@ values+-- determining the size in pixels.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_SCISSOR@ dynamic state enabled+--+-- - @firstScissor@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxViewports@+--+-- - The sum of @firstScissor@ and @scissorCount@ /must/ be between @1@+-- and @VkPhysicalDeviceLimits@::@maxViewports@, inclusive+--+-- - If the [multiple+-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)+-- feature is not enabled, @firstScissor@ /must/ be @0@+--+-- - If the [multiple+-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)+-- feature is not enabled, @scissorCount@ /must/ be @1@+--+-- - The @x@ and @y@ members of @offset@ /must/ be greater than or equal+-- to @0@+--+-- - Evaluation of (@offset.x@ + @extent.width@) /must/ not cause a+-- signed integer addition overflow+--+-- - Evaluation of (@offset.y@ + @extent.height@) /must/ not cause a+-- signed integer addition overflow+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pScissors@ /must/ be a valid pointer to an array of @scissorCount@+-- @VkRect2D@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - @scissorCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'+foreign import ccall "vkCmdSetScissor" vkCmdSetScissor :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()+-- | vkCmdSetLineWidth - Set the dynamic line width state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @lineWidth@ is the width of rasterized line segments.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_LINE_WIDTH@ dynamic state enabled+--+-- - If the [wide+-- lines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-wideLines)+-- feature is not enabled, @lineWidth@ /must/ be @1.0@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdSetLineWidth" vkCmdSetLineWidth :: ("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()+-- | vkCmdSetDepthBias - Set the depth bias dynamic state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @depthBiasConstantFactor@ is a scalar factor controlling the+-- constant depth value added to each fragment.+--+-- - @depthBiasClamp@ is the maximum (or minimum) depth bias of a+-- fragment.+--+-- - @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s+-- slope in depth bias calculations.+--+-- = Description+--+-- If @depthBiasEnable@ is @VK_FALSE@, no depth bias is applied and the+-- fragment’s depth values are unchanged.+--+-- @depthBiasSlopeFactor@ scales the maximum depth slope of the polygon,+-- and @depthBiasConstantFactor@ scales an implementation-dependent+-- constant that relates to the usable resolution of the depth buffer. The+-- resulting values are summed to produce the depth bias value which is+-- then clamped to a minimum or maximum value specified by+-- @depthBiasClamp@. @depthBiasSlopeFactor@, @depthBiasConstantFactor@, and+-- @depthBiasClamp@ /can/ each be positive, negative, or zero.+--+-- The maximum depth slope m of a triangle is+--+-- \[m = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2+-- + \left({{\partial z_f} \over {\partial y_f}}\right)^2}\]+--+-- where (xf, yf, zf) is a point on the triangle. m /may/ be approximated+-- as+--+-- \[m = \max\left( \left| { {\partial z_f} \over {\partial x_f} } \right|,+-- \left| { {\partial z_f} \over {\partial y_f} } \right|+-- \right).\]+--+-- The minimum resolvable difference r is an implementation-dependent+-- parameter that depends on the depth buffer representation. It is the+-- smallest difference in framebuffer coordinate z values that is+-- guaranteed to remain distinct throughout polygon rasterization and in+-- the depth buffer. All pairs of fragments generated by the rasterization+-- of two polygons with otherwise identical vertices, but @z@f values that+-- differ by $r$, will have distinct depth values.+--+-- For fixed-point depth buffer representations, r is constant throughout+-- the range of the entire depth buffer. For floating-point depth buffers,+-- there is no single minimum resolvable difference. In this case, the+-- minimum resolvable difference for a given polygon is dependent on the+-- maximum exponent, e, in the range of z values spanned by the primitive.+-- If n is the number of bits in the floating-point mantissa, the minimum+-- resolvable difference, r, for the given primitive is defined as+--+-- - r = 2e-n+--+-- If a triangle is rasterized using the+-- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ polygon mode, then this minimum+-- resolvable difference /may/ not be resolvable for samples outside of the+-- triangle, where the depth is extrapolated.+--+-- If no depth buffer is present, r is undefined.+--+-- The bias value o for a polygon is+--+-- \[o =+-- \begin{cases}+-- m \times depthBiasSlopeFactor ++-- r \times depthBiasConstantFactor & depthBiasClamp = 0\ or\ NaN \\+-- \min(m \times depthBiasSlopeFactor ++-- r \times depthBiasConstantFactor,+-- depthBiasClamp) & depthBiasClamp > 0 \\+-- \max(m \times depthBiasSlopeFactor ++-- r \times depthBiasConstantFactor,+-- depthBiasClamp) & depthBiasClamp < 0 \\+-- \end{cases}\]+--+-- m is computed as described above. If the depth buffer uses a fixed-point+-- representation, m is a function of depth values in the range [0,1], and+-- o is applied to depth values in the same range.+--+-- For fixed-point depth buffers, fragment depth values are always limited+-- to the range [0,1] by clamping after depth bias addition is performed.+-- Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is enabled, fragment depth values are clamped even when the+-- depth buffer uses a floating-point representation.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_DEPTH_BIAS@ dynamic state enabled+--+-- - If the [depth bias+-- clamping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthBiasClamp)+-- feature is not enabled, @depthBiasClamp@ /must/ be @0.0@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdSetDepthBias" vkCmdSetDepthBias :: ("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()+-- | vkCmdSetBlendConstants - Set the values of blend constants+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @blendConstants@ is an array of four values specifying the R, G, B,+-- and A components of the blend constant color used in blending,+-- depending on the [blend+-- factor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendfactors).+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ dynamic state enabled+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdSetBlendConstants" vkCmdSetBlendConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()+-- | vkCmdSetDepthBounds - Set the depth bounds test values for a command+-- buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @minDepthBounds@ is the lower bound of the range of depth values+-- used in the depth bounds test.+--+-- - @maxDepthBounds@ is the upper bound of the range.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ dynamic state enabled+--+-- - Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is enabled @minDepthBounds@ /must/ be between @0.0@ and+-- @1.0@, inclusive+--+-- - Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is enabled @maxDepthBounds@ /must/ be between @0.0@ and+-- @1.0@, inclusive+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdSetDepthBounds" vkCmdSetDepthBounds :: ("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()+-- | vkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the+-- set of stencil state for which to update the compare mask.+--+-- - @compareMask@ is the new value to use as the stencil compare mask.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ dynamic state enabled+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'+-- values+--+-- - @faceMask@ /must/ not be @0@+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'+foreign import ccall "vkCmdSetStencilCompareMask" vkCmdSetStencilCompareMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()+-- | vkCmdSetStencilWriteMask - Set the stencil write mask dynamic state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the+-- set of stencil state for which to update the write mask, as+-- described above for 'vkCmdSetStencilCompareMask'.+--+-- - @writeMask@ is the new value to use as the stencil write mask.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ dynamic state enabled+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'+-- values+--+-- - @faceMask@ /must/ not be @0@+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'+foreign import ccall "vkCmdSetStencilWriteMask" vkCmdSetStencilWriteMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()+-- | vkCmdSetStencilReference - Set the stencil reference dynamic state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the+-- set of stencil state for which to update the reference value, as+-- described above for 'vkCmdSetStencilCompareMask'.+--+-- - @reference@ is the new value to use as the stencil reference value.+--+-- == Valid Usage+--+-- - The bound graphics pipeline /must/ have been created with the+-- @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ dynamic state enabled+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'+-- values+--+-- - @faceMask@ /must/ not be @0@+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'+foreign import ccall "vkCmdSetStencilReference" vkCmdSetStencilReference :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()+-- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer that the descriptor sets will+-- be bound to.+--+-- - @pipelineBindPoint@ is a+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' indicating whether+-- the descriptors will be used by graphics pipelines or compute+-- pipelines. There is a separate set of bind points for each of+-- graphics and compute, so binding one does not disturb the other.+--+-- - @layout@ is a @VkPipelineLayout@ object used to program the+-- bindings.+--+-- - @firstSet@ is the set number of the first descriptor set to be+-- bound.+--+-- - @descriptorSetCount@ is the number of elements in the+-- @pDescriptorSets@ array.+--+-- - @pDescriptorSets@ is an array of handles to @VkDescriptorSet@+-- objects describing the descriptor sets to write to.+--+-- - @dynamicOffsetCount@ is the number of dynamic offsets in the+-- @pDynamicOffsets@ array.+--+-- - @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values+-- specifying dynamic offsets.+--+-- = Description+--+-- @vkCmdBindDescriptorSets@ causes the sets numbered [@firstSet@..+-- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in+-- @pDescriptorSets@[0..@descriptorSetCount@-1] for subsequent rendering+-- commands (either compute or graphics, according to the+-- @pipelineBindPoint@). Any bindings that were previously applied via+-- these sets are no longer valid.+--+-- Once bound, a descriptor set affects rendering of subsequent graphics or+-- compute commands in the command buffer until a different set is bound to+-- the same set number, or else until the set is disturbed as described in+-- [Pipeline Layout+-- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility).+--+-- A compatible descriptor set /must/ be bound for all set numbers that any+-- shaders in a pipeline access, at the time that a draw or dispatch+-- command is recorded to execute using that pipeline. However, if none of+-- the shaders in a pipeline statically use any bindings with a particular+-- set number, then no descriptor set need be bound for that set number,+-- even if the pipeline layout includes a non-trivial descriptor set layout+-- for that set number.+--+-- If any of the sets being bound include dynamic uniform or storage+-- buffers, then @pDynamicOffsets@ includes one element for each array+-- element in each dynamic descriptor type binding in each set. Values are+-- taken from @pDynamicOffsets@ in an order such that all entries for set N+-- come before set N+1; within a set, entries are ordered by the binding+-- numbers in the descriptor set layouts; and within a binding array,+-- elements are in order. @dynamicOffsetCount@ /must/ equal the total+-- number of dynamic descriptors in the sets being bound.+--+-- The effective offset used for dynamic uniform and storage buffer+-- bindings is the sum of the relative offset taken from @pDynamicOffsets@,+-- and the base address of the buffer plus base offset in the descriptor+-- set. The length of the dynamic uniform and storage buffer bindings is+-- the buffer range as specified in the descriptor set.+--+-- Each of the @pDescriptorSets@ /must/ be compatible with the pipeline+-- layout specified by @layout@. The layout used to program the bindings+-- /must/ also be compatible with the pipeline used in subsequent graphics+-- or compute commands, as defined in the [Pipeline Layout+-- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+-- section.+--+-- The descriptor set contents bound by a call to @vkCmdBindDescriptorSets@+-- /may/ be consumed at the following times:+--+-- - For descriptor bindings created with the+-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set, the+-- contents /may/ be consumed when the command buffer is submitted to a+-- queue, or during shader execution of the resulting draws and+-- dispatches, or any time in between. Otherwise,+--+-- - during host execution of the command, or during shader execution of+-- the resulting draws and dispatches, or any time in between.+--+-- Thus, the contents of a descriptor set binding /must/ not be altered+-- (overwritten by an update command, or freed) between the first point in+-- time that it /may/ be consumed, and and when the command completes+-- executing on the queue.+--+-- The contents of @pDynamicOffsets@ are consumed immediately during+-- execution of @vkCmdBindDescriptorSets@. Once all pending uses have+-- completed, it is legal to update and reuse a descriptor set.+--+-- == Valid Usage+--+-- - Each element of @pDescriptorSets@ /must/ have been allocated with a+-- @VkDescriptorSetLayout@ that matches (is the same as, or identically+-- defined as) the @VkDescriptorSetLayout@ at set /n/ in @layout@,+-- where /n/ is the sum of @firstSet@ and the index into+-- @pDescriptorSets@+--+-- - @dynamicOffsetCount@ /must/ be equal to the total number of dynamic+-- descriptors in @pDescriptorSets@+--+-- - The sum of @firstSet@ and @descriptorSetCount@ /must/ be less than+-- or equal to @VkPipelineLayoutCreateInfo@::@setLayoutCount@ provided+-- when @layout@ was created+--+-- - @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s+-- parent @VkCommandPool@’s queue family+--+-- - Each element of @pDynamicOffsets@ /must/ satisfy the required+-- alignment for the corresponding descriptor binding’s descriptor type+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pipelineBindPoint@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value+--+-- - @layout@ /must/ be a valid @VkPipelineLayout@ handle+--+-- - @pDescriptorSets@ /must/ be a valid pointer to an array of+-- @descriptorSetCount@ valid @VkDescriptorSet@ handles+--+-- - If @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a+-- valid pointer to an array of @dynamicOffsetCount@ @uint32_t@ values+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - @descriptorSetCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @layout@, and the elements of+-- @pDescriptorSets@ /must/ have been created, allocated, or retrieved+-- from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'+foreign import ccall "vkCmdBindDescriptorSets" vkCmdBindDescriptorSets :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()+-- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @buffer@ is the buffer being bound.+--+-- - @offset@ is the starting offset in bytes within @buffer@ used in+-- index buffer address calculations.+--+-- - @indexType@ is a 'VkIndexType' value specifying whether indices are+-- treated as 16 bits or 32 bits.+--+-- == Valid Usage+--+-- - @offset@ /must/ be less than the size of @buffer@+--+-- - The sum of @offset@ and the address of the range of @VkDeviceMemory@+-- object that is backing @buffer@, /must/ be a multiple of the type+-- indicated by @indexType@+--+-- - @buffer@ /must/ have been created with the+-- @VK_BUFFER_USAGE_INDEX_BUFFER_BIT@ flag+--+-- - If @buffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @indexType@ /must/ be a valid 'VkIndexType' value+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - Both of @buffer@, and @commandBuffer@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,+-- 'VkIndexType'+foreign import ccall "vkCmdBindIndexBuffer" vkCmdBindIndexBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()+-- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @firstBinding@ is the index of the first vertex input binding whose+-- state is updated by the command.+--+-- - @bindingCount@ is the number of vertex input bindings whose state is+-- updated by the command.+--+-- - @pBuffers@ is a pointer to an array of buffer handles.+--+-- - @pOffsets@ is a pointer to an array of buffer offsets.+--+-- = Description+--+-- The values taken from elements i of @pBuffers@ and @pOffsets@ replace+-- the current state for the vertex input binding @firstBinding@ + i, for i+-- in [0, @bindingCount@). The vertex input binding is updated to start at+-- the offset indicated by @pOffsets@[i] from the start of the buffer+-- @pBuffers@[i]. All vertex input attributes that use each of these+-- bindings will use these updated addresses in their address calculations+-- for subsequent draw commands.+--+-- == Valid Usage+--+-- - @firstBinding@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@+--+-- - The sum of @firstBinding@ and @bindingCount@ /must/ be less than or+-- equal to @VkPhysicalDeviceLimits@::@maxVertexInputBindings@+--+-- - All elements of @pOffsets@ /must/ be less than the size of the+-- corresponding element in @pBuffers@+--+-- - All elements of @pBuffers@ /must/ have been created with the+-- @VK_BUFFER_USAGE_VERTEX_BUFFER_BIT@ flag+--+-- - Each element of @pBuffers@ that is non-sparse /must/ be bound+-- completely and contiguously to a single @VkDeviceMemory@ object+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@+-- valid @VkBuffer@ handles+--+-- - @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@+-- @VkDeviceSize@ values+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - @bindingCount@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and the elements of @pBuffers@ /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@+foreign import ccall "vkCmdBindVertexBuffers" vkCmdBindVertexBuffers :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()+-- | vkCmdDraw - Draw primitives+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @vertexCount@ is the number of vertices to draw.+--+-- - @instanceCount@ is the number of instances to draw.+--+-- - @firstVertex@ is the index of the first vertex to draw.+--+-- - @firstInstance@ is the instance ID of the first instance to draw.+--+-- = Description+--+-- When the command is executed, primitives are assembled using the current+-- primitive topology and @vertexCount@ consecutive vertex indices with the+-- first @vertexIndex@ value equal to @firstVertex@. The primitives are+-- drawn @instanceCount@ times with @instanceIndex@ starting with+-- @firstInstance@ and increasing sequentially for each instance. The+-- assembled primitives execute the bound graphics pipeline.+--+-- == Valid Usage+--+-- - The current render pass /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@+-- structure specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure+-- specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - For each set /n/ that is statically used by the @VkPipeline@ bound+-- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have+-- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for set /n/, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - For each push constant that is statically used by the @VkPipeline@+-- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value+-- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for push constants, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - Descriptors in each bound descriptor set, specified via+-- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically+-- used by the bound @VkPipeline@ object, specified via+-- @vkCmdBindPipeline@+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)+--+-- - A valid graphics pipeline /must/ be bound to the current command+-- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@+--+-- - If the @VkPipeline@ object bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that+-- state /must/ have been set on the current command buffer+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used to sample from any+-- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,+-- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,+-- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in+-- any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that+-- includes a LOD bias or any offset values, in any shader stage+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result+-- of this command /must/ be of a format which supports linear+-- filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of+-- a format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not+-- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to @VK_TRUE@ and the current subpass has a depth\/stencil+-- attachment, then that attachment /must/ have been created with the+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdDraw" vkCmdDraw :: ("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()+-- | vkCmdDrawIndexed - Issue an indexed draw into a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @indexCount@ is the number of vertices to draw.+--+-- - @instanceCount@ is the number of instances to draw.+--+-- - @firstIndex@ is the base index within the index buffer.+--+-- - @vertexOffset@ is the value added to the vertex index before+-- indexing into the vertex buffer.+--+-- - @firstInstance@ is the instance ID of the first instance to draw.+--+-- = Description+--+-- When the command is executed, primitives are assembled using the current+-- primitive topology and @indexCount@ vertices whose indices are retrieved+-- from the index buffer. The index buffer is treated as an array of+-- tightly packed unsigned integers of size defined by the+-- 'vkCmdBindIndexBuffer'::@indexType@ parameter with which the buffer was+-- bound.+--+-- The first vertex index is at an offset of @firstIndex@ * @indexSize@ ++-- @offset@ within the bound index buffer, where @offset@ is the offset+-- specified by @vkCmdBindIndexBuffer@ and @indexSize@ is the byte size of+-- the type specified by @indexType@. Subsequent index values are retrieved+-- from consecutive locations in the index buffer. Indices are first+-- compared to the primitive restart value, then zero extended to 32 bits+-- (if the @indexType@ is @VK_INDEX_TYPE_UINT16@) and have @vertexOffset@+-- added to them, before being supplied as the @vertexIndex@ value.+--+-- The primitives are drawn @instanceCount@ times with @instanceIndex@+-- starting with @firstInstance@ and increasing sequentially for each+-- instance. The assembled primitives execute the bound graphics pipeline.+--+-- == Valid Usage+--+-- - The current render pass /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@+-- structure specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure+-- specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - For each set /n/ that is statically used by the @VkPipeline@ bound+-- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have+-- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for set /n/, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - For each push constant that is statically used by the @VkPipeline@+-- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value+-- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for push constants, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - Descriptors in each bound descriptor set, specified via+-- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically+-- used by the bound @VkPipeline@ object, specified via+-- @vkCmdBindPipeline@+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)+--+-- - A valid graphics pipeline /must/ be bound to the current command+-- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@+--+-- - If the @VkPipeline@ object bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that+-- state /must/ have been set on the current command buffer+--+-- - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be+-- less than or equal to the size of the bound index buffer, with+-- indexSize being based on the type specified by @indexType@, where+-- the index buffer, @indexType@, and @offset@ are specified via+-- @vkCmdBindIndexBuffer@+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used to sample from any+-- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,+-- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,+-- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in+-- any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that+-- includes a LOD bias or any offset values, in any shader stage+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result+-- of this command /must/ be of a format which supports linear+-- filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of+-- a format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not+-- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to @VK_TRUE@ and the current subpass has a depth\/stencil+-- attachment, then that attachment /must/ have been created with the+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdDrawIndexed" vkCmdDrawIndexed :: ("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()+-- | vkCmdDrawIndirect - Issue an indirect draw into a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @buffer@ is the buffer containing draw parameters.+--+-- - @offset@ is the byte offset into @buffer@ where parameters begin.+--+-- - @drawCount@ is the number of draws to execute, and /can/ be zero.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- @vkCmdDrawIndirect@ behaves similarly to 'vkCmdDraw' except that the+-- parameters are read by the device from a buffer during execution.+-- @drawCount@ draws are executed by the command, with parameters taken+-- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for+-- each successive draw. The parameters of each draw are encoded in an+-- array of 'VkDrawIndirectCommand' structures. If @drawCount@ is less than+-- or equal to one, @stride@ is ignored.+--+-- == Valid Usage+--+-- - If @buffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @buffer@ /must/ have been created with the+-- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of+-- @4@ and /must/ be greater than or equal to+-- @sizeof@(@VkDrawIndirectCommand@)+--+-- - If the [multi-draw+-- indirect](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiDrawIndirect)+-- feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- - If the+-- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)+-- feature is not enabled, all the @firstInstance@ members of the+-- @VkDrawIndirectCommand@ structures accessed by this command /must/+-- be @0@+--+-- - The current render pass /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@+-- structure specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure+-- specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - For each set /n/ that is statically used by the @VkPipeline@ bound+-- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have+-- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for set /n/, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - For each push constant that is statically used by the @VkPipeline@+-- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value+-- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for push constants, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - Descriptors in each bound descriptor set, specified via+-- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically+-- used by the bound @VkPipeline@ object, specified via+-- @vkCmdBindPipeline@+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - A valid graphics pipeline /must/ be bound to the current command+-- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@+--+-- - If the @VkPipeline@ object bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that+-- state /must/ have been set on the current command buffer+--+-- - If @drawCount@ is equal to @1@, (@offset@ ++-- @sizeof@('VkDrawIndirectCommand')) /must/ be less than or equal to+-- the size of @buffer@+--+-- - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) ++-- @offset@ + @sizeof@('VkDrawIndirectCommand')) /must/ be less than or+-- equal to the size of @buffer@+--+-- - @drawCount@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used to sample from any+-- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,+-- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,+-- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in+-- any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that+-- includes a LOD bias or any offset values, in any shader stage+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result+-- of this command /must/ be of a format which supports linear+-- filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of+-- a format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not+-- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to @VK_TRUE@ and the current subpass has a depth\/stencil+-- attachment, then that attachment /must/ have been created with the+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of @buffer@, and @commandBuffer@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@+foreign import ccall "vkCmdDrawIndirect" vkCmdDrawIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+-- | vkCmdDrawIndexedIndirect - Perform an indexed indirect draw+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @buffer@ is the buffer containing draw parameters.+--+-- - @offset@ is the byte offset into @buffer@ where parameters begin.+--+-- - @drawCount@ is the number of draws to execute, and /can/ be zero.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- @vkCmdDrawIndexedIndirect@ behaves similarly to 'vkCmdDrawIndexed'+-- except that the parameters are read by the device from a buffer during+-- execution. @drawCount@ draws are executed by the command, with+-- parameters taken from @buffer@ starting at @offset@ and increasing by+-- @stride@ bytes for each successive draw. The parameters of each draw are+-- encoded in an array of 'VkDrawIndexedIndirectCommand' structures. If+-- @drawCount@ is less than or equal to one, @stride@ is ignored.+--+-- == Valid Usage+--+-- - If @buffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @buffer@ /must/ have been created with the+-- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of+-- @4@ and /must/ be greater than or equal to+-- @sizeof@(@VkDrawIndexedIndirectCommand@)+--+-- - If the [multi-draw+-- indirect](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiDrawIndirect)+-- feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- - If the+-- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)+-- feature is not enabled, all the @firstInstance@ members of the+-- @VkDrawIndexedIndirectCommand@ structures accessed by this command+-- /must/ be @0@+--+-- - The current render pass /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@+-- structure specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure+-- specified when creating the @VkPipeline@ bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@.+--+-- - For each set /n/ that is statically used by the @VkPipeline@ bound+-- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have+-- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for set /n/, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - For each push constant that is statically used by the @VkPipeline@+-- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value+-- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a+-- @VkPipelineLayout@ that is compatible for push constants, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - Descriptors in each bound descriptor set, specified via+-- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically+-- used by the bound @VkPipeline@ object, specified via+-- @vkCmdBindPipeline@+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - A valid graphics pipeline /must/ be bound to the current command+-- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@+--+-- - If the @VkPipeline@ object bound to+-- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that+-- state /must/ have been set on the current command buffer+--+-- - If @drawCount@ is equal to @1@, (@offset@ ++-- @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less than or+-- equal to the size of @buffer@+--+-- - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) ++-- @offset@ + @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less+-- than or equal to the size of @buffer@+--+-- - @drawCount@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used to sample from any+-- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,+-- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,+-- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in+-- any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that+-- includes a LOD bias or any offset values, in any shader stage+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result+-- of this command /must/ be of a format which supports linear+-- filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of+-- a format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not+-- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to @VK_TRUE@ and the current subpass has a depth\/stencil+-- attachment, then that attachment /must/ have been created with the+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of @buffer@, and @commandBuffer@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@+foreign import ccall "vkCmdDrawIndexedIndirect" vkCmdDrawIndexedIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+-- | vkCmdDispatch - Dispatch compute work items+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @groupCountX@ is the number of local workgroups to dispatch in the X+-- dimension.+--+-- - @groupCountY@ is the number of local workgroups to dispatch in the Y+-- dimension.+--+-- - @groupCountZ@ is the number of local workgroups to dispatch in the Z+-- dimension.+--+-- = Description+--+-- When the command is executed, a global workgroup consisting of+-- groupCountX × groupCountY × groupCountZ local workgroups is assembled.+--+-- == Valid Usage+--+-- - @groupCountX@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]+--+-- - @groupCountY@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]+--+-- - @groupCountZ@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]+--+-- - For each set /n/ that is statically used by the @VkPipeline@ bound+-- to @VK_PIPELINE_BIND_POINT_COMPUTE@, a descriptor set /must/ have+-- been bound to /n/ at @VK_PIPELINE_BIND_POINT_COMPUTE@, with a+-- @VkPipelineLayout@ that is compatible for set /n/, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - Descriptors in each bound descriptor set, specified via+-- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically+-- used by the bound @VkPipeline@ object, specified via+-- @vkCmdBindPipeline@+--+-- - A valid compute pipeline /must/ be bound to the current command+-- buffer with @VK_PIPELINE_BIND_POINT_COMPUTE@+--+-- - For each push constant that is statically used by the @VkPipeline@+-- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@, a push constant value+-- /must/ have been set for @VK_PIPELINE_BIND_POINT_COMPUTE@, with a+-- @VkPipelineLayout@ that is compatible for push constants with the+-- one used to create the current @VkPipeline@, as described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses+-- unnormalized coordinates, it /must/ not be used to sample from any+-- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,+-- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,+-- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in+-- any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that+-- includes a LOD bias or any offset values, in any shader stage+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a uniform+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a storage+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result+-- of this command /must/ be of a format which supports linear+-- filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of+-- a format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not+-- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Compute | Compute |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdDispatch" vkCmdDispatch :: ("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()+-- | vkCmdDispatchIndirect - Dispatch compute work items using indirect+-- parameters+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @buffer@ is the buffer containing dispatch parameters.+--+-- - @offset@ is the byte offset into @buffer@ where parameters begin.+--+-- = Description+--+-- @vkCmdDispatchIndirect@ behaves similarly to 'vkCmdDispatch' except that+-- the parameters are read by the device from a buffer during execution.+-- The parameters of the dispatch are encoded in a+-- 'VkDispatchIndirectCommand' structure taken from @buffer@ starting at+-- @offset@.+--+-- == Valid Usage+--+-- - If @buffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - For each set /n/ that is statically used by the @VkPipeline@ bound+-- to @VK_PIPELINE_BIND_POINT_COMPUTE@, a descriptor set /must/ have+-- been bound to /n/ at @VK_PIPELINE_BIND_POINT_COMPUTE@, with a+-- @VkPipelineLayout@ that is compatible for set /n/, with the+-- @VkPipelineLayout@ used to create the current @VkPipeline@, as+-- described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - Descriptors in each bound descriptor set, specified via+-- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically+-- used by the bound @VkPipeline@ object, specified via+-- @vkCmdBindPipeline@+--+-- - A valid compute pipeline /must/ be bound to the current command+-- buffer with @VK_PIPELINE_BIND_POINT_COMPUTE@+--+-- - @buffer@ /must/ have been created with the+-- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - The sum of @offset@ and the size of @VkDispatchIndirectCommand@+-- /must/ be less than or equal to the size of @buffer@+--+-- - For each push constant that is statically used by the @VkPipeline@+-- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@, a push constant value+-- /must/ have been set for @VK_PIPELINE_BIND_POINT_COMPUTE@, with a+-- @VkPipelineLayout@ that is compatible for push constants with the+-- one used to create the current @VkPipeline@, as described in+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses+-- unnormalized coordinates, it /must/ not be used to sample from any+-- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,+-- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,+-- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in+-- any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with+-- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage+--+-- - If any @VkSampler@ object that is accessed from a shader by the+-- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses+-- unnormalized coordinates, it /must/ not be used with any of the+-- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that+-- includes a LOD bias or any offset values, in any shader stage+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a uniform+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)+-- feature is not enabled, and any shader stage in the @VkPipeline@+-- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a storage+-- buffer, it /must/ not access values outside of the range of that+-- buffer specified in the bound descriptor set+--+-- - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result+-- of this command /must/ be of a format which supports linear+-- filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of+-- a format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled+-- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not+-- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of @buffer@, and @commandBuffer@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Compute | Compute |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@+foreign import ccall "vkCmdDispatchIndirect" vkCmdDispatchIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()+-- | vkCmdCopyBuffer - Copy data between buffer regions+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @srcBuffer@ is the source buffer.+--+-- - @dstBuffer@ is the destination buffer.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'VkBufferCopy' structures+-- specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the source buffer to the same+-- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be+-- the same buffer or alias the same memory, but the result is undefined if+-- the copy regions overlap in memory.+--+-- == Valid Usage+--+-- - The @size@ member of each element of @pRegions@ /must/ be greater+-- than @0@+--+-- - The @srcOffset@ member of each element of @pRegions@ /must/ be less+-- than the size of @srcBuffer@+--+-- - The @dstOffset@ member of each element of @pRegions@ /must/ be less+-- than the size of @dstBuffer@+--+-- - The @size@ member of each element of @pRegions@ /must/ be less than+-- or equal to the size of @srcBuffer@ minus @srcOffset@+--+-- - The @size@ member of each element of @pRegions@ /must/ be less than+-- or equal to the size of @dstBuffer@ minus @dstOffset@+--+-- - The union of the source regions, and the union of the destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - @srcBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ usage flag+--+-- - If @srcBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- @VkBufferCopy@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @dstBuffer@, and @srcBuffer@ /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferCopy',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdCopyBuffer" vkCmdCopyBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()+-- | vkCmdCopyImage - Copy data between images+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the current layout of the source image+-- subresource.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the current layout of the destination image+-- subresource.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'VkImageCopy' structures+-- specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the source image to the same+-- region of the destination image. @srcImage@ and @dstImage@ /can/ be the+-- same image or alias the same memory.+--+-- The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats+-- are considered compatible if their element size is the same between both+-- formats. For example, @VK_FORMAT_R8G8B8A8_UNORM@ is compatible with+-- @VK_FORMAT_R32_UINT@ because both texels are 4 bytes in size.+-- Depth\/stencil formats /must/ match exactly.+--+-- If the format of @srcImage@ or @dstImage@ is a [/multi-planar/ image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- regions of each plane to be copied /must/ be specified separately using+-- the @srcSubresource@ and @dstSubresource@ members of the 'VkImageCopy'+-- structure. In this case, the @aspectMask@ of the @srcSubresource@ or+-- @dstSubresource@ that refers to the multi-planar image /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@. For the purposes of @vkCmdCopyImage@,+-- each plane of a multi-planar image is treated as having the format+-- listed in+-- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to 'Graphics.Vulkan.Core10.Core.VkFormat'+-- and to coordinates used in the copy, which correspond to texels in the+-- /plane/ rather than how these texels map to coordinates in the image as+-- a whole.+--+-- __Note__+--+-- For example, the @VK_IMAGE_ASPECT_PLANE_1_BIT@ plane of a+-- @VK_FORMAT_G8_B8R8_2PLANE_420_UNORM@ image is compatible with an image+-- of format @VK_FORMAT_R8G8_UNORM@ and (less usefully) with the+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ plane of an image of format+-- @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16@, as each texel is+-- 2 bytes in size.+--+-- @vkCmdCopyImage@ allows copying between /size-compatible/ compressed and+-- uncompressed internal formats. Formats are size-compatible if the+-- element size of the uncompressed format is equal to the element size+-- (compressed texel block size) of the compressed format. Such a copy does+-- not perform on-the-fly compression or decompression. When copying from+-- an uncompressed format to a compressed format, each texel of+-- uncompressed data of the source image is copied as a raw value to the+-- corresponding compressed texel block of the destination image. When+-- copying from a compressed format to an uncompressed format, each+-- compressed texel block of the source image is copied as a raw value to+-- the corresponding texel of uncompressed data in the destination image.+-- Thus, for example, it is legal to copy between a 128-bit uncompressed+-- format and a compressed format which has a 128-bit sized compressed+-- texel block representing 4×4 texels (using 8 bits per texel), or between+-- a 64-bit uncompressed format and a compressed format which has a 64-bit+-- sized compressed texel block representing 4×4 texels (using 4 bits per+-- texel).+--+-- When copying between compressed and uncompressed formats the @extent@+-- members represent the texel dimensions of the source image and not the+-- destination. When copying from a compressed image to an uncompressed+-- image the image texel dimensions written to the uncompressed image will+-- be source extent divided by the compressed texel block dimensions. When+-- copying from an uncompressed image to a compressed image the image texel+-- dimensions written to the compressed image will be the source extent+-- multiplied by the compressed texel block dimensions. In both cases the+-- number of bytes read and the number of bytes written will be identical.+--+-- Copying to or from block-compressed images is typically done in+-- multiples of the compressed texel block size. For this reason the+-- @extent@ /must/ be a multiple of the compressed texel block dimension.+-- There is one exception to this rule which is /required/ to handle+-- compressed images created with dimensions that are not a multiple of the+-- compressed texel block dimensions: if the @srcImage@ is compressed,+-- then:+--+-- - If @extent.width@ is not a multiple of the compressed texel block+-- width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image+-- subresource width.+--+-- - If @extent.height@ is not a multiple of the compressed texel block+-- height, then (@extent.height@ + @srcOffset.y@) /must/ equal the+-- image subresource height.+--+-- - If @extent.depth@ is not a multiple of the compressed texel block+-- depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image+-- subresource depth.+--+-- Similarly, if the @dstImage@ is compressed, then:+--+-- - If @extent.width@ is not a multiple of the compressed texel block+-- width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image+-- subresource width.+--+-- - If @extent.height@ is not a multiple of the compressed texel block+-- height, then (@extent.height@ + @dstOffset.y@) /must/ equal the+-- image subresource height.+--+-- - If @extent.depth@ is not a multiple of the compressed texel block+-- depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image+-- subresource depth.+--+-- This allows the last compressed texel block of the image in each+-- non-multiple dimension to be included as a source or destination of the+-- copy.+--+-- “@_422@” image formats that are not+-- [/multi-planar/](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- are treated as having a 2×1 compressed texel block for the purposes of+-- these rules.+--+-- @vkCmdCopyImage@ /can/ be used to copy image data between multisample+-- images, but both images /must/ have the same number of samples.+--+-- == Valid Usage+--+-- - The source region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcImage@ if the @srcImage@’s+-- 'Graphics.Vulkan.Core10.Core.VkFormat' is not a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- and /must/ be a region that is contained within the plane being+-- copied if the @srcImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat' is+-- a multi-planar format+--+-- - The destination region specified by each element of @pRegions@+-- /must/ be a region that is contained within @dstImage@ if the+-- @dstImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat' is not a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- and /must/ be a region that is contained within the plane being+-- copied to if the @dstImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat'+-- is a multi-planar format+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - @srcImage@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_TRANSFER_SRC_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'+--+-- - @srcImage@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag+--+-- - If @srcImage@ is non-sparse then the image or /disjoint/ plane to be+-- copied /must/ be bound completely and contiguously to a single+-- @VkDeviceMemory@ object+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@,+-- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@+--+-- - @dstImage@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'+--+-- - @dstImage@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstImage@ is non-sparse then the image or /disjoint/ plane that+-- is the destination of the copy /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@,+-- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@+--+-- - If the 'Graphics.Vulkan.Core10.Core.VkFormat' of each of @srcImage@+-- and @dstImage@ is not a [/multi-planar+-- format/](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- the 'Graphics.Vulkan.Core10.Core.VkFormat' of each of @srcImage@ and+-- @dstImage@ /must/ be compatible, as defined+-- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-images-format-compatibility)+--+-- - In a copy to or from a plane of a [multi-planar+-- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- the 'Graphics.Vulkan.Core10.Core.VkFormat' of the image and plane+-- /must/ be compatible according to [the description of compatible+-- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- for the plane being copied+--+-- - When a copy is performed to or from an image with a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- the @aspectMask@ of the @srcSubresource@ and\/or @dstSubresource@+-- that refers to the multi-planar image /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ (with @VK_IMAGE_ASPECT_PLANE_2_BIT@+-- valid only for a 'Graphics.Vulkan.Core10.Core.VkFormat' with three+-- planes)+--+-- - The sample count of @srcImage@ and @dstImage@ /must/ match+--+-- - The @srcSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcOffset@ and and @extent@ members of each element of+-- @pRegions@ /must/ respect the image transfer granularity+-- requirements of @commandBuffer@’s command pool’s queue family, as+-- described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'+--+-- - The @dstOffset@ and and @extent@ members of each element of+-- @pRegions@ /must/ respect the image transfer granularity+-- requirements of @commandBuffer@’s command pool’s queue family, as+-- described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcImage@ /must/ be a valid @VkImage@ handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @dstImage@ /must/ be a valid @VkImage@ handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid @VkImageCopy@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been+-- created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageCopy',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout'+foreign import ccall "vkCmdCopyImage" vkCmdCopyImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()+-- | vkCmdBlitImage - Copy regions of an image, potentially performing format+-- conversion,+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the layout of the source image subresources for+-- the blit.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the layout of the destination image subresources+-- for the blit.+--+-- - @regionCount@ is the number of regions to blit.+--+-- - @pRegions@ is a pointer to an array of 'VkImageBlit' structures+-- specifying the regions to blit.+--+-- - @filter@ is a 'Graphics.Vulkan.Core10.Sampler.VkFilter' specifying+-- the filter to apply if the blits require scaling.+--+-- = Description+--+-- @vkCmdBlitImage@ /must/ not be used for multisampled source or+-- destination images. Use 'vkCmdResolveImage' for this purpose.+--+-- As the sizes of the source and destination extents /can/ differ in any+-- dimension, texels in the source extent are scaled and filtered to the+-- destination extent. Scaling occurs via the following operations:+--+-- - For each destination texel, the integer coordinate of that texel is+-- converted to an unnormalized texture coordinate, using the effective+-- inverse of the equations described in [unnormalized to integer+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-unnormalized-to-integer):+--+-- - ubase = i + ½+--+-- - vbase = j + ½+--+-- - wbase = k + ½+--+-- - These base coordinates are then offset by the first destination+-- offset:+--+-- - uoffset = ubase - xdst0+--+-- - voffset = vbase - ydst0+--+-- - woffset = wbase - zdst0+--+-- - aoffset = a - @baseArrayCount@dst+--+-- - The scale is determined from the source and destination regions, and+-- applied to the offset coordinates:+--+-- - scale_u = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)+--+-- - scale_v = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)+--+-- - scale_w = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)+--+-- - uscaled = uoffset * scaleu+--+-- - vscaled = voffset * scalev+--+-- - wscaled = woffset * scalew+--+-- - Finally the source offset is added to the scaled coordinates, to+-- determine the final unnormalized coordinates used to sample from+-- @srcImage@:+--+-- - u = uscaled + xsrc0+--+-- - v = vscaled + ysrc0+--+-- - w = wscaled + zsrc0+--+-- - q = @mipLevel@+--+-- - a = aoffset + @baseArrayCount@src+--+-- These coordinates are used to sample from the source image, as described+-- in [Image Operations+-- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures),+-- with the filter mode equal to that of @filter@, a mipmap mode of+-- @VK_SAMPLER_MIPMAP_MODE_NEAREST@ and an address mode of+-- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@. Implementations /must/ clamp at+-- the edge of the source image, and /may/ additionally clamp to the edge+-- of the source region.+--+-- __Note__+--+-- Due to allowable rounding errors in the generation of the source texture+-- coordinates, it is not always possible to guarantee exactly which source+-- texels will be sampled for a given blit. As rounding errors are+-- implementation dependent, the exact results of a blitting operation are+-- also implementation dependent.+--+-- Blits are done layer by layer starting with the @baseArrayLayer@ member+-- of @srcSubresource@ for the source and @dstSubresource@ for the+-- destination. @layerCount@ layers are blitted to the destination image.+--+-- 3D textures are blitted slice by slice. Slices in the source region+-- bounded by @srcOffsets@[0].@z@ and @srcOffsets@[1].@z@ are copied to+-- slices in the destination region bounded by @dstOffsets@[0].@z@ and+-- @dstOffsets@[1].@z@. For each destination slice, a source __z__+-- coordinate is linearly interpolated between @srcOffsets@[0].@z@ and+-- @srcOffsets@[1].@z@. If the @filter@ parameter is @VK_FILTER_LINEAR@+-- then the value sampled from the source image is taken by doing linear+-- filtering using the interpolated __z__ coordinate. If @filter@ parameter+-- is @VK_FILTER_NEAREST@ then value sampled from the source image is taken+-- from the single nearest slice (with undefined rounding mode).+--+-- The following filtering and conversion rules apply:+--+-- - Integer formats /can/ only be converted to other integer formats+-- with the same signedness.+--+-- - No format conversion is supported between depth\/stencil images. The+-- formats /must/ match.+--+-- - Format conversions on unorm, snorm, unscaled and packed float+-- formats of the copied aspect of the image are performed by first+-- converting the pixels to float values.+--+-- - For sRGB source formats, nonlinear RGB values are converted to+-- linear representation prior to filtering.+--+-- - After filtering, the float values are first clamped and then cast to+-- the destination image format. In case of sRGB destination format,+-- linear RGB values are converted to nonlinear representation before+-- writing the pixel to the image.+--+-- Signed and unsigned integers are converted by first clamping to the+-- representable range of the destination format, then casting the value.+--+-- == Valid Usage+--+-- - The source region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcImage@+--+-- - The destination region specified by each element of @pRegions@+-- /must/ be a region that is contained within @dstImage@+--+-- - The union of all destination regions, specified by the elements of+-- @pRegions@, /must/ not overlap in memory with any texel that /may/+-- be sampled during the blit operation+--+-- - @srcImage@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - @srcImage@ /must/ not use a format listed in+-- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+--+-- - @srcImage@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag+--+-- - If @srcImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,+-- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@+--+-- - @dstImage@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_BLIT_DST_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - @dstImage@ /must/ not use a format listed in+-- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+--+-- - @dstImage@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,+-- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@+--+-- - The sample count of @srcImage@ and @dstImage@ /must/ both be equal+-- to @VK_SAMPLE_COUNT_1_BIT@+--+-- - If either of @srcImage@ or @dstImage@ was created with a signed+-- integer 'Graphics.Vulkan.Core10.Core.VkFormat', the other /must/+-- also have been created with a signed integer+-- 'Graphics.Vulkan.Core10.Core.VkFormat'+--+-- - If either of @srcImage@ or @dstImage@ was created with an unsigned+-- integer 'Graphics.Vulkan.Core10.Core.VkFormat', the other /must/+-- also have been created with an unsigned integer+-- 'Graphics.Vulkan.Core10.Core.VkFormat'+--+-- - If either of @srcImage@ or @dstImage@ was created with a+-- depth\/stencil format, the other /must/ have exactly the same format+--+-- - If @srcImage@ was created with a depth\/stencil format, @filter@+-- /must/ be @VK_FILTER_NEAREST@+--+-- - @srcImage@ /must/ have been created with a @samples@ value of+-- @VK_SAMPLE_COUNT_1_BIT@+--+-- - @dstImage@ /must/ have been created with a @samples@ value of+-- @VK_SAMPLE_COUNT_1_BIT@+--+-- - If @filter@ is @VK_FILTER_LINEAR@, @srcImage@ /must/ be of a format+-- which supports linear filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - If @filter@ is @VK_FILTER_CUBIC_IMG@, @srcImage@ /must/ be of a+-- format which supports cubic filtering, as specified by the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or+-- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled+-- image) returned by @vkGetPhysicalDeviceFormatProperties@+--+-- - If @filter@ is @VK_FILTER_CUBIC_IMG@, @srcImage@ /must/ have a+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' of+-- @VK_IMAGE_TYPE_3D@+--+-- - The @srcSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcImage@ /must/ be a valid @VkImage@ handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @dstImage@ /must/ be a valid @VkImage@ handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid @VkImageBlit@ structures+--+-- - @filter@ /must/ be a valid 'Graphics.Vulkan.Core10.Sampler.VkFilter'+-- value+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been+-- created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Sampler.VkFilter',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageBlit',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout'+foreign import ccall "vkCmdBlitImage" vkCmdBlitImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()+-- | vkCmdCopyBufferToImage - Copy data from a buffer into an image+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @srcBuffer@ is the source buffer.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the layout of the destination image subresources+-- for the copy.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'VkBufferImageCopy'+-- structures specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the specified region of the+-- source buffer to the specified region of the destination image.+--+-- If the format of @dstImage@ is a [multi-planar image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)),+-- regions of each plane to be a target of a copy /must/ be specified+-- separately using the @pRegions@ member of the 'VkBufferImageCopy'+-- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/+-- be @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@. For the purposes of+-- @vkCmdCopyBufferToImage@, each plane of a multi-planar image is treated+-- as having the format listed in+-- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to 'Graphics.Vulkan.Core10.Core.VkFormat'+-- and to coordinates used in the copy, which correspond to texels in the+-- /plane/ rather than how these texels map to coordinates in the image as+-- a whole.+--+-- == Valid Usage+--+-- - The buffer region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcBuffer@+--+-- - The image region specified by each element of @pRegions@ /must/ be a+-- region that is contained within @dstImage@ if the @dstImage@’s+-- 'Graphics.Vulkan.Core10.Core.VkFormat' is not a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- and /must/ be a region that is contained within the plane being+-- copied to if the @dstImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat'+-- is a multi-planar format+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - @srcBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ usage flag+--+-- - @dstImage@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'+--+-- - If @srcBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstImage@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstImage@ /must/ have a sample count equal to+-- @VK_SAMPLE_COUNT_1_BIT@+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@,+-- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@+--+-- - The @imageSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @imageSubresource.baseArrayLayer@ ++-- @imageSubresource.layerCount@ of each element of @pRegions@ /must/+-- be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @imageOffset@ and and @imageExtent@ members of each element of+-- @pRegions@ /must/ respect the image transfer granularity+-- requirements of @commandBuffer@’s command pool’s queue family, as+-- described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @dstImage@ /must/ be a valid @VkImage@ handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid @VkBufferImageCopy@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @dstImage@, and @srcBuffer@ /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferImageCopy',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout'+foreign import ccall "vkCmdCopyBufferToImage" vkCmdCopyBufferToImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()+-- | vkCmdCopyImageToBuffer - Copy image data into a buffer+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the layout of the source image subresources for+-- the copy.+--+-- - @dstBuffer@ is the destination buffer.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'VkBufferImageCopy'+-- structures specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the specified region of the+-- source image to the specified region of the destination buffer.+--+-- If the 'Graphics.Vulkan.Core10.Core.VkFormat' of @srcImage@ is a+-- [multi-planar image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- regions of each plane to be a source of a copy /must/ be specified+-- separately using the @pRegions@ member of the 'VkBufferImageCopy'+-- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/+-- be @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@. For the purposes of+-- @vkCmdCopyBufferToImage@, each plane of a multi-planar image is treated+-- as having the format listed in+-- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to 'Graphics.Vulkan.Core10.Core.VkFormat'+-- and to coordinates used in the copy, which correspond to texels in the+-- /plane/ rather than how these texels map to coordinates in the image as+-- a whole.+--+-- == Valid Usage+--+-- - The image region specified by each element of @pRegions@ /must/ be a+-- region that is contained within @srcImage@ if the @srcImage@’s+-- 'Graphics.Vulkan.Core10.Core.VkFormat' is not a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- and /must/ be a region that is contained within the plane being+-- copied if the @srcImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat' is+-- a multi-planar format+--+-- - The buffer region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @dstBuffer@+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - @srcImage@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_TRANSFER_SRC_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'+--+-- - @srcImage@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag+--+-- - If @srcImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @srcImage@ /must/ have a sample count equal to+-- @VK_SAMPLE_COUNT_1_BIT@+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,+-- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@+--+-- - @dstBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - The @imageSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @imageSubresource.baseArrayLayer@ ++-- @imageSubresource.layerCount@ of each element of @pRegions@ /must/+-- be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @imageOffset@ and and @imageExtent@ members of each element of+-- @pRegions@ /must/ respect the image transfer granularity+-- requirements of @commandBuffer@’s command pool’s queue family, as+-- described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcImage@ /must/ be a valid @VkImage@ handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid @VkBufferImageCopy@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @dstBuffer@, and @srcImage@ /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferImageCopy',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout'+foreign import ccall "vkCmdCopyImageToBuffer" vkCmdCopyImageToBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()+-- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @dstBuffer@ is a handle to the buffer to be updated.+--+-- - @dstOffset@ is the byte offset into the buffer to start updating,+-- and /must/ be a multiple of 4.+--+-- - @dataSize@ is the number of bytes to update, and /must/ be a+-- multiple of 4.+--+-- - @pData@ is a pointer to the source data for the buffer update, and+-- /must/ be at least @dataSize@ bytes in size.+--+-- = Description+--+-- @dataSize@ /must/ be less than or equal to 65536 bytes. For larger+-- updates, applications /can/ use buffer to buffer+-- [copies](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-buffers).+--+-- __Note__+--+-- Buffer updates performed with @vkCmdUpdateBuffer@ first copy the data+-- into command buffer memory when the command is recorded (which requires+-- additional storage and may incur an additional allocation), and then+-- copy the data from the command buffer into @dstBuffer@ when the command+-- is executed on a device.+--+-- The additional cost of this functionality compared to [buffer to buffer+-- copies](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-buffers)+-- means it is only recommended for very small amounts of data, and is why+-- it is limited to only 65536 bytes.+--+-- Applications /can/ work around this by issuing multiple+-- @vkCmdUpdateBuffer@ commands to different ranges of the same buffer, but+-- it is strongly recommended that they /should/ not.+--+-- The source data is copied from the user pointer to the command buffer+-- when the command is called.+--+-- @vkCmdUpdateBuffer@ is only allowed outside of a render pass. This+-- command is treated as “transfer” operation, for the purposes of+-- synchronization barriers. The @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ /must/+-- be specified in @usage@ of+-- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo' in order for the+-- buffer to be compatible with @vkCmdUpdateBuffer@.+--+-- == Valid Usage+--+-- - @dstOffset@ /must/ be less than the size of @dstBuffer@+--+-- - @dataSize@ /must/ be less than or equal to the size of @dstBuffer@+-- minus @dstOffset@+--+-- - @dstBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstOffset@ /must/ be a multiple of @4@+--+-- - @dataSize@ /must/ be less than or equal to @65536@+--+-- - @dataSize@ /must/ be a multiple of @4@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @dataSize@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@+foreign import ccall "vkCmdUpdateBuffer" vkCmdUpdateBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()+-- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @dstBuffer@ is the buffer to be filled.+--+-- - @dstOffset@ is the byte offset into the buffer at which to start+-- filling, and /must/ be a multiple of 4.+--+-- - @size@ is the number of bytes to fill, and /must/ be either a+-- multiple of 4, or @VK_WHOLE_SIZE@ to fill the range from @offset@ to+-- the end of the buffer. If @VK_WHOLE_SIZE@ is used and the remaining+-- size of the buffer is not a multiple of 4, then the nearest smaller+-- multiple is used.+--+-- - @data@ is the 4-byte word written repeatedly to the buffer to fill+-- @size@ bytes of data. The data word is written to memory according+-- to the host endianness.+--+-- = Description+--+-- @vkCmdFillBuffer@ is treated as “transfer” operation for the purposes of+-- synchronization barriers. The @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ /must/+-- be specified in @usage@ of @VkBufferCreateInfo@ in order for the buffer+-- to be compatible with @vkCmdFillBuffer@.+--+-- == Valid Usage+--+-- - @dstOffset@ /must/ be less than the size of @dstBuffer@+--+-- - @dstOffset@ /must/ be a multiple of @4@+--+-- - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater+-- than @0@+--+-- - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less+-- than or equal to the size of @dstBuffer@ minus @dstOffset@+--+-- - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be a+-- multiple of @4@+--+-- - @dstBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@+foreign import ccall "vkCmdFillBuffer" vkCmdFillBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()+-- | vkCmdClearColorImage - Clear regions of a color image+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @image@ is the image to be cleared.+--+-- - @imageLayout@ specifies the current layout of the image subresource+-- ranges to be cleared, and /must/ be+-- @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@, @VK_IMAGE_LAYOUT_GENERAL@ or+-- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@.+--+-- - @pColor@ is a pointer to a 'VkClearColorValue' structure that+-- contains the values the image subresource ranges will be cleared to+-- (see+-- [{html_spec_relative}#clears-values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)+-- below).+--+-- - @rangeCount@ is the number of image subresource range structures in+-- @pRanges@.+--+-- - @pRanges@ points to an array of+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+-- structures that describe a range of mipmap levels, array layers, and+-- aspects to be cleared, as described in [Image+-- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views).+-- The @aspectMask@ of all image subresource ranges /must/ only include+-- @VK_IMAGE_ASPECT_COLOR_BIT@.+--+-- = Description+--+-- Each specified range in @pRanges@ is cleared to the value specified by+-- @pColor@.+--+-- == Valid Usage+--+-- - @image@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - @image@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - @image@ /must/ not use a format listed in+-- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+--+-- - If @image@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @imageLayout@ /must/ specify the layout of the image subresource+-- ranges of @image@ specified in @pRanges@ at the time this command is+-- executed on a @VkDevice@+--+-- - @imageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@,+-- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@+--+-- - The+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseMipLevel@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+-- element of @pRanges@, if the @levelCount@ member is not+-- @VK_REMAINING_MIP_LEVELS@, then @baseMipLevel@ + @levelCount@ /must/+-- be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - The+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseArrayLayer@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+-- element of @pRanges@, if the @layerCount@ member is not+-- @VK_REMAINING_ARRAY_LAYERS@, then @baseArrayLayer@ + @layerCount@+-- /must/ be less than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - @image@ /must/ not have a compressed or depth\/stencil format+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @image@ /must/ be a valid @VkImage@ handle+--+-- - @imageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @pColor@ /must/ be a valid pointer to a valid @VkClearColorValue@+-- union+--+-- - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@+-- valid @VkImageSubresourceRange@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @rangeCount@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and @image@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'VkClearColorValue', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout',+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+foreign import ccall "vkCmdClearColorImage" vkCmdClearColorImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()+-- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil+-- image+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @image@ is the image to be cleared.+--+-- - @imageLayout@ specifies the current layout of the image subresource+-- ranges to be cleared, and /must/ be @VK_IMAGE_LAYOUT_GENERAL@ or+-- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@.+--+-- - @pDepthStencil@ is a pointer to a 'VkClearDepthStencilValue'+-- structure that contains the values the depth and stencil image+-- subresource ranges will be cleared to (see+-- [{html_spec_relative}#clears-values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)+-- below).+--+-- - @rangeCount@ is the number of image subresource range structures in+-- @pRanges@.+--+-- - @pRanges@ points to an array of+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+-- structures that describe a range of mipmap levels, array layers, and+-- aspects to be cleared, as described in [Image+-- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views).+-- The @aspectMask@ of each image subresource range in @pRanges@ /can/+-- include @VK_IMAGE_ASPECT_DEPTH_BIT@ if the image format has a depth+-- component, and @VK_IMAGE_ASPECT_STENCIL_BIT@ if the image format has+-- a stencil component. @pDepthStencil@ is a pointer to a+-- @VkClearDepthStencilValue@ structure that contains the values the+-- image subresource ranges will be cleared to (see+-- [{html_spec_relative}#clears-values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)+-- below).+--+-- == Valid Usage+--+-- - @image@ /must/ use a format that supports+-- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by+-- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled+-- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for+-- optimally tiled images) - as returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - @image@ /must/ have been created with+-- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @image@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @imageLayout@ /must/ specify the layout of the image subresource+-- ranges of @image@ specified in @pRanges@ at the time this command is+-- executed on a @VkDevice@+--+-- - @imageLayout@ /must/ be either of+-- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@+--+-- - The+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseMipLevel@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+-- element of @pRanges@, if the @levelCount@ member is not+-- @VK_REMAINING_MIP_LEVELS@, then @baseMipLevel@ + @levelCount@ /must/+-- be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - The+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseArrayLayer@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+-- element of @pRanges@, if the @layerCount@ member is not+-- @VK_REMAINING_ARRAY_LAYERS@, then @baseArrayLayer@ + @layerCount@+-- /must/ be less than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - @image@ /must/ have a depth\/stencil format+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @image@ /must/ be a valid @VkImage@ handle+--+-- - @imageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @pDepthStencil@ /must/ be a valid pointer to a valid+-- @VkClearDepthStencilValue@ structure+--+-- - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@+-- valid @VkImageSubresourceRange@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @rangeCount@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and @image@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'VkClearDepthStencilValue',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout',+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'+foreign import ccall "vkCmdClearDepthStencilImage" vkCmdClearDepthStencilImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()+-- | vkCmdClearAttachments - Clear regions within bound framebuffer+-- attachments+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @attachmentCount@ is the number of entries in the @pAttachments@+-- array.+--+-- - @pAttachments@ is a pointer to an array of 'VkClearAttachment'+-- structures defining the attachments to clear and the clear values to+-- use.+--+-- - @rectCount@ is the number of entries in the @pRects@ array.+--+-- - @pRects@ points to an array of 'VkClearRect' structures defining+-- regions within each selected attachment to clear.+--+-- = Description+--+-- @vkCmdClearAttachments@ /can/ clear multiple regions of each attachment+-- used in the current subpass of a render pass instance. This command+-- /must/ be called only inside a render pass instance, and implicitly+-- selects the images to clear based on the current framebuffer attachments+-- and the command parameters.+--+-- == Valid Usage+--+-- - If the @aspectMask@ member of any element of @pAttachments@ contains+-- @VK_IMAGE_ASPECT_COLOR_BIT@, the @colorAttachment@ member of that+-- element /must/ refer to a valid color attachment in the current+-- subpass+--+-- - The rectangular region specified by each element of @pRects@ /must/+-- be contained within the render area of the current render pass+-- instance+--+-- - The layers specified by each element of @pRects@ /must/ be contained+-- within every attachment that @pAttachments@ refers to+--+-- - If the render pass instance this is recorded in uses multiview, then+-- @baseArrayLayer@ /must/ be zero and @layerCount@ /must/ be one.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pAttachments@ /must/ be a valid pointer to an array of+-- @attachmentCount@ valid @VkClearAttachment@ structures+--+-- - @pRects@ /must/ be a valid pointer to an array of @rectCount@+-- @VkClearRect@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - @attachmentCount@ /must/ be greater than @0@+--+-- - @rectCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'VkClearAttachment', 'VkClearRect',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdClearAttachments" vkCmdClearAttachments :: ("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()+-- | vkCmdResolveImage - Resolve regions of an image+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the layout of the source image subresources for+-- the resolve.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the layout of the destination image subresources+-- for the resolve.+--+-- - @regionCount@ is the number of regions to resolve.+--+-- - @pRegions@ is a pointer to an array of 'VkImageResolve' structures+-- specifying the regions to resolve.+--+-- = Description+--+-- During the resolve the samples corresponding to each pixel location in+-- the source are converted to a single sample before being written to the+-- destination. If the source formats are floating-point or normalized+-- types, the sample values for each pixel are resolved in an+-- implementation-dependent manner. If the source formats are integer+-- types, a single sample’s value is selected for each pixel.+--+-- @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+-- in texels of the sub-regions of the source and destination image data.+-- @extent@ is the size in texels of the source image to resolve in+-- @width@, @height@ and @depth@.+--+-- Resolves are done layer by layer starting with @baseArrayLayer@ member+-- of @srcSubresource@ for the source and @dstSubresource@ for the+-- destination. @layerCount@ layers are resolved to the destination image.+--+-- == Valid Usage+--+-- - The source region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcImage@+--+-- - The destination region specified by each element of @pRegions@+-- /must/ be a region that is contained within @dstImage@+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - If @srcImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @srcImage@ /must/ have a sample count equal to any valid sample+-- count value other than @VK_SAMPLE_COUNT_1_BIT@+--+-- - If @dstImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - @dstImage@ /must/ have a sample count equal to+-- @VK_SAMPLE_COUNT_1_BIT@+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,+-- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a @VkDevice@+--+-- - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,+-- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@+--+-- - If @dstImage@ was created with @tiling@ equal to+-- @VK_IMAGE_TILING_LINEAR@, @dstImage@ /must/ have been created with a+-- @format@ that supports being a color attachment, as specified by the+-- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - If @dstImage@ was created with @tiling@ equal to+-- @VK_IMAGE_TILING_OPTIMAL@, @dstImage@ /must/ have been created with+-- a @format@ that supports being a color attachment, as specified by+-- the @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in+-- @VkFormatProperties@::@optimalTilingFeatures@ returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - @srcImage@ and @dstImage@ /must/ have been created with the same+-- image format+--+-- - The @srcSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was+-- created+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcImage@ /must/ be a valid @VkImage@ handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @dstImage@ /must/ be a valid @VkImage@ handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid @VkImageResolve@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been+-- created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkImageResolve'+foreign import ccall "vkCmdResolveImage" vkCmdResolveImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()+-- | vkCmdSetEvent - Set an event object to signaled state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @event@ is the event that will be signaled.+--+-- - @stageMask@ specifies the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages)+-- used to determine when the @event@ is signaled.+--+-- = Description+--+-- When 'vkCmdSetEvent' is submitted to a queue, it defines an execution+-- dependency on commands that were submitted before it, and defines an+-- event signal operation which sets the event to the signaled state.+--+-- The first [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes all commands that occur earlier in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).+-- The synchronization scope is limited to operations on the pipeline+-- stages determined by the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @stageMask@.+--+-- The second [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes only the event signal operation.+--+-- If @event@ is already in the signaled state when 'vkCmdSetEvent' is+-- executed on the device, then 'vkCmdSetEvent' has no effect, no event+-- signal operation occurs, and no execution dependency is generated.+--+-- == Valid Usage+--+-- - @stageMask@ /must/ not include @VK_PIPELINE_STAGE_HOST_BIT@+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @stageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @stageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or+-- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@+--+-- - @commandBuffer@’s current device mask /must/ include exactly one+-- physical device.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @event@ /must/ be a valid @VkEvent@ handle+--+-- - @stageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values+--+-- - @stageMask@ /must/ not be @0@+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of @commandBuffer@, and @event@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Event.VkEvent',+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'+foreign import ccall "vkCmdSetEvent" vkCmdSetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()+-- | vkCmdResetEvent - Reset an event object to non-signaled state+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @event@ is the event that will be unsignaled.+--+-- - @stageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying+-- the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages)+-- used to determine when the @event@ is unsignaled.+--+-- = Description+--+-- When 'vkCmdResetEvent' is submitted to a queue, it defines an execution+-- dependency on commands that were submitted before it, and defines an+-- event unsignal operation which resets the event to the unsignaled state.+--+-- The first [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes all commands that occur earlier in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).+-- The synchronization scope is limited to operations on the pipeline+-- stages determined by the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @stageMask@.+--+-- The second [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes only the event unsignal operation.+--+-- If @event@ is already in the unsignaled state when 'vkCmdResetEvent' is+-- executed on the device, then 'vkCmdResetEvent' has no effect, no event+-- unsignal operation occurs, and no execution dependency is generated.+--+-- == Valid Usage+--+-- - @stageMask@ /must/ not include @VK_PIPELINE_STAGE_HOST_BIT@+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @stageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @stageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or+-- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@+--+-- - When this command executes, @event@ /must/ not be waited on by a+-- @vkCmdWaitEvents@ command that is currently executing+--+-- - @commandBuffer@’s current device mask /must/ include exactly one+-- physical device.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @event@ /must/ be a valid @VkEvent@ handle+--+-- - @stageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values+--+-- - @stageMask@ /must/ not be @0@+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of @commandBuffer@, and @event@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Event.VkEvent',+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'+foreign import ccall "vkCmdResetEvent" vkCmdResetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()+-- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @eventCount@ is the length of the @pEvents@ array.+--+-- - @pEvents@ is an array of event object handles to wait on.+--+-- - @srcStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying+-- the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages).+--+-- - @dstStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying+-- the [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages).+--+-- - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.+--+-- - @pMemoryBarriers@ is a pointer to an array of 'VkMemoryBarrier'+-- structures.+--+-- - @bufferMemoryBarrierCount@ is the length of the+-- @pBufferMemoryBarriers@ array.+--+-- - @pBufferMemoryBarriers@ is a pointer to an array of+-- 'VkBufferMemoryBarrier' structures.+--+-- - @imageMemoryBarrierCount@ is the length of the+-- @pImageMemoryBarriers@ array.+--+-- - @pImageMemoryBarriers@ is a pointer to an array of+-- 'VkImageMemoryBarrier' structures.+--+-- = Description+--+-- When @vkCmdWaitEvents@ is submitted to a queue, it defines a memory+-- dependency between prior event signal operations on the same queue or+-- the host, and subsequent commands. @vkCmdWaitEvents@ /must/ not be used+-- to wait on event signal operations occuring on other queues.+--+-- The first synchronization scope only includes event signal operations+-- that operate on members of @pEvents@, and the operations that+-- happened-before the event signal operations. Event signal operations+-- performed by 'vkCmdSetEvent' that occur earlier in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)+-- are included in the first synchronization scope, if the [logically+-- latest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)+-- pipeline stage in their @stageMask@ parameter is [logically+-- earlier](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)+-- than or equal to the [logically+-- latest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)+-- pipeline stage in @srcStageMask@. Event signal operations performed by+-- 'Graphics.Vulkan.Core10.Event.vkSetEvent' are only included in the first+-- synchronization scope if @VK_PIPELINE_STAGE_HOST_BIT@ is included in+-- @srcStageMask@.+--+-- The second [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes all commands that occur later in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).+-- The second synchronization scope is limited to operations on the+-- pipeline stages determined by the [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @dstStageMask@.+--+-- The first [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access in the pipeline stages determined by the [source+-- stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @srcStageMask@. Within that, the first access scope only+-- includes the first access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of [memory+-- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).+-- If no memory barriers are specified, then the first access scope+-- includes no accesses.+--+-- The second [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access in the pipeline stages determined by the+-- [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @dstStageMask@. Within that, the second access scope only+-- includes the second access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of [memory+-- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).+-- If no memory barriers are specified, then the second access scope+-- includes no accesses.+--+-- __Note__+--+-- 'vkCmdWaitEvents' is used with 'vkCmdSetEvent' to define a memory+-- dependency between two sets of action commands, roughly in the same way+-- as pipeline barriers, but split into two commands such that work between+-- the two /may/ execute unhindered.+--+-- __Note__+--+-- Applications /should/ be careful to avoid race conditions when using+-- events. There is no direct ordering guarantee between a+-- 'vkCmdResetEvent' command and a 'vkCmdWaitEvents' command submitted+-- after it, so some other execution dependency /must/ be included between+-- these commands (e.g. a semaphore).+--+-- == Valid Usage+--+-- - @srcStageMask@ /must/ be the bitwise OR of the @stageMask@ parameter+-- used in previous calls to @vkCmdSetEvent@ with any of the members of+-- @pEvents@ and @VK_PIPELINE_STAGE_HOST_BIT@ if any of the members of+-- @pEvents@ was set using @vkSetEvent@+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or+-- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or+-- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@+--+-- - If @pEvents@ includes one or more events that will be signaled by+-- @vkSetEvent@ after @commandBuffer@ has been submitted to a queue,+-- then @vkCmdWaitEvents@ /must/ not be called inside a render pass+-- instance+--+-- - Any pipeline stage included in @srcStageMask@ or @dstStageMask@+-- /must/ be supported by the capabilities of the queue family+-- specified by the @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo'+-- structure that was used to create the @VkCommandPool@ that+-- @commandBuffer@ was allocated from, as specified in the [table of+-- supported pipeline+-- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-supported).+--+-- - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or+-- @pImageMemoryBarriers@ /must/ not have any access flag included in+-- its @srcAccessMask@ member if that bit is not supported by any of+-- the pipeline stages in @srcStageMask@, as specified in the [table of+-- supported access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).+--+-- - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or+-- @pImageMemoryBarriers@ /must/ not have any access flag included in+-- its @dstAccessMask@ member if that bit is not supported by any of+-- the pipeline stages in @dstStageMask@, as specified in the [table of+-- supported access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).+--+-- - @commandBuffer@’s current device mask /must/ include exactly one+-- physical device.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pEvents@ /must/ be a valid pointer to an array of @eventCount@+-- valid @VkEvent@ handles+--+-- - @srcStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values+--+-- - @srcStageMask@ /must/ not be @0@+--+-- - @dstStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values+--+-- - @dstStageMask@ /must/ not be @0@+--+-- - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a+-- valid pointer to an array of @memoryBarrierCount@ valid+-- @VkMemoryBarrier@ structures+--+-- - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@+-- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@+-- valid @VkBufferMemoryBarrier@ structures+--+-- - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@+-- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@+-- valid @VkImageMemoryBarrier@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - @eventCount@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and the elements of @pEvents@ /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Event.VkEvent', 'VkImageMemoryBarrier',+-- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'+foreign import ccall "vkCmdWaitEvents" vkCmdWaitEvents :: ("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()+-- | vkCmdPipelineBarrier - Insert a memory dependency+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command is+-- recorded.+--+-- - @srcStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying+-- the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks).+--+-- - @dstStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying+-- the [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks).+--+-- - @dependencyFlags@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlagBits' specifying how+-- execution and memory dependencies are formed.+--+-- - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.+--+-- - @pMemoryBarriers@ is a pointer to an array of 'VkMemoryBarrier'+-- structures.+--+-- - @bufferMemoryBarrierCount@ is the length of the+-- @pBufferMemoryBarriers@ array.+--+-- - @pBufferMemoryBarriers@ is a pointer to an array of+-- 'VkBufferMemoryBarrier' structures.+--+-- - @imageMemoryBarrierCount@ is the length of the+-- @pImageMemoryBarriers@ array.+--+-- - @pImageMemoryBarriers@ is a pointer to an array of+-- 'VkImageMemoryBarrier' structures.+--+-- = Description+--+-- When 'vkCmdPipelineBarrier' is submitted to a queue, it defines a memory+-- dependency between commands that were submitted before it, and those+-- submitted after it.+--+-- If 'vkCmdPipelineBarrier' was recorded outside a render pass instance,+-- the first [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes all commands that occur earlier in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).+-- If 'vkCmdPipelineBarrier' was recorded inside a render pass instance,+-- the first synchronization scope includes only commands that occur+-- earlier in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)+-- within the same subpass. In either case, the first synchronization scope+-- is limited to operations on the pipeline stages determined by the+-- [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @srcStageMask@.+--+-- If 'vkCmdPipelineBarrier' was recorded outside a render pass instance,+-- the second [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes all commands that occur later in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).+-- If 'vkCmdPipelineBarrier' was recorded inside a render pass instance,+-- the second synchronization scope includes only commands that occur later+-- in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)+-- within the same subpass. In either case, the second synchronization+-- scope is limited to operations on the pipeline stages determined by the+-- [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @dstStageMask@.+--+-- The first [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access in the pipeline stages determined by the [source+-- stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @srcStageMask@. Within that, the first access scope only+-- includes the first access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of [memory+-- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).+-- If no memory barriers are specified, then the first access scope+-- includes no accesses.+--+-- The second [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access in the pipeline stages determined by the+-- [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)+-- specified by @dstStageMask@. Within that, the second access scope only+-- includes the second access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of [memory+-- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).+-- If no memory barriers are specified, then the second access scope+-- includes no accesses.+--+-- If @dependencyFlags@ includes @VK_DEPENDENCY_BY_REGION_BIT@, then any+-- dependency between+-- [framebuffer-space](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions)+-- pipeline stages is+-- [framebuffer-local](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions)+-- - otherwise it is+-- [framebuffer-global](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions).+--+-- == Valid Usage+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or+-- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or+-- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the render pass /must/ have been created with a+-- @VkSubpassDependency@ instance in @pDependencies@ that expresses a+-- dependency from the current subpass to itself.+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- @srcStageMask@ /must/ contain a subset of the bit values in the+-- @srcStageMask@ member of that instance of @VkSubpassDependency@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- @dstStageMask@ /must/ contain a subset of the bit values in the+-- @dstStageMask@ member of that instance of @VkSubpassDependency@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the @srcAccessMask@ of any element of @pMemoryBarriers@ or+-- @pImageMemoryBarriers@ /must/ contain a subset of the bit values the+-- @srcAccessMask@ member of that instance of @VkSubpassDependency@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the @dstAccessMask@ of any element of @pMemoryBarriers@ or+-- @pImageMemoryBarriers@ /must/ contain a subset of the bit values the+-- @dstAccessMask@ member of that instance of @VkSubpassDependency@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- @dependencyFlags@ /must/ be equal to the @dependencyFlags@ member of+-- that instance of @VkSubpassDependency@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- @bufferMemoryBarrierCount@ /must/ be @0@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the @image@ member of any element of @pImageMemoryBarriers@ /must/+-- be equal to one of the elements of @pAttachments@ that the current+-- @framebuffer@ was created with, that is also referred to by one of+-- the elements of the @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@ members of the @VkSubpassDescription@+-- instance that the current subpass was created with+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the @oldLayout@ and @newLayout@ members of any element of+-- @pImageMemoryBarriers@ /must/ be equal to the @layout@ member of an+-- element of the @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@ members of the @VkSubpassDescription@+-- instance that the current subpass was created with, that refers to+-- the same @image@+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the @oldLayout@ and @newLayout@ members of an element of+-- @pImageMemoryBarriers@ /must/ be equal+--+-- - If @vkCmdPipelineBarrier@ is called within a render pass instance,+-- the @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any+-- element of @pImageMemoryBarriers@ /must/ be+-- @VK_QUEUE_FAMILY_IGNORED@+--+-- - Any pipeline stage included in @srcStageMask@ or @dstStageMask@+-- /must/ be supported by the capabilities of the queue family+-- specified by the @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo'+-- structure that was used to create the @VkCommandPool@ that+-- @commandBuffer@ was allocated from, as specified in the [table of+-- supported pipeline+-- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-supported).+--+-- - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ and+-- @pImageMemoryBarriers@ /must/ not have any access flag included in+-- its @srcAccessMask@ member if that bit is not supported by any of+-- the pipeline stages in @srcStageMask@, as specified in the [table of+-- supported access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).+--+-- - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ and+-- @pImageMemoryBarriers@ /must/ not have any access flag included in+-- its @dstAccessMask@ member if that bit is not supported by any of+-- the pipeline stages in @dstStageMask@, as specified in the [table of+-- supported access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).+--+-- - If @vkCmdPipelineBarrier@ is called outside of a render pass+-- instance, @dependencyFlags@ /must/ not include+-- @VK_DEPENDENCY_VIEW_LOCAL_BIT@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @srcStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values+--+-- - @srcStageMask@ /must/ not be @0@+--+-- - @dstStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values+--+-- - @dstStageMask@ /must/ not be @0@+--+-- - @dependencyFlags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlagBits' values+--+-- - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a+-- valid pointer to an array of @memoryBarrierCount@ valid+-- @VkMemoryBarrier@ structures+--+-- - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@+-- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@+-- valid @VkBufferMemoryBarrier@ structures+--+-- - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@+-- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@+-- valid @VkImageMemoryBarrier@ structures+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Transfer | |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlags', 'VkImageMemoryBarrier',+-- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'+foreign import ccall "vkCmdPipelineBarrier" vkCmdPipelineBarrier :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()+-- | vkCmdBeginQuery - Begin a query+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which this command will+-- be recorded.+--+-- - @queryPool@ is the query pool that will manage the results of the+-- query.+--+-- - @query@ is the query index within the query pool that will contain+-- the results.+--+-- - @flags@ is a bitmask of+-- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlagBits'+-- specifying constraints on the types of queries that /can/ be+-- performed.+--+-- = Description+--+-- If the @queryType@ of the pool is @VK_QUERY_TYPE_OCCLUSION@ and @flags@+-- contains @VK_QUERY_CONTROL_PRECISE_BIT@, an implementation /must/ return+-- a result that matches the actual number of samples passed. This is+-- described in more detail in [Occlusion+-- Queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-occlusion).+--+-- After beginning a query, that query is considered /active/ within the+-- command buffer it was called in until that same query is ended. Queries+-- active in a primary command buffer when secondary command buffers are+-- executed are considered active for those secondary command buffers.+--+-- == Valid Usage+--+-- - @queryPool@ /must/ have been created with a @queryType@ that differs+-- from that of any queries that are+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)+-- within @commandBuffer@+--+-- - All queries used by the command /must/ be unavailable+--+-- - If the [precise occlusion+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-occlusionQueryPrecise)+-- feature is not enabled, or the @queryType@ used to create+-- @queryPool@ was not @VK_QUERY_TYPE_OCCLUSION@, @flags@ /must/ not+-- contain @VK_QUERY_CONTROL_PRECISE_BIT@+--+-- - @query@ /must/ be less than the number of queries in @queryPool@+--+-- - If the @queryType@ used to create @queryPool@ was+-- @VK_QUERY_TYPE_OCCLUSION@, the @VkCommandPool@ that @commandBuffer@+-- was allocated from /must/ support graphics operations+--+-- - If the @queryType@ used to create @queryPool@ was+-- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ and any of the+-- @pipelineStatistics@ indicate graphics operations, the+-- @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - If the @queryType@ used to create @queryPool@ was+-- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ and any of the+-- @pipelineStatistics@ indicate compute operations, the+-- @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support compute operations+--+-- - If @vkCmdBeginQuery@ is called within a render pass instance, the+-- sum of @query@ and the number of bits set in the current subpass’s+-- view mask /must/ be less than or equal to the number of queries in+-- @queryPool@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @queryPool@ /must/ be a valid @VkQueryPool@ handle+--+-- - @flags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlagBits' values+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - Both of @commandBuffer@, and @queryPool@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlags',+-- 'Graphics.Vulkan.Core10.Query.VkQueryPool'+foreign import ccall "vkCmdBeginQuery" vkCmdBeginQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()+-- | vkCmdEndQuery - Ends a query+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which this command will+-- be recorded.+--+-- - @queryPool@ is the query pool that is managing the results of the+-- query.+--+-- - @query@ is the query index within the query pool where the result is+-- stored.+--+-- = Description+--+-- As queries operate asynchronously, ending a query does not immediately+-- set the query’s status to available. A query is considered /finished/+-- when the final results of the query are ready to be retrieved by+-- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults' and+-- 'vkCmdCopyQueryPoolResults', and this is when the query’s status is set+-- to available.+--+-- Once a query is ended the query /must/ finish in finite time, unless the+-- state of the query is changed using other commands, e.g. by issuing a+-- reset of the query.+--+-- == Valid Usage+--+-- - All queries used by the command /must/ be+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)+--+-- - @query@ /must/ be less than the number of queries in @queryPool@+--+-- - If @vkCmdEndQuery@ is called within a render pass instance, the sum+-- of @query@ and the number of bits set in the current subpass’s view+-- mask /must/ be less than or equal to the number of queries in+-- @queryPool@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @queryPool@ /must/ be a valid @VkQueryPool@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - Both of @commandBuffer@, and @queryPool@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Query.VkQueryPool'+foreign import ccall "vkCmdEndQuery" vkCmdEndQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()+-- | vkCmdResetQueryPool - Reset queries in a query pool+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which this command will+-- be recorded.+--+-- - @queryPool@ is the handle of the query pool managing the queries+-- being reset.+--+-- - @firstQuery@ is the initial query index to reset.+--+-- - @queryCount@ is the number of queries to reset.+--+-- = Description+--+-- When executed on a queue, this command sets the status of query indices+-- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.+--+-- == Valid Usage+--+-- - @firstQuery@ /must/ be less than the number of queries in+-- @queryPool@+--+-- - The sum of @firstQuery@ and @queryCount@ /must/ be less than or+-- equal to the number of queries in @queryPool@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @queryPool@ /must/ be a valid @VkQueryPool@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of @commandBuffer@, and @queryPool@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Query.VkQueryPool'+foreign import ccall "vkCmdResetQueryPool" vkCmdResetQueryPool :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()+-- | vkCmdWriteTimestamp - Write a device timestamp into a query object+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @pipelineStage@ is one of the+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits', specifying a+-- stage of the pipeline.+--+-- - @queryPool@ is the query pool that will manage the timestamp.+--+-- - @query@ is the query within the query pool that will contain the+-- timestamp.+--+-- = Description+--+-- @vkCmdWriteTimestamp@ latches the value of the timer when all previous+-- commands have completed executing as far as the specified pipeline+-- stage, and writes the timestamp value to memory. When the timestamp+-- value is written, the availability status of the query is set to+-- available.+--+-- __Note__+--+-- If an implementation is unable to detect completion and latch the timer+-- at any specific stage of the pipeline, it /may/ instead do so at any+-- logically later stage.+--+-- 'vkCmdCopyQueryPoolResults' /can/ then be called to copy the timestamp+-- value from the query pool into buffer memory, with ordering and+-- synchronization behavior equivalent to how other queries operate.+-- Timestamp values /can/ also be retrieved from the query pool using+-- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'. As with other+-- queries, the query /must/ be reset using 'vkCmdResetQueryPool' before+-- requesting the timestamp value be written to it.+--+-- While @vkCmdWriteTimestamp@ /can/ be called inside or outside of a+-- render pass instance, 'vkCmdCopyQueryPoolResults' /must/ only be called+-- outside of a render pass instance.+--+-- Timestamps /may/ only be meaningfully compared if they are written by+-- commands submitted to the same queue.+--+-- __Note__+--+-- An example of such a comparison is determining the execution time of a+-- sequence of commands.+--+-- If @vkCmdWriteTimestamp@ is called while executing a render pass+-- instance that has multiview enabled, the timestamp uses N consecutive+-- query indices in the query pool (starting at @query@) where N is the+-- number of bits set in the view mask of the subpass the command is+-- executed in. The resulting query values are determined by an+-- implementation-dependent choice of one of the following behaviors:+--+-- - The first query is a timestamp value and (if more than one bit is+-- set in the view mask) zero is written to the remaining queries. If+-- two timestamps are written in the same subpass, the sum of the+-- execution time of all views between those commands is the difference+-- between the first query written by each command.+--+-- - All N queries are timestamp values. If two timestamps are written in+-- the same subpass, the sum of the execution time of all views between+-- those commands is the sum of the difference between corresponding+-- queries written by each command. The difference between+-- corresponding queries /may/ be the execution time of a single view.+--+-- In either case, the application /can/ sum the differences between all N+-- queries to determine the total execution time.+--+-- == Valid Usage+--+-- - @queryPool@ /must/ have been created with a @queryType@ of+-- @VK_QUERY_TYPE_TIMESTAMP@+--+-- - The query identified by @queryPool@ and @query@ /must/ be+-- /unavailable/+--+-- - The command pool’s queue family /must/ support a non-zero+-- @timestampValidBits@+--+-- - All queries used by the command /must/ be unavailable+--+-- - If @vkCmdWriteTimestamp@ is called within a render pass instance,+-- the sum of @query@ and the number of bits set in the current+-- subpass’s view mask /must/ be less than or equal to the number of+-- queries in @queryPool@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pipelineStage@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' value+--+-- - @queryPool@ /must/ be a valid @VkQueryPool@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - Both of @commandBuffer@, and @queryPool@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits',+-- 'Graphics.Vulkan.Core10.Query.VkQueryPool'+foreign import ccall "vkCmdWriteTimestamp" vkCmdWriteTimestamp :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()+-- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool+-- to a buffer object+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which this command will+-- be recorded.+--+-- - @queryPool@ is the query pool managing the queries containing the+-- desired results.+--+-- - @firstQuery@ is the initial query index.+--+-- - @queryCount@ is the number of queries. @firstQuery@ and @queryCount@+-- together define a range of queries.+--+-- - @dstBuffer@ is a @VkBuffer@ object that will receive the results of+-- the copy command.+--+-- - @dstOffset@ is an offset into @dstBuffer@.+--+-- - @stride@ is the stride in bytes between results for individual+-- queries within @dstBuffer@. The required size of the backing memory+-- for @dstBuffer@ is determined as described above for+-- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'.+--+-- - @flags@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlagBits' specifying how+-- and when results are returned.+--+-- = Description+--+-- @vkCmdCopyQueryPoolResults@ is guaranteed to see the effect of previous+-- uses of @vkCmdResetQueryPool@ in the same queue, without any additional+-- synchronization. Thus, the results will always reflect the most recent+-- use of the query.+--+-- @flags@ has the same possible values described above for the @flags@+-- parameter of 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults', but+-- the different style of execution causes some subtle behavioral+-- differences. Because @vkCmdCopyQueryPoolResults@ executes in order with+-- respect to other query commands, there is less ambiguity about which use+-- of a query is being requested.+--+-- If no bits are set in @flags@, results for all requested queries in the+-- available state are written as 32-bit unsigned integer values, and+-- nothing is written for queries in the unavailable state.+--+-- If @VK_QUERY_RESULT_64_BIT@ is set, the results are written as an array+-- of 64-bit unsigned integer values as described for+-- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'.+--+-- If @VK_QUERY_RESULT_WAIT_BIT@ is set, the implementation will wait for+-- each query’s status to be in the available state before retrieving the+-- numerical results for that query. This is guaranteed to reflect the most+-- recent use of the query on the same queue, assuming that the query is+-- not being simultaneously used by other queues. If the query does not+-- become available in a finite amount of time (e.g. due to not issuing a+-- query since the last reset), a @VK_ERROR_DEVICE_LOST@ error /may/ occur.+--+-- Similarly, if @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ is set and+-- @VK_QUERY_RESULT_WAIT_BIT@ is not set, the availability is guaranteed to+-- reflect the most recent use of the query on the same queue, assuming+-- that the query is not being simultaneously used by other queues. As with+-- @vkGetQueryPoolResults@, implementations /must/ guarantee that if they+-- return a non-zero availability value, then the numerical results are+-- valid.+--+-- If @VK_QUERY_RESULT_PARTIAL_BIT@ is set, @VK_QUERY_RESULT_WAIT_BIT@ is+-- not set, and the query’s status is unavailable, an intermediate result+-- value between zero and the final result value is written for that query.+--+-- @VK_QUERY_RESULT_PARTIAL_BIT@ /must/ not be used if the pool’s+-- @queryType@ is @VK_QUERY_TYPE_TIMESTAMP@.+--+-- @vkCmdCopyQueryPoolResults@ is considered to be a transfer operation,+-- and its writes to buffer memory /must/ be synchronized using+-- @VK_PIPELINE_STAGE_TRANSFER_BIT@ and @VK_ACCESS_TRANSFER_WRITE_BIT@+-- before using the results.+--+-- == Valid Usage+--+-- - @dstOffset@ /must/ be less than the size of @dstBuffer@+--+-- - @firstQuery@ /must/ be less than the number of queries in+-- @queryPool@+--+-- - The sum of @firstQuery@ and @queryCount@ /must/ be less than or+-- equal to the number of queries in @queryPool@+--+-- - If @VK_QUERY_RESULT_64_BIT@ is not set in @flags@ then @dstOffset@+-- and @stride@ /must/ be multiples of @4@+--+-- - If @VK_QUERY_RESULT_64_BIT@ is set in @flags@ then @dstOffset@ and+-- @stride@ /must/ be multiples of @8@+--+-- - @dstBuffer@ /must/ have enough storage, from @dstOffset@, to contain+-- the result of each query, as described+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-memorylayout)+--+-- - @dstBuffer@ /must/ have been created with+-- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single @VkDeviceMemory@ object+--+-- - If the @queryType@ used to create @queryPool@ was+-- @VK_QUERY_TYPE_TIMESTAMP@, @flags@ /must/ not contain+-- @VK_QUERY_RESULT_PARTIAL_BIT@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @queryPool@ /must/ be a valid @VkQueryPool@ handle+--+-- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @flags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlagBits' values+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Each of @commandBuffer@, @dstBuffer@, and @queryPool@ /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,+-- 'Graphics.Vulkan.Core10.Query.VkQueryPool',+-- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlags'+foreign import ccall "vkCmdCopyQueryPoolResults" vkCmdCopyQueryPoolResults :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()+-- | vkCmdPushConstants - Update the values of push constants+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer in which the push constant+-- update will be recorded.+--+-- - @layout@ is the pipeline layout used to program the push constant+-- updates.+--+-- - @stageFlags@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' specifying+-- the shader stages that will use the push constants in the updated+-- range.+--+-- - @offset@ is the start offset of the push constant range to update,+-- in units of bytes.+--+-- - @size@ is the size of the push constant range to update, in units of+-- bytes.+--+-- - @pValues@ is an array of @size@ bytes containing the new push+-- constant values.+--+-- == Valid Usage+--+-- - For each byte in the range specified by @offset@ and @size@ and for+-- each shader stage in @stageFlags@, there /must/ be a push constant+-- range in @layout@ that includes that byte and that stage+--+-- - For each byte in the range specified by @offset@ and @size@ and for+-- each push constant range that overlaps that byte, @stageFlags@+-- /must/ include all stages in that push constant range’s+-- 'Graphics.Vulkan.Core10.PipelineLayout.VkPushConstantRange'::@stageFlags@+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - @size@ /must/ be a multiple of @4@+--+-- - @offset@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@+--+-- - @size@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@ minus @offset@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @layout@ /must/ be a valid @VkPipelineLayout@ handle+--+-- - @stageFlags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' values+--+-- - @stageFlags@ /must/ not be @0@+--+-- - @pValues@ /must/ be a valid pointer to an array of @size@ bytes+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, or compute operations+--+-- - @size@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and @layout@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',+-- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'+foreign import ccall "vkCmdPushConstants" vkCmdPushConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()+-- | vkCmdBeginRenderPass - Begin a new render pass+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer in which to record the+-- command.+--+-- - @pRenderPassBegin@ is a pointer to a 'VkRenderPassBeginInfo'+-- structure (defined below) which specifies the render pass to begin+-- an instance of, and the framebuffer the instance uses.+--+-- - @contents@ is a 'VkSubpassContents' value specifying how the+-- commands in the first subpass will be provided.+--+-- = Description+--+-- After beginning a render pass instance, the command buffer is ready to+-- record the commands for the first subpass of that render pass.+--+-- == Valid Usage+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- @VkAttachmentDescription@ structures or the @layout@ member of the+-- @VkAttachmentReference@ structures specified when creating the+-- render pass specified in the @renderPass@ member of+-- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@+-- then the corresponding attachment image subresource of the+-- framebuffer specified in the @framebuffer@ member of+-- @pRenderPassBegin@ /must/ have been created with+-- @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ set+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- @VkAttachmentDescription@ structures or the @layout@ member of the+-- @VkAttachmentReference@ structures specified when creating the+-- render pass specified in the @renderPass@ member of+-- @pRenderPassBegin@ is+-- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@,+-- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@,+-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@, or+-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ then the+-- corresponding attachment image subresource of the framebuffer+-- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+-- have been created with @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@+-- set+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- @VkAttachmentDescription@ structures or the @layout@ member of the+-- @VkAttachmentReference@ structures specified when creating the+-- render pass specified in the @renderPass@ member of+-- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@+-- then the corresponding attachment image subresource of the+-- framebuffer specified in the @framebuffer@ member of+-- @pRenderPassBegin@ /must/ have been created with+-- @VK_IMAGE_USAGE_SAMPLED_BIT@ or+-- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- @VkAttachmentDescription@ structures or the @layout@ member of the+-- @VkAttachmentReference@ structures specified when creating the+-- render pass specified in the @renderPass@ member of+-- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ then+-- the corresponding attachment image subresource of the framebuffer+-- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+-- have been created with @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ set+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- @VkAttachmentDescription@ structures or the @layout@ member of the+-- @VkAttachmentReference@ structures specified when creating the+-- render pass specified in the @renderPass@ member of+-- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ then+-- the corresponding attachment image subresource of the framebuffer+-- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/+-- have been created with @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ set+--+-- - If any of the @initialLayout@ members of the+-- @VkAttachmentDescription@ structures specified when creating the+-- render pass specified in the @renderPass@ member of+-- @pRenderPassBegin@ is not @VK_IMAGE_LAYOUT_UNDEFINED@, then each+-- such @initialLayout@ /must/ be equal to the current layout of the+-- corresponding attachment image subresource of the framebuffer+-- specified in the @framebuffer@ member of @pRenderPassBegin@+--+-- - The @srcStageMask@ and @dstStageMask@ members of any element of the+-- @pDependencies@ member of+-- 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo' used to create+-- @renderPass@ /must/ be supported by the capabilities of the queue+-- family identified by the @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo' used to+-- create the command pool which @commandBuffer@ was allocated from.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pRenderPassBegin@ /must/ be a valid pointer to a valid+-- @VkRenderPassBeginInfo@ structure+--+-- - @contents@ /must/ be a valid 'VkSubpassContents' value+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @commandBuffer@ /must/ be a primary @VkCommandBuffer@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Graphics | Graphics |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkRenderPassBeginInfo',+-- 'VkSubpassContents'+foreign import ccall "vkCmdBeginRenderPass" vkCmdBeginRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()+-- | vkCmdNextSubpass - Transition to the next subpass of a render pass+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer in which to record the+-- command.+--+-- - @contents@ specifies how the commands in the next subpass will be+-- provided, in the same fashion as the corresponding parameter of+-- 'vkCmdBeginRenderPass'.+--+-- = Description+--+-- The subpass index for a render pass begins at zero when+-- @vkCmdBeginRenderPass@ is recorded, and increments each time+-- @vkCmdNextSubpass@ is recorded.+--+-- Moving to the next subpass automatically performs any multisample+-- resolve operations in the subpass being ended. End-of-subpass+-- multisample resolves are treated as color attachment writes for the+-- purposes of synchronization. That is, they are considered to execute in+-- the @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ pipeline stage and+-- their writes are synchronized with+-- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@. Synchronization between+-- rendering within a subpass and any resolve operations at the end of the+-- subpass occurs automatically, without need for explicit dependencies or+-- pipeline barriers. However, if the resolve attachment is also used in a+-- different subpass, an explicit dependency is needed.+--+-- After transitioning to the next subpass, the application /can/ record+-- the commands for that subpass.+--+-- == Valid Usage+--+-- - The current subpass index /must/ be less than the number of+-- subpasses in the render pass minus one+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @contents@ /must/ be a valid 'VkSubpassContents' value+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - @commandBuffer@ /must/ be a primary @VkCommandBuffer@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkSubpassContents'+foreign import ccall "vkCmdNextSubpass" vkCmdNextSubpass :: ("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()+-- | vkCmdEndRenderPass - End the current render pass+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer in which to end the current+-- render pass instance.+--+-- = Description+--+-- Ending a render pass instance performs any multisample resolve+-- operations on the final subpass.+--+-- == Valid Usage+--+-- - The current subpass index /must/ be equal to the number of subpasses+-- in the render pass minus one+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - @commandBuffer@ /must/ be a primary @VkCommandBuffer@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdEndRenderPass" vkCmdEndRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()+-- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary+-- command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is a handle to a primary command buffer that the+-- secondary command buffers are executed in.+--+-- - @commandBufferCount@ is the length of the @pCommandBuffers@ array.+--+-- - @pCommandBuffers@ is an array of secondary command buffer handles,+-- which are recorded to execute in the primary command buffer in the+-- order they are listed in the array.+--+-- = Description+--+-- If any element of @pCommandBuffers@ was not recorded with the+-- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, and it was recorded+-- into any other primary command buffer which is currently in the+-- [executable or recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- that primary command buffer becomes+-- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+--+-- == Valid Usage+--+-- - @commandBuffer@ /must/ have been allocated with a @level@ of+-- @VK_COMMAND_BUFFER_LEVEL_PRIMARY@+--+-- - Each element of @pCommandBuffers@ /must/ have been allocated with a+-- @level@ of @VK_COMMAND_BUFFER_LEVEL_SECONDARY@+--+-- - Each element of @pCommandBuffers@ /must/ be in the [pending or+-- executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, and it was+-- recorded into any other primary command buffer, that primary command+-- buffer /must/ not be in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not+-- be in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not+-- have already been recorded to @commandBuffer@.+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not+-- appear more than once in @pCommandBuffers@.+--+-- - Each element of @pCommandBuffers@ /must/ have been allocated from a+-- @VkCommandPool@ that was created for the same queue family as the+-- @VkCommandPool@ from which @commandBuffer@ was allocated+--+-- - If @vkCmdExecuteCommands@ is being called within a render pass+-- instance, that render pass instance /must/ have been begun with the+-- @contents@ parameter of @vkCmdBeginRenderPass@ set to+-- @VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS@+--+-- - If @vkCmdExecuteCommands@ is being called within a render pass+-- instance, each element of @pCommandBuffers@ /must/ have been+-- recorded with the @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@+--+-- - If @vkCmdExecuteCommands@ is being called within a render pass+-- instance, each element of @pCommandBuffers@ /must/ have been+-- recorded with @VkCommandBufferInheritanceInfo@::@subpass@ set to the+-- index of the subpass which the given command buffer will be executed+-- in+--+-- - If @vkCmdExecuteCommands@ is being called within a render pass+-- instance, the render passes specified in the+-- pname::pBeginInfo::@pInheritanceInfo@::@renderPass@ members of the+-- 'Graphics.Vulkan.Core10.CommandBuffer.vkBeginCommandBuffer' commands+-- used to begin recording each element of @pCommandBuffers@ /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the current render pass.+--+-- - If @vkCmdExecuteCommands@ is being called within a render pass+-- instance, and any element of @pCommandBuffers@ was recorded with+-- @VkCommandBufferInheritanceInfo@::@framebuffer@ not equal to+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', that+-- @VkFramebuffer@ /must/ match the @VkFramebuffer@ used in the current+-- render pass instance+--+-- - If @vkCmdExecuteCommands@ is not being called within a render pass+-- instance, each element of @pCommandBuffers@ /must/ not have been+-- recorded with the @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@+--+-- - If the [inherited+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-inheritedQueries)+-- feature is not enabled, @commandBuffer@ /must/ not have any queries+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)+--+-- - If @commandBuffer@ has a @VK_QUERY_TYPE_OCCLUSION@ query+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active),+-- then each element of @pCommandBuffers@ /must/ have been recorded+-- with @VkCommandBufferInheritanceInfo@::@occlusionQueryEnable@ set to+-- @VK_TRUE@+--+-- - If @commandBuffer@ has a @VK_QUERY_TYPE_OCCLUSION@ query+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active),+-- then each element of @pCommandBuffers@ /must/ have been recorded+-- with @VkCommandBufferInheritanceInfo@::@queryFlags@ having all bits+-- set that are set for the query+--+-- - If @commandBuffer@ has a @VK_QUERY_TYPE_PIPELINE_STATISTICS@ query+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active),+-- then each element of @pCommandBuffers@ /must/ have been recorded+-- with @VkCommandBufferInheritanceInfo@::@pipelineStatistics@ having+-- all bits set that are set in the @VkQueryPool@ the query uses+--+-- - Each element of @pCommandBuffers@ /must/ not begin any query types+-- that are+-- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)+-- in @commandBuffer@+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @pCommandBuffers@ /must/ be a valid pointer to an array of+-- @commandBufferCount@ valid @VkCommandBuffer@ handles+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support transfer, graphics, or compute operations+--+-- - @commandBuffer@ /must/ be a primary @VkCommandBuffer@+--+-- - @commandBufferCount@ /must/ be greater than @0@+--+-- - Both of @commandBuffer@, and the elements of @pCommandBuffers@+-- /must/ have been created, allocated, or retrieved from the same+-- @VkDevice@+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Transfer | |+-- | | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+foreign import ccall "vkCmdExecuteCommands" vkCmdExecuteCommands :: ("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()+-- | VkClearRect - Structure specifying a clear rectangle+--+-- = Description+--+-- The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting+-- from the base layer of the attachment image view are cleared.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D', 'vkCmdClearAttachments'+data VkClearRect = VkClearRect+ { -- | @rect@ is the two-dimensional region to be cleared.+ vkRect :: VkRect2D+ , -- | @baseArrayLayer@ is the first layer to be cleared.+ vkBaseArrayLayer :: Word32+ , -- | @layerCount@ is the number of layers to clear.+ vkLayerCount :: Word32+ }+ deriving (Eq, Show)++instance Storable VkClearRect where+ sizeOf ~_ = 24+ alignment ~_ = 4+ peek ptr = VkClearRect <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkRect (poked :: VkClearRect))+ *> poke (ptr `plusPtr` 16) (vkBaseArrayLayer (poked :: VkClearRect))+ *> poke (ptr `plusPtr` 20) (vkLayerCount (poked :: VkClearRect))+-- | VkImageSubresourceLayers - Structure specifying a image subresource+-- layers+--+-- == Valid Usage+--+-- - If @aspectMask@ contains @VK_IMAGE_ASPECT_COLOR_BIT@, it /must/ not+-- contain either of @VK_IMAGE_ASPECT_DEPTH_BIT@ or+-- @VK_IMAGE_ASPECT_STENCIL_BIT@+--+-- - @aspectMask@ /must/ not contain @VK_IMAGE_ASPECT_METADATA_BIT@+--+-- - @layerCount@ /must/ be greater than 0+--+-- == Valid Usage (Implicit)+--+-- - @aspectMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'+-- values+--+-- - @aspectMask@ /must/ not be @0@+--+-- = See Also+--+-- 'VkBufferImageCopy',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',+-- 'VkImageBlit', 'VkImageCopy', 'VkImageResolve'+data VkImageSubresourceLayers = VkImageSubresourceLayers+ { -- | @aspectMask@ is a combination of+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits',+ -- selecting the color, depth and\/or stencil aspects to be copied.+ vkAspectMask :: VkImageAspectFlags+ , -- | @mipLevel@ is the mipmap level to copy from.+ vkMipLevel :: Word32+ , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of+ -- layers to copy.+ vkBaseArrayLayer :: Word32+ , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"+ vkLayerCount :: Word32+ }+ deriving (Eq, Show)++instance Storable VkImageSubresourceLayers where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek ptr = VkImageSubresourceLayers <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkImageSubresourceLayers))+ *> poke (ptr `plusPtr` 4) (vkMipLevel (poked :: VkImageSubresourceLayers))+ *> poke (ptr `plusPtr` 8) (vkBaseArrayLayer (poked :: VkImageSubresourceLayers))+ *> poke (ptr `plusPtr` 12) (vkLayerCount (poked :: VkImageSubresourceLayers))+-- | VkMemoryBarrier - Structure specifying a global memory barrier+--+-- = Description+--+-- The first [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access types in the [source access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)+-- specified by @srcAccessMask@.+--+-- The second [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access types in the [destination access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)+-- specified by @dstAccessMask@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_BARRIER@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @srcAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values+--+-- - @dstAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',+-- 'vkCmdWaitEvents'+data VkMemoryBarrier = VkMemoryBarrier+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [source+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+ vkSrcAccessMask :: VkAccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [destination+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+ vkDstAccessMask :: VkAccessFlags+ }+ deriving (Eq, Show)++instance Storable VkMemoryBarrier where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek ptr = VkMemoryBarrier <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryBarrier))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryBarrier))+ *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkMemoryBarrier))+ *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkMemoryBarrier))+-- | VkBufferMemoryBarrier - Structure specifying a buffer memory barrier+--+-- = Description+--+-- The first [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access to memory through the specified buffer range, via+-- access types in the [source access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)+-- specified by @srcAccessMask@. If @srcAccessMask@ includes+-- @VK_ACCESS_HOST_WRITE_BIT@, memory writes performed by that access type+-- are also made visible, as that access type is not performed through a+-- resource.+--+-- The second [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access to memory through the specified buffer range, via+-- access types in the [destination access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+-- specified by @dstAccessMask@. If @dstAccessMask@ includes+-- @VK_ACCESS_HOST_WRITE_BIT@ or @VK_ACCESS_HOST_READ_BIT@, available+-- memory writes are also made visible to accesses of those types, as those+-- access types are not performed through a resource.+--+-- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and+-- @srcQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a [queue family release+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-release)+-- for the specified buffer range, and the second access scope includes no+-- access, as if @dstAccessMask@ was @0@.+--+-- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and+-- @dstQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a [queue family acquire+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-acquire)+-- for the specified buffer range, and the first access scope includes no+-- access, as if @srcAccessMask@ was @0@.+--+-- == Valid Usage+--+-- - @offset@ /must/ be less than the size of @buffer@+--+-- - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater+-- than @0@+--+-- - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less+-- than or equal to than the size of @buffer@ minus @offset@+--+-- - If @buffer@ was created with a sharing mode of+-- @VK_SHARING_MODE_CONCURRENT@, at least one of @srcQueueFamilyIndex@+-- and @dstQueueFamilyIndex@ /must/ be @VK_QUEUE_FAMILY_IGNORED@+--+-- - If @buffer@ was created with a sharing mode of+-- @VK_SHARING_MODE_CONCURRENT@, and one of @srcQueueFamilyIndex@ and+-- @dstQueueFamilyIndex@ is @VK_QUEUE_FAMILY_IGNORED@, the other /must/+-- be @VK_QUEUE_FAMILY_IGNORED@ or a special queue family reserved for+-- external memory ownership transfers, as described in+-- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+--+-- - If @buffer@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is+-- @VK_QUEUE_FAMILY_IGNORED@, @dstQueueFamilyIndex@ /must/ also be+-- @VK_QUEUE_FAMILY_IGNORED@+--+-- - If @buffer@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is not+-- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a+-- special queue family reserved for external memory transfers, as+-- described in+-- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+--+-- - If @buffer@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@ and @dstQueueFamilyIndex@ is not+-- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a+-- special queue family reserved for external memory transfers, as+-- described in+-- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+--+-- - If @buffer@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@, and @srcQueueFamilyIndex@ and+-- @dstQueueFamilyIndex@ are not @VK_QUEUE_FAMILY_IGNORED@, at least+-- one of them /must/ be the same as the family of the queue that will+-- execute this barrier+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @srcAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values+--+-- - @dstAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', @VkDeviceSize@,+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',+-- 'vkCmdWaitEvents'+data VkBufferMemoryBarrier = VkBufferMemoryBarrier+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [source+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+ vkSrcAccessMask :: VkAccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [destination+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+ vkDstAccessMask :: VkAccessFlags+ , -- | @srcQueueFamilyIndex@ is the source queue family for a [queue family+ -- ownership+ -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+ vkSrcQueueFamilyIndex :: Word32+ , -- | @dstQueueFamilyIndex@ is the destination queue family for a [queue+ -- family ownership+ -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+ vkDstQueueFamilyIndex :: Word32+ , -- | @buffer@ is a handle to the buffer whose backing memory is affected by+ -- the barrier.+ vkBuffer :: VkBuffer+ , -- | @offset@ is an offset in bytes into the backing memory for @buffer@;+ -- this is relative to the base offset as bound to the buffer (see+ -- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory').+ vkOffset :: VkDeviceSize+ , -- | @size@ is a size in bytes of the affected area of backing memory for+ -- @buffer@, or @VK_WHOLE_SIZE@ to use the range from @offset@ to the end+ -- of the buffer.+ vkSize :: VkDeviceSize+ }+ deriving (Eq, Show)++instance Storable VkBufferMemoryBarrier where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek ptr = VkBufferMemoryBarrier <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 48)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 24) (vkSrcQueueFamilyIndex (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 28) (vkDstQueueFamilyIndex (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 32) (vkBuffer (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 40) (vkOffset (poked :: VkBufferMemoryBarrier))+ *> poke (ptr `plusPtr` 48) (vkSize (poked :: VkBufferMemoryBarrier))+-- | VkImageMemoryBarrier - Structure specifying the parameters of an image+-- memory barrier+--+-- = Description+--+-- The first [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access to memory through the specified image subresource+-- range, via access types in the [source access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)+-- specified by @srcAccessMask@. If @srcAccessMask@ includes+-- @VK_ACCESS_HOST_WRITE_BIT@, memory writes performed by that access type+-- are also made visible, as that access type is not performed through a+-- resource.+--+-- The second [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access to memory through the specified image subresource+-- range, via access types in the [destination access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)+-- specified by @dstAccessMask@. If @dstAccessMask@ includes+-- @VK_ACCESS_HOST_WRITE_BIT@ or @VK_ACCESS_HOST_READ_BIT@, available+-- memory writes are also made visible to accesses of those types, as those+-- access types are not performed through a resource.+--+-- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and+-- @srcQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a [queue family release+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-release)+-- for the specified image subresource range, and the second access scope+-- includes no access, as if @dstAccessMask@ was @0@.+--+-- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and+-- @dstQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a [queue family acquire+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-acquire)+-- for the specified image subresource range, and the first access scope+-- includes no access, as if @srcAccessMask@ was @0@.+--+-- If @oldLayout@ is not equal to @newLayout@, then the memory barrier+-- defines an [image layout+-- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions)+-- for the specified image subresource range.+--+-- Layout transitions that are performed via image memory barriers execute+-- in their entirety in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order),+-- relative to other image layout transitions submitted to the same queue,+-- including those performed by [render+-- passes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass).+-- In effect there is an implicit execution dependency from each such+-- layout transition to all layout transitions previously submitted to the+-- same queue.+--+-- The image layout of each image subresource of a depth\/stencil image+-- created with @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@+-- is dependent on the last sample locations used to render to the image+-- subresource as a depth\/stencil attachment, thus when the @image@ member+-- of an @VkImageMemoryBarrier@ is an image created with this flag the+-- application /can/ chain a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT'+-- structure to the @pNext@ chain of @VkImageMemoryBarrier@ to specify the+-- sample locations to use during the image layout transition.+--+-- If the @VkSampleLocationsInfoEXT@ structure in the @pNext@ chain of+-- @VkImageMemoryBarrier@ does not match the sample location state last+-- used to render to the image subresource range specified by+-- @subresourceRange@ or if no @VkSampleLocationsInfoEXT@ structure is in+-- the @pNext@ chain of @VkImageMemoryBarrier@ then the contents of the+-- given image subresource range becomes undefined as if @oldLayout@ would+-- equal @VK_IMAGE_LAYOUT_UNDEFINED@.+--+-- If @image@ has a multi-planar format and the image is /disjoint/, then+-- including @VK_IMAGE_ASPECT_COLOR_BIT@ in the @aspectMask@ member of+-- @subresourceRange@ is equivalent to including+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, and (for+-- three-plane formats only) @VK_IMAGE_ASPECT_PLANE_2_BIT@.+--+-- == Valid Usage+--+-- - @oldLayout@ /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@ or the current+-- layout of the image subresources affected by the barrier+--+-- - @newLayout@ /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or+-- @VK_IMAGE_LAYOUT_PREINITIALIZED@+--+-- - If @image@ was created with a sharing mode of+-- @VK_SHARING_MODE_CONCURRENT@, at least one of @srcQueueFamilyIndex@+-- and @dstQueueFamilyIndex@ /must/ be @VK_QUEUE_FAMILY_IGNORED@+--+-- - If @image@ was created with a sharing mode of+-- @VK_SHARING_MODE_CONCURRENT@, and one of @srcQueueFamilyIndex@ and+-- @dstQueueFamilyIndex@ is @VK_QUEUE_FAMILY_IGNORED@, the other /must/+-- be @VK_QUEUE_FAMILY_IGNORED@ or a special queue family reserved for+-- external memory transfers, as described in+-- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+--+-- - If @image@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is+-- @VK_QUEUE_FAMILY_IGNORED@, @dstQueueFamilyIndex@ /must/ also be+-- @VK_QUEUE_FAMILY_IGNORED@.+--+-- - If @image@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is not+-- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a+-- special queue family reserved for external memory transfers, as+-- described in+-- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+--+-- - If @image@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@ and @dstQueueFamilyIndex@ is not+-- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a+-- special queue family reserved for external memory transfers, as+-- described in+-- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+--+-- - If @image@ was created with a sharing mode of+-- @VK_SHARING_MODE_EXCLUSIVE@, and @srcQueueFamilyIndex@ and+-- @dstQueueFamilyIndex@ are not @VK_QUEUE_FAMILY_IGNORED@, at least+-- one of them /must/ be the same as the family of the queue that will+-- execute this barrier+--+-- - @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@+-- specified in 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when+-- @image@ was created+--+-- - If @subresourceRange.levelCount@ is not @VK_REMAINING_MIP_LEVELS@,+-- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@+-- /must/ be less than or equal to the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - @subresourceRange.baseArrayLayer@ /must/ be less than the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - If @subresourceRange.layerCount@ is not @VK_REMAINING_ARRAY_LAYERS@,+-- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@+-- /must/ be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - If @image@ has a depth\/stencil format with both depth and stencil+-- components, then the @aspectMask@ member of @subresourceRange@+-- /must/ include both @VK_IMAGE_ASPECT_DEPTH_BIT@ and+-- @VK_IMAGE_ASPECT_STENCIL_BIT@+--+-- - If @image@ has a single-plane color format or is not /disjoint/,+-- then the @aspectMask@ member of @subresourceRange@ /must/ be+-- @VK_IMAGE_ASPECT_COLOR_BIT@+--+-- - If @image@ has a multi-planar format and the image is /disjoint/,+-- then the @aspectMask@ member of @subresourceRange@ /must/ include+-- either at least one of @VK_IMAGE_ASPECT_PLANE_0_BIT@,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@, and @VK_IMAGE_ASPECT_PLANE_2_BIT@; or+-- /must/ include @VK_IMAGE_ASPECT_COLOR_BIT@+--+-- - If @image@ has a multi-planar format with only two planes, then the+-- @aspectMask@ member of @subresourceRange@ /must/ not include+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@ then @image@ /must/ have+-- been created with @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@ then @image@+-- /must/ have been created with+-- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ then @image@+-- /must/ have been created with+-- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ then+-- @image@ /must/ have been created with+-- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ then+-- @image@ /must/ have been created with+-- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ then @image@ /must/ have+-- been created with @VK_IMAGE_USAGE_SAMPLED_BIT@ or+-- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ then @image@ /must/ have been+-- created with @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ set+--+-- - If either @oldLayout@ or @newLayout@ is+-- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ then @image@ /must/ have been+-- created with @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ set+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT'+--+-- - @srcAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values+--+-- - @dstAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values+--+-- - @oldLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @newLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+--+-- - @image@ /must/ be a valid @VkImage@ handle+--+-- - @subresourceRange@ /must/ be a valid @VkImageSubresourceRange@+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Image.VkImageLayout',+-- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',+-- 'vkCmdWaitEvents'+data VkImageMemoryBarrier = VkImageMemoryBarrier+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [source+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+ vkSrcAccessMask :: VkAccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [destination+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).+ vkDstAccessMask :: VkAccessFlags+ , -- | @oldLayout@ is the old layout in an [image layout+ -- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions).+ vkOldLayout :: VkImageLayout+ , -- | @newLayout@ is the new layout in an [image layout+ -- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions).+ vkNewLayout :: VkImageLayout+ , -- | @srcQueueFamilyIndex@ is the source queue family for a [queue family+ -- ownership+ -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+ vkSrcQueueFamilyIndex :: Word32+ , -- | @dstQueueFamilyIndex@ is the destination queue family for a [queue+ -- family ownership+ -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).+ vkDstQueueFamilyIndex :: Word32+ , -- | @image@ is a handle to the image affected by this barrier.+ vkImage :: VkImage+ , -- | @subresourceRange@ describes the [image subresource+ -- range](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views)+ -- within @image@ that is affected by this barrier.+ vkSubresourceRange :: VkImageSubresourceRange+ }+ deriving (Eq, Show)++instance Storable VkImageMemoryBarrier where+ sizeOf ~_ = 72+ alignment ~_ = 8+ peek ptr = VkImageMemoryBarrier <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 36)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 48)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 24) (vkOldLayout (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 28) (vkNewLayout (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 32) (vkSrcQueueFamilyIndex (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 36) (vkDstQueueFamilyIndex (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 40) (vkImage (poked :: VkImageMemoryBarrier))+ *> poke (ptr `plusPtr` 48) (vkSubresourceRange (poked :: VkImageMemoryBarrier))+-- | VkBufferCopy - Structure specifying a buffer copy operation+--+-- = See Also+--+-- @VkDeviceSize@, 'vkCmdCopyBuffer'+data VkBufferCopy = VkBufferCopy+ { -- | @srcOffset@ is the starting offset in bytes from the start of+ -- @srcBuffer@.+ vkSrcOffset :: VkDeviceSize+ , -- | @dstOffset@ is the starting offset in bytes from the start of+ -- @dstBuffer@.+ vkDstOffset :: VkDeviceSize+ , -- | @size@ is the number of bytes to copy.+ vkSize :: VkDeviceSize+ }+ deriving (Eq, Show)++instance Storable VkBufferCopy where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek ptr = VkBufferCopy <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcOffset (poked :: VkBufferCopy))+ *> poke (ptr `plusPtr` 8) (vkDstOffset (poked :: VkBufferCopy))+ *> poke (ptr `plusPtr` 16) (vkSize (poked :: VkBufferCopy))+-- | VkImageCopy - Structure specifying an image copy operation+--+-- = Description+--+-- For @VK_IMAGE_TYPE_3D@ images, copies are performed slice by slice+-- starting with the @z@ member of the @srcOffset@ or @dstOffset@, and+-- copying @depth@ slices. For images with multiple layers, copies are+-- performed layer by layer starting with the @baseArrayLayer@ member of+-- the @srcSubresource@ or @dstSubresource@ and copying @layerCount@+-- layers. Image data /can/ be copied between images with different image+-- types. If one image is @VK_IMAGE_TYPE_3D@ and the other image is+-- @VK_IMAGE_TYPE_2D@ with multiple layers, then each slice is copied to or+-- from a different layer.+--+-- Copies involving a [multi-planar image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- specify the region to be copied in terms of the /plane/ to be copied,+-- not the coordinates of the multi-planar image. This means that copies+-- accessing the R\/B planes of “@_422@” format images /must/ fit the+-- copied region within half the @width@ of the parent image, and that+-- copies accessing the R\/B planes of “@_420@” format images /must/ fit+-- the copied region within half the @width@ and @height@ of the parent+-- image.+--+-- == Valid Usage+--+-- - If neither the calling command’s @srcImage@ nor the calling+-- command’s @dstImage@ has a [multi-planar image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- then the @aspectMask@ member of @srcSubresource@ and+-- @dstSubresource@ /must/ match+--+-- - If the calling command’s @srcImage@ has a+-- 'Graphics.Vulkan.Core10.Core.VkFormat' with [two+-- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- then the @srcSubresource@ @aspectMask@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@+--+-- - If the calling command’s @srcImage@ has a+-- 'Graphics.Vulkan.Core10.Core.VkFormat' with [three+-- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- then the @srcSubresource@ @aspectMask@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@+--+-- - If the calling command’s @dstImage@ has a+-- 'Graphics.Vulkan.Core10.Core.VkFormat' with [two+-- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- then the @dstSubresource@ @aspectMask@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@+--+-- - If the calling command’s @dstImage@ has a+-- 'Graphics.Vulkan.Core10.Core.VkFormat' with [three+-- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- then the @dstSubresource@ @aspectMask@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@+--+-- - If the calling command’s @srcImage@ has a [multi-planar image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- and the @dstImage@ does not have a multi-planar image format, the+-- @dstSubresource@ @aspectMask@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@+--+-- - If the calling command’s @dstImage@ has a [multi-planar image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- and the @srcImage@ does not have a multi-planar image format, the+-- @srcSubresource@ @aspectMask@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@+--+-- - The number of slices of the @extent@ (for 3D) or layers of the+-- @srcSubresource@ (for non-3D) /must/ match the number of slices of+-- the @extent@ (for 3D) or layers of the @dstSubresource@ (for non-3D)+--+-- - If either of the calling command’s @srcImage@ or @dstImage@+-- parameters are of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'+-- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of+-- the corresponding subresource /must/ be @0@ and @1@, respectively+--+-- - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects+-- present in the calling command’s @srcImage@+--+-- - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects+-- present in the calling command’s @dstImage@+--+-- - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource width+--+-- - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource height+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource depth+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_2D@,+-- then @srcOffset.z@ /must/ be @0@.+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_2D@,+-- then @dstOffset.z@ /must/ be @0@.+--+-- - If both @srcImage@ and @dstImage@ are of type @VK_IMAGE_TYPE_2D@+-- then then @extent.depth@ /must/ be @1@.+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_2D@,+-- and the @dstImage@ is of type @VK_IMAGE_TYPE_3D@, then+-- @extent.depth@ /must/ equal to the @layerCount@ member of+-- @srcSubresource@.+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_2D@,+-- and the @srcImage@ is of type @VK_IMAGE_TYPE_3D@, then+-- @extent.depth@ /must/ equal to the @layerCount@ member of+-- @dstSubresource@.+--+-- - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource width+--+-- - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource height+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource depth+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, all members of @srcOffset@+-- /must/ be a multiple of the corresponding dimensions of the+-- compressed texel block+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, @extent.width@ /must/ be a+-- multiple of the compressed texel block width or (@extent.width@ ++-- @srcOffset.x@) /must/ equal the source image subresource width+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, @extent.height@ /must/ be a+-- multiple of the compressed texel block height or (@extent.height@ ++-- @srcOffset.y@) /must/ equal the source image subresource height+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, @extent.depth@ /must/ be a+-- multiple of the compressed texel block depth or (@extent.depth@ ++-- @srcOffset.z@) /must/ equal the source image subresource depth+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, all members of @dstOffset@+-- /must/ be a multiple of the corresponding dimensions of the+-- compressed texel block+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, @extent.width@ /must/ be a+-- multiple of the compressed texel block width or (@extent.width@ ++-- @dstOffset.x@) /must/ equal the destination image subresource width+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, @extent.height@ /must/ be a+-- multiple of the compressed texel block height or (@extent.height@ ++-- @dstOffset.y@) /must/ equal the destination image subresource height+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, @extent.depth@ /must/ be a+-- multiple of the compressed texel block depth or (@extent.depth@ ++-- @dstOffset.z@) /must/ equal the destination image subresource depth+--+-- == Valid Usage (Implicit)+--+-- - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',+-- 'VkImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',+-- 'vkCmdCopyImage'+data VkImageCopy = VkImageCopy+ { -- | @srcSubresource@ and @dstSubresource@ are 'VkImageSubresourceLayers'+ -- structures specifying the image subresources of the images used for the+ -- source and destination image data, respectively.+ vkSrcSubresource :: VkImageSubresourceLayers+ , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+ -- in texels of the sub-regions of the source and destination image data.+ vkSrcOffset :: VkOffset3D+ , -- No documentation found for Nested "VkImageCopy" "dstSubresource"+ vkDstSubresource :: VkImageSubresourceLayers+ , -- No documentation found for Nested "VkImageCopy" "dstOffset"+ vkDstOffset :: VkOffset3D+ , -- | @extent@ is the size in texels of the image to copy in @width@, @height@+ -- and @depth@.+ vkExtent :: VkExtent3D+ }+ deriving (Eq, Show)++instance Storable VkImageCopy where+ sizeOf ~_ = 68+ alignment ~_ = 4+ peek ptr = VkImageCopy <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 44)+ <*> peek (ptr `plusPtr` 56)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageCopy))+ *> poke (ptr `plusPtr` 16) (vkSrcOffset (poked :: VkImageCopy))+ *> poke (ptr `plusPtr` 28) (vkDstSubresource (poked :: VkImageCopy))+ *> poke (ptr `plusPtr` 44) (vkDstOffset (poked :: VkImageCopy))+ *> poke (ptr `plusPtr` 56) (vkExtent (poked :: VkImageCopy))+-- | VkImageBlit - Structure specifying an image blit operation+--+-- = Description+--+-- For each element of the @pRegions@ array, a blit operation is performed+-- the specified source and destination regions.+--+-- == Valid Usage+--+-- - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@+-- /must/ match+--+-- - The @layerCount@ member of @srcSubresource@ and @dstSubresource@+-- /must/ match+--+-- - If either of the calling command’s @srcImage@ or @dstImage@+-- parameters are of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'+-- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of+-- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,+-- respectively+--+-- - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects+-- present in the calling command’s @srcImage@+--+-- - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects+-- present in the calling command’s @dstImage@+--+-- - @srcOffset@[0].@x@ and @srcOffset@[1].@x@ /must/ both be greater+-- than or equal to @0@ and less than or equal to the source image+-- subresource width+--+-- - @srcOffset@[0].@y@ and @srcOffset@[1].@y@ /must/ both be greater+-- than or equal to @0@ and less than or equal to the source image+-- subresource height+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y /must/ be+-- @1@.+--+-- - @srcOffset@[0].@z@ and @srcOffset@[1].@z@ /must/ both be greater+-- than or equal to @0@ and less than or equal to the source image+-- subresource depth+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@ or+-- @VK_IMAGE_TYPE_2D@, then @srcOffset@[0].z /must/ be @0@ and+-- @srcOffset@[1].z /must/ be @1@.+--+-- - @dstOffset@[0].@x@ and @dstOffset@[1].@x@ /must/ both be greater+-- than or equal to @0@ and less than or equal to the destination image+-- subresource width+--+-- - @dstOffset@[0].@y@ and @dstOffset@[1].@y@ /must/ both be greater+-- than or equal to @0@ and less than or equal to the destination image+-- subresource height+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y /must/ be+-- @1@.+--+-- - @dstOffset@[0].@z@ and @dstOffset@[1].@z@ /must/ both be greater+-- than or equal to @0@ and less than or equal to the destination image+-- subresource depth+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@ or+-- @VK_IMAGE_TYPE_2D@, then @dstOffset@[0].z /must/ be @0@ and+-- @dstOffset@[1].z /must/ be @1@.+--+-- == Valid Usage (Implicit)+--+-- - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- = See Also+--+-- 'VkImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',+-- 'vkCmdBlitImage'+data VkImageBlit = VkImageBlit+ { -- | @srcSubresource@ is the subresource to blit from.+ vkSrcSubresource :: VkImageSubresourceLayers+ , -- | @srcOffsets@ is an array of two+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'+ -- structures specifying the bounds of the source region within+ -- @srcSubresource@.+ vkSrcOffsets :: Vector 2 VkOffset3D+ , -- | @dstSubresource@ is the subresource to blit into.+ vkDstSubresource :: VkImageSubresourceLayers+ , -- | @dstOffsets@ is an array of two+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'+ -- structures specifying the bounds of the destination region within+ -- @dstSubresource@.+ vkDstOffsets :: Vector 2 VkOffset3D+ }+ deriving (Eq, Show)++instance Storable VkImageBlit where+ sizeOf ~_ = 80+ alignment ~_ = 4+ peek ptr = VkImageBlit <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 56)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageBlit))+ *> poke (ptr `plusPtr` 16) (vkSrcOffsets (poked :: VkImageBlit))+ *> poke (ptr `plusPtr` 40) (vkDstSubresource (poked :: VkImageBlit))+ *> poke (ptr `plusPtr` 56) (vkDstOffsets (poked :: VkImageBlit))+-- | VkBufferImageCopy - Structure specifying a buffer image copy operation+--+-- = Description+--+-- When copying to or from a depth or stencil aspect, the data in buffer+-- memory uses a layout that is a (mostly) tightly packed representation of+-- the depth or stencil data. Specifically:+--+-- - data copied to or from the stencil aspect of any depth\/stencil+-- format is tightly packed with one @VK_FORMAT_S8_UINT@ value per+-- texel.+--+-- - data copied to or from the depth aspect of a @VK_FORMAT_D16_UNORM@+-- or @VK_FORMAT_D16_UNORM_S8_UINT@ format is tightly packed with one+-- @VK_FORMAT_D16_UNORM@ value per texel.+--+-- - data copied to or from the depth aspect of a @VK_FORMAT_D32_SFLOAT@+-- or @VK_FORMAT_D32_SFLOAT_S8_UINT@ format is tightly packed with one+-- @VK_FORMAT_D32_SFLOAT@ value per texel.+--+-- - data copied to or from the depth aspect of a+-- @VK_FORMAT_X8_D24_UNORM_PACK32@ or @VK_FORMAT_D24_UNORM_S8_UINT@+-- format is packed with one 32-bit word per texel with the D24 value+-- in the LSBs of the word, and undefined values in the eight MSBs.+--+-- __Note__+--+-- To copy both the depth and stencil aspects of a depth\/stencil format,+-- two entries in @pRegions@ /can/ be used, where one specifies the depth+-- aspect in @imageSubresource@, and the other specifies the stencil+-- aspect.+--+-- Because depth or stencil aspect buffer to image copies /may/ require+-- format conversions on some implementations, they are not supported on+-- queues that do not support graphics. When copying to a depth aspect, the+-- data in buffer memory /must/ be in the the range [0,1] or undefined+-- results occur.+--+-- Copies are done layer by layer starting with image layer+-- @baseArrayLayer@ member of @imageSubresource@. @layerCount@ layers are+-- copied from the source image or to the destination image.+--+-- == Valid Usage+--+-- - If the calling command’s @VkImage@ parameter’s format is not a+-- depth\/stencil format or a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- then @bufferOffset@ /must/ be a multiple of the format’s element+-- size+--+-- - If the calling command’s @VkImage@ parameter’s format is a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- then @bufferOffset@ /must/ be a multiple of the element size of the+-- compatible format for the format and the @aspectMask@ of the+-- @imageSubresource@ as defined in+-- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+--+-- - @bufferOffset@ /must/ be a multiple of @4@+--+-- - @bufferRowLength@ /must/ be @0@, or greater than or equal to the+-- @width@ member of @imageExtent@+--+-- - @bufferImageHeight@ /must/ be @0@, or greater than or equal to the+-- @height@ member of @imageExtent@+--+-- - @imageOffset.x@ and (@imageExtent.width@ + @imageOffset.x@) /must/+-- both be greater than or equal to @0@ and less than or equal to the+-- image subresource width where this refers to the width of the+-- /plane/ of the image involved in the copy in the case of a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+--+-- - @imageOffset.y@ and (imageExtent.height + @imageOffset.y@) /must/+-- both be greater than or equal to @0@ and less than or equal to the+-- image subresource height where this refers to the height of the+-- /plane/ of the image involved in the copy in the case of a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+--+-- - If the calling command’s @srcImage@ ('vkCmdCopyImageToBuffer') or+-- @dstImage@ ('vkCmdCopyBufferToImage') is of type @VK_IMAGE_TYPE_1D@,+-- then @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/+-- be @1@.+--+-- - @imageOffset.z@ and (imageExtent.depth + @imageOffset.z@) /must/+-- both be greater than or equal to @0@ and less than or equal to the+-- image subresource depth+--+-- - If the calling command’s @srcImage@ ('vkCmdCopyImageToBuffer') or+-- @dstImage@ ('vkCmdCopyBufferToImage') is of type @VK_IMAGE_TYPE_1D@+-- or @VK_IMAGE_TYPE_2D@, then @imageOffset.z@ /must/ be @0@ and+-- @imageExtent.depth@ /must/ be @1@+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, @bufferRowLength@ /must/+-- be a multiple of the compressed texel block width+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, @bufferImageHeight@+-- /must/ be a multiple of the compressed texel block height+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, all members of+-- @imageOffset@ /must/ be a multiple of the corresponding dimensions+-- of the compressed texel block+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, @bufferOffset@ /must/ be+-- a multiple of the compressed texel block size in bytes+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, @imageExtent.width@+-- /must/ be a multiple of the compressed texel block width or+-- (@imageExtent.width@ + @imageOffset.x@) /must/ equal the image+-- subresource width+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, @imageExtent.height@+-- /must/ be a multiple of the compressed texel block height or+-- (@imageExtent.height@ + @imageOffset.y@) /must/ equal the image+-- subresource height+--+-- - If the calling command’s @VkImage@ parameter is a compressed image,+-- or a /single-plane/, “@_422@” image format, @imageExtent.depth@+-- /must/ be a multiple of the compressed texel block depth or+-- (@imageExtent.depth@ + @imageOffset.z@) /must/ equal the image+-- subresource depth+--+-- - The @aspectMask@ member of @imageSubresource@ /must/ specify aspects+-- present in the calling command’s @VkImage@ parameter+--+-- - If the calling command’s @VkImage@ parameter’s format is a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- then the @aspectMask@ member of @imageSubresource@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ (with @VK_IMAGE_ASPECT_PLANE_2_BIT@+-- valid only for image formats with three planes)+--+-- - The @aspectMask@ member of @imageSubresource@ /must/ only have a+-- single bit set+--+-- - If the calling command’s @VkImage@ parameter is of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'+-- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of+-- @imageSubresource@ /must/ be @0@ and @1@, respectively+--+-- - When copying to the depth aspect of an image subresource, the data+-- in the source buffer /must/ be in the range [0,1]+--+-- == Valid Usage (Implicit)+--+-- - @imageSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- = See Also+--+-- @VkDeviceSize@,+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',+-- 'VkImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',+-- 'vkCmdCopyBufferToImage', 'vkCmdCopyImageToBuffer'+data VkBufferImageCopy = VkBufferImageCopy+ { -- | @bufferOffset@ is the offset in bytes from the start of the buffer+ -- object where the image data is copied from or to.+ vkBufferOffset :: VkDeviceSize+ , -- | @bufferRowLength@ and @bufferImageHeight@ specify the data in buffer+ -- memory as a subregion of a larger two- or three-dimensional image, and+ -- control the addressing calculations of data in buffer memory. If either+ -- of these values is zero, that aspect of the buffer memory is considered+ -- to be tightly packed according to the @imageExtent@.+ vkBufferRowLength :: Word32+ , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight"+ vkBufferImageHeight :: Word32+ , -- | @imageSubresource@ is a 'VkImageSubresourceLayers' used to specify the+ -- specific image subresources of the image used for the source or+ -- destination image data.+ vkImageSubresource :: VkImageSubresourceLayers+ , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the+ -- sub-region of the source or destination image data.+ vkImageOffset :: VkOffset3D+ , -- | @imageExtent@ is the size in texels of the image to copy in @width@,+ -- @height@ and @depth@.+ vkImageExtent :: VkExtent3D+ }+ deriving (Eq, Show)++instance Storable VkBufferImageCopy where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek ptr = VkBufferImageCopy <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 44)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkBufferOffset (poked :: VkBufferImageCopy))+ *> poke (ptr `plusPtr` 8) (vkBufferRowLength (poked :: VkBufferImageCopy))+ *> poke (ptr `plusPtr` 12) (vkBufferImageHeight (poked :: VkBufferImageCopy))+ *> poke (ptr `plusPtr` 16) (vkImageSubresource (poked :: VkBufferImageCopy))+ *> poke (ptr `plusPtr` 32) (vkImageOffset (poked :: VkBufferImageCopy))+ *> poke (ptr `plusPtr` 44) (vkImageExtent (poked :: VkBufferImageCopy))+-- | VkImageResolve - Structure specifying an image resolve operation+--+-- == Valid Usage+--+-- - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@+-- /must/ only contain @VK_IMAGE_ASPECT_COLOR_BIT@+--+-- - The @layerCount@ member of @srcSubresource@ and @dstSubresource@+-- /must/ match+--+-- - If either of the calling command’s @srcImage@ or @dstImage@+-- parameters are of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'+-- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of+-- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,+-- respectively+--+-- - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource width+--+-- - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource height+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource depth+--+-- - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@ or+-- @VK_IMAGE_TYPE_2D@, then @srcOffset.z@ /must/ be @0@ and+-- @extent.depth@ /must/ be @1@.+--+-- - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource width+--+-- - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource height+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,+-- then @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource depth+--+-- - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@ or+-- @VK_IMAGE_TYPE_2D@, then @dstOffset.z@ /must/ be @0@ and+-- @extent.depth@ /must/ be @1@.+--+-- == Valid Usage (Implicit)+--+-- - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',+-- 'VkImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',+-- 'vkCmdResolveImage'+data VkImageResolve = VkImageResolve+ { -- | @srcSubresource@ and @dstSubresource@ are 'VkImageSubresourceLayers'+ -- structures specifying the image subresources of the images used for the+ -- source and destination image data, respectively. Resolve of+ -- depth\/stencil images is not supported.+ vkSrcSubresource :: VkImageSubresourceLayers+ , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+ -- in texels of the sub-regions of the source and destination image data.+ vkSrcOffset :: VkOffset3D+ , -- No documentation found for Nested "VkImageResolve" "dstSubresource"+ vkDstSubresource :: VkImageSubresourceLayers+ , -- No documentation found for Nested "VkImageResolve" "dstOffset"+ vkDstOffset :: VkOffset3D+ , -- | @extent@ is the size in texels of the source image to resolve in+ -- @width@, @height@ and @depth@.+ vkExtent :: VkExtent3D+ }+ deriving (Eq, Show)++instance Storable VkImageResolve where+ sizeOf ~_ = 68+ alignment ~_ = 4+ peek ptr = VkImageResolve <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 44)+ <*> peek (ptr `plusPtr` 56)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageResolve))+ *> poke (ptr `plusPtr` 16) (vkSrcOffset (poked :: VkImageResolve))+ *> poke (ptr `plusPtr` 28) (vkDstSubresource (poked :: VkImageResolve))+ *> poke (ptr `plusPtr` 44) (vkDstOffset (poked :: VkImageResolve))+ *> poke (ptr `plusPtr` 56) (vkExtent (poked :: VkImageResolve))+-- | VkRenderPassBeginInfo - Structure specifying render pass begin info+--+-- = Description+--+-- @renderArea@ is the render area that is affected by the render pass+-- instance. The effects of attachment load, store and multisample resolve+-- operations are restricted to the pixels whose x and y coordinates fall+-- within the render area on all attachments. The render area extends to+-- all layers of @framebuffer@. The application /must/ ensure (using+-- scissor if necessary) that all rendering is contained within the render+-- area, otherwise the pixels outside of the render area become undefined+-- and shader side effects /may/ occur for fragments outside the render+-- area. The render area /must/ be contained within the framebuffer+-- dimensions.+--+-- When multiview is enabled, the resolve operation at the end of a subpass+-- applies to all views in the view mask.+--+-- __Note__+--+-- There /may/ be a performance cost for using a render area smaller than+-- the framebuffer, unless it matches the render area granularity for the+-- render pass.+--+-- == Valid Usage+--+-- - @clearValueCount@ /must/ be greater than the largest attachment+-- index in @renderPass@ that specifies a @loadOp@ (or @stencilLoadOp@,+-- if the attachment has a depth\/stencil format) of+-- @VK_ATTACHMENT_LOAD_OP_CLEAR@+--+-- - If @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid+-- pointer to an array of @clearValueCount@ valid @VkClearValue@ unions+--+-- - @renderPass@ /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkFramebufferCreateInfo@+-- structure specified when creating @framebuffer@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkRenderPassSampleLocationsBeginInfoEXT'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- - @renderPass@ /must/ be a valid @VkRenderPass@ handle+--+-- - @framebuffer@ /must/ be a valid @VkFramebuffer@ handle+--+-- - Both of @framebuffer@, and @renderPass@ /must/ have been created,+-- allocated, or retrieved from the same @VkDevice@+--+-- = See Also+--+-- 'VkClearValue', 'Graphics.Vulkan.Core10.Pass.VkFramebuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',+-- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdBeginRenderPass'+data VkRenderPassBeginInfo = VkRenderPassBeginInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @renderPass@ is the render pass to begin an instance of.+ vkRenderPass :: VkRenderPass+ , -- | @framebuffer@ is the framebuffer containing the attachments that are+ -- used with the render pass.+ vkFramebuffer :: VkFramebuffer+ , -- | @renderArea@ is the render area that is affected by the render pass+ -- instance, and is described in more detail below.+ vkRenderArea :: VkRect2D+ , -- | @clearValueCount@ is the number of elements in @pClearValues@.+ vkClearValueCount :: Word32+ , -- | @pClearValues@ is an array of 'VkClearValue' structures that contains+ -- clear values for each attachment, if the attachment uses a @loadOp@+ -- value of @VK_ATTACHMENT_LOAD_OP_CLEAR@ or if the attachment has a+ -- depth\/stencil format and uses a @stencilLoadOp@ value of+ -- @VK_ATTACHMENT_LOAD_OP_CLEAR@. The array is indexed by attachment+ -- number. Only elements corresponding to cleared attachments are used.+ -- Other elements of @pClearValues@ are ignored.+ vkPClearValues :: Ptr VkClearValue+ }+ deriving (Eq, Show)++instance Storable VkRenderPassBeginInfo where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek ptr = VkRenderPassBeginInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 48)+ <*> peek (ptr `plusPtr` 56)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassBeginInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassBeginInfo))+ *> poke (ptr `plusPtr` 16) (vkRenderPass (poked :: VkRenderPassBeginInfo))+ *> poke (ptr `plusPtr` 24) (vkFramebuffer (poked :: VkRenderPassBeginInfo))+ *> poke (ptr `plusPtr` 32) (vkRenderArea (poked :: VkRenderPassBeginInfo))+ *> poke (ptr `plusPtr` 48) (vkClearValueCount (poked :: VkRenderPassBeginInfo))+ *> poke (ptr `plusPtr` 56) (vkPClearValues (poked :: VkRenderPassBeginInfo))+-- | VkClearDepthStencilValue - Structure specifying a clear depth stencil+-- value+--+-- == Valid Usage+--+-- - Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is enabled @depth@ /must/ be between @0.0@ and @1.0@,+-- inclusive+--+-- = See Also+--+-- 'VkClearValue', 'vkCmdClearDepthStencilImage'+data VkClearDepthStencilValue = VkClearDepthStencilValue+ { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil+ -- attachment. It is a floating-point value which is automatically+ -- converted to the attachment’s format.+ vkDepth :: CFloat+ , -- | @stencil@ is the clear value for the stencil aspect of the+ -- depth\/stencil attachment. It is a 32-bit integer value which is+ -- converted to the attachment’s format by taking the appropriate number of+ -- LSBs.+ vkStencil :: Word32+ }+ deriving (Eq, Show)++instance Storable VkClearDepthStencilValue where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek ptr = VkClearDepthStencilValue <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkDepth (poked :: VkClearDepthStencilValue))+ *> poke (ptr `plusPtr` 4) (vkStencil (poked :: VkClearDepthStencilValue))+-- | VkClearAttachment - Structure specifying a clear attachment+--+-- = Description+--+-- No memory barriers are needed between @vkCmdClearAttachments@ and+-- preceding or subsequent draw or attachment clear commands in the same+-- subpass.+--+-- The @vkCmdClearAttachments@ command is not affected by the bound+-- pipeline state.+--+-- Attachments /can/ also be cleared at the beginning of a render pass+-- instance by setting @loadOp@ (or @stencilLoadOp@) of+-- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription' to+-- @VK_ATTACHMENT_LOAD_OP_CLEAR@, as described for+-- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass'.+--+-- == Valid Usage+--+-- - If @aspectMask@ includes @VK_IMAGE_ASPECT_COLOR_BIT@, it /must/ not+-- include @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@+--+-- - @aspectMask@ /must/ not include @VK_IMAGE_ASPECT_METADATA_BIT@+--+-- - @clearValue@ /must/ be a valid @VkClearValue@ union+--+-- == Valid Usage (Implicit)+--+-- - @aspectMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'+-- values+--+-- - @aspectMask@ /must/ not be @0@+--+-- = See Also+--+-- 'VkClearValue',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',+-- 'vkCmdClearAttachments'+data VkClearAttachment = VkClearAttachment+ { -- | @aspectMask@ is a mask selecting the color, depth and\/or stencil+ -- aspects of the attachment to be cleared. @aspectMask@ /can/ include+ -- @VK_IMAGE_ASPECT_COLOR_BIT@ for color attachments,+ -- @VK_IMAGE_ASPECT_DEPTH_BIT@ for depth\/stencil attachments with a depth+ -- component, and @VK_IMAGE_ASPECT_STENCIL_BIT@ for depth\/stencil+ -- attachments with a stencil component. If the subpass’s depth\/stencil+ -- attachment is @VK_ATTACHMENT_UNUSED@, then the clear has no effect.+ vkAspectMask :: VkImageAspectFlags+ , -- | @colorAttachment@ is only meaningful if @VK_IMAGE_ASPECT_COLOR_BIT@ is+ -- set in @aspectMask@, in which case it is an index to the+ -- @pColorAttachments@ array in the+ -- 'Graphics.Vulkan.Core10.Pass.VkSubpassDescription' structure of the+ -- current subpass which selects the color attachment to clear. If+ -- @colorAttachment@ is @VK_ATTACHMENT_UNUSED@ then the clear has no+ -- effect.+ vkColorAttachment :: Word32+ , -- | @clearValue@ is the color or depth\/stencil value to clear the+ -- attachment to, as described in [Clear+ -- Values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)+ -- below.+ vkClearValue :: VkClearValue+ }+ deriving (Eq, Show)++instance Storable VkClearAttachment where+ sizeOf ~_ = 24+ alignment ~_ = 4+ peek ptr = VkClearAttachment <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkClearAttachment))+ *> poke (ptr `plusPtr` 4) (vkColorAttachment (poked :: VkClearAttachment))+ *> poke (ptr `plusPtr` 8) (vkClearValue (poked :: VkClearAttachment))+-- | VkDrawIndirectCommand - Structure specifying a draw indirect command+--+-- = Description+--+-- The members of @VkDrawIndirectCommand@ have the same meaning as the+-- similarly named parameters of 'vkCmdDraw'.+--+-- == Valid Usage+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)+--+-- - If the+-- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)+-- feature is not enabled, @firstInstance@ /must/ be @0@+--+-- = See Also+--+-- 'vkCmdDrawIndirect'+data VkDrawIndirectCommand = VkDrawIndirectCommand+ { -- | @vertexCount@ is the number of vertices to draw.+ vkVertexCount :: Word32+ , -- | @instanceCount@ is the number of instances to draw.+ vkInstanceCount :: Word32+ , -- | @firstVertex@ is the index of the first vertex to draw.+ vkFirstVertex :: Word32+ , -- | @firstInstance@ is the instance ID of the first instance to draw.+ vkFirstInstance :: Word32+ }+ deriving (Eq, Show)++instance Storable VkDrawIndirectCommand where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek ptr = VkDrawIndirectCommand <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkVertexCount (poked :: VkDrawIndirectCommand))+ *> poke (ptr `plusPtr` 4) (vkInstanceCount (poked :: VkDrawIndirectCommand))+ *> poke (ptr `plusPtr` 8) (vkFirstVertex (poked :: VkDrawIndirectCommand))+ *> poke (ptr `plusPtr` 12) (vkFirstInstance (poked :: VkDrawIndirectCommand))+-- | VkDrawIndexedIndirectCommand - Structure specifying a draw indexed+-- indirect command+--+-- = Description+--+-- The members of @VkDrawIndexedIndirectCommand@ have the same meaning as+-- the similarly named parameters of 'vkCmdDrawIndexed'.+--+-- == Valid Usage+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)+--+-- - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be+-- less than or equal to the size of the bound index buffer, with+-- @indexSize@ being based on the type specified by @indexType@, where+-- the index buffer, @indexType@, and @offset@ are specified via+-- @vkCmdBindIndexBuffer@+--+-- - If the+-- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)+-- feature is not enabled, @firstInstance@ /must/ be @0@+--+-- = See Also+--+-- 'vkCmdDrawIndexedIndirect'+data VkDrawIndexedIndirectCommand = VkDrawIndexedIndirectCommand+ { -- | @indexCount@ is the number of vertices to draw.+ vkIndexCount :: Word32+ , -- | @instanceCount@ is the number of instances to draw.+ vkInstanceCount :: Word32+ , -- | @firstIndex@ is the base index within the index buffer.+ vkFirstIndex :: Word32+ , -- | @vertexOffset@ is the value added to the vertex index before indexing+ -- into the vertex buffer.+ vkVertexOffset :: Int32+ , -- | @firstInstance@ is the instance ID of the first instance to draw.+ vkFirstInstance :: Word32+ }+ deriving (Eq, Show)++instance Storable VkDrawIndexedIndirectCommand where+ sizeOf ~_ = 20+ alignment ~_ = 4+ peek ptr = VkDrawIndexedIndirectCommand <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkIndexCount (poked :: VkDrawIndexedIndirectCommand))+ *> poke (ptr `plusPtr` 4) (vkInstanceCount (poked :: VkDrawIndexedIndirectCommand))+ *> poke (ptr `plusPtr` 8) (vkFirstIndex (poked :: VkDrawIndexedIndirectCommand))+ *> poke (ptr `plusPtr` 12) (vkVertexOffset (poked :: VkDrawIndexedIndirectCommand))+ *> poke (ptr `plusPtr` 16) (vkFirstInstance (poked :: VkDrawIndexedIndirectCommand))+-- | VkDispatchIndirectCommand - Structure specifying a dispatch indirect+-- command+--+-- = Description+--+-- The members of @VkDispatchIndirectCommand@ have the same meaning as the+-- corresponding parameters of 'vkCmdDispatch'.+--+-- == Valid Usage+--+-- - @x@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]+--+-- - @y@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]+--+-- - @z@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]+--+-- = See Also+--+-- 'vkCmdDispatchIndirect'+data VkDispatchIndirectCommand = VkDispatchIndirectCommand+ { -- | @x@ is the number of local workgroups to dispatch in the X dimension.+ vkX :: Word32+ , -- | @y@ is the number of local workgroups to dispatch in the Y dimension.+ vkY :: Word32+ , -- | @z@ is the number of local workgroups to dispatch in the Z dimension.+ vkZ :: Word32+ }+ deriving (Eq, Show)++instance Storable VkDispatchIndirectCommand where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek ptr = VkDispatchIndirectCommand <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkDispatchIndirectCommand))+ *> poke (ptr `plusPtr` 4) (vkY (poked :: VkDispatchIndirectCommand))+ *> poke (ptr `plusPtr` 8) (vkZ (poked :: VkDispatchIndirectCommand))+-- | VkClearColorValue - Structure specifying a clear color value+--+-- = Description+--+-- The four array elements of the clear color map to R, G, B, and A+-- components of image formats, in order.+--+-- If the image has more than one sample, the same value is written to all+-- samples for any pixels being cleared.+--+-- = See Also+--+-- 'VkClearValue', 'vkCmdClearColorImage'+data VkClearColorValue+ = -- No documentation found for Nested "VkClearColorValue" "VkFloat32"+ VkFloat32 (Vector 4 CFloat)+ | -- No documentation found for Nested "VkClearColorValue" "VkInt32"+ VkInt32 (Vector 4 Int32)+ | -- No documentation found for Nested "VkClearColorValue" "VkUint32"+ VkUint32 (Vector 4 Word32)+ deriving (Eq, Show)++-- | _Note_: peek is undefined as we wouldn't know which constructor to use+instance Storable VkClearColorValue where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek _ = error "peek @VkClearColorValue"+ poke ptr = \case+ VkFloat32 e -> poke (castPtr ptr) e+ VkInt32 e -> poke (castPtr ptr) e+ VkUint32 e -> poke (castPtr ptr) e+-- | VkClearValue - Structure specifying a clear value+--+-- = Description+--+-- This union is used where part of the API requires either color or+-- depth\/stencil clear values, depending on the attachment, and defines+-- the initial clear values in the 'VkRenderPassBeginInfo' structure.+--+-- == Valid Usage+--+-- - @depthStencil@ /must/ be a valid @VkClearDepthStencilValue@+-- structure+--+-- = See Also+--+-- 'VkClearAttachment', 'VkClearColorValue', 'VkClearDepthStencilValue',+-- 'VkRenderPassBeginInfo'+data VkClearValue+ = -- No documentation found for Nested "VkClearValue" "VkColor"+ VkColor VkClearColorValue+ | -- No documentation found for Nested "VkClearValue" "VkDepthStencil"+ VkDepthStencil VkClearDepthStencilValue+ deriving (Eq, Show)++-- | _Note_: peek is undefined as we wouldn't know which constructor to use+instance Storable VkClearValue where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek _ = error "peek @VkClearValue"+ poke ptr = \case+ VkColor e -> poke (castPtr ptr) e+ VkDepthStencil e -> poke (castPtr ptr) e+-- | VkStencilFaceFlags - Bitmask of VkStencilFaceFlagBits+--+-- = Description+--+-- @VkStencilFaceFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkStencilFaceFlagBits'.+--+-- = See Also -- -- 'VkStencilFaceFlagBits', 'vkCmdSetStencilCompareMask', -- 'vkCmdSetStencilReference', 'vkCmdSetStencilWriteMask'
src/Graphics/Vulkan/Core10/CommandPool.hs view
@@ -74,7 +74,6 @@ -- command pool -- -- = See Also--- #_see_also# -- -- 'VkCommandPoolCreateFlags' newtype VkCommandPoolCreateFlagBits = VkCommandPoolCreateFlagBits VkFlags@@ -109,10 +108,11 @@ pattern VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = VkCommandPoolCreateFlagBits 0x00000001 -- | @VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT@ allows any command--- buffer allocated from a pool to be individually reset to the--- <{html_spec_relative}#commandbuffers-lifecycle initial state>; either by--- calling 'Graphics.Vulkan.Core10.CommandBuffer.vkResetCommandBuffer', or--- via the implicit reset when calling+-- buffer allocated from a pool to be individually reset to the [initial+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle);+-- either by calling+-- 'Graphics.Vulkan.Core10.CommandBuffer.vkResetCommandBuffer', or via the+-- implicit reset when calling -- 'Graphics.Vulkan.Core10.CommandBuffer.vkBeginCommandBuffer'. If this -- flag is not set on a pool, then @vkResetCommandBuffer@ /must/ not be -- called for any command buffer allocated from that pool.@@ -124,7 +124,6 @@ -- pool reset -- -- = See Also--- #_see_also# -- -- 'VkCommandPoolResetFlags' newtype VkCommandPoolResetFlagBits = VkCommandPoolResetFlagBits VkFlags@@ -153,11 +152,7 @@ data VkCommandPool_T -- | VkCommandPool - Opaque handle to a command pool object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferAllocateInfo', -- 'vkCreateCommandPool', 'vkDestroyCommandPool',@@ -169,21 +164,19 @@ -- | vkCreateCommandPool - Create a new command pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the command pool. -- -- - @pCreateInfo@ contains information used to create the command pool. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pCommandPool@ points to a @VkCommandPool@ handle in which the -- created pool is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -198,16 +191,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkCommandPool', 'VkCommandPoolCreateInfo',@@ -216,33 +208,34 @@ -- | vkDestroyCommandPool - Destroy a command pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the command pool. -- -- - @commandPool@ is the handle of the command pool to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- = Description--- #_description# -- -- When a pool is destroyed, all command buffers allocated from the pool--- are <{html_spec_relative}#vkFreeCommandBuffers freed>.+-- are+-- [freed](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkFreeCommandBuffers). -- -- Any primary command buffer allocated from another 'VkCommandPool' that--- is in the--- <{html_spec_relative}#commandbuffers-lifecycle recording or executable state>+-- is in the [recording or executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- and has a secondary command buffer allocated from @commandPool@ recorded -- into it, becomes--- <{html_spec_relative}#commandbuffers-lifecycle invalid>.+-- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage -- -- - All @VkCommandBuffer@ objects allocated from @commandPool@ /must/--- not be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>.+-- not be in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - If @VkAllocationCallbacks@ were provided when @commandPool@ was -- created, a compatible set of callbacks /must/ be provided here@@ -269,7 +262,6 @@ -- - Host access to @commandPool@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkCommandPool', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -277,7 +269,6 @@ -- | vkResetCommandPool - Reset a command pool -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the command pool. --@@ -287,26 +278,25 @@ -- reset operation. -- -- = Description--- #_description# -- -- Resetting a command pool recycles all of the resources from all of the -- command buffers allocated from the command pool back to the command -- pool. All command buffers that have been allocated from the command pool--- are put in the--- <{html_spec_relative}#commandbuffers-lifecycle initial state>.+-- are put in the [initial+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- Any primary command buffer allocated from another 'VkCommandPool' that--- is in the--- <{html_spec_relative}#commandbuffers-lifecycle recording or executable state>+-- is in the [recording or executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- and has a secondary command buffer allocated from @commandPool@ recorded -- into it, becomes--- <{html_spec_relative}#commandbuffers-lifecycle invalid>.+-- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage -- -- - All @VkCommandBuffer@ objects allocated from @commandPool@ /must/--- not be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>+-- not be in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- == Valid Usage (Implicit) --@@ -326,16 +316,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkCommandPool', 'VkCommandPoolResetFlags', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -343,9 +332,6 @@ -- | VkCommandPoolCreateInfo - Structure specifying parameters of a newly -- created command pool ----- = Description--- #_description#--- -- == Valid Usage -- -- - @queueFamilyIndex@ /must/ be the index of a queue family available@@ -361,18 +347,22 @@ -- 'VkCommandPoolCreateFlagBits' values -- -- = See Also--- #_see_also# -- -- 'VkCommandPoolCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateCommandPool' data VkCommandPoolCreateInfo = VkCommandPoolCreateInfo- { -- No documentation found for Nested "VkCommandPoolCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkCommandPoolCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCommandPoolCreateInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkCommandPoolCreateFlagBits' indicating usage+ -- behavior for the pool and command buffers allocated from it. vkFlags :: VkCommandPoolCreateFlags- , -- No documentation found for Nested "VkCommandPoolCreateInfo" "vkQueueFamilyIndex"+ , -- | @queueFamilyIndex@ designates a queue family as described in section+ -- [Queue Family+ -- Properties](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queueprops).+ -- All command buffers allocated from this command pool /must/ be submitted+ -- on queues from the same queue family. vkQueueFamilyIndex :: Word32 } deriving (Eq, Show)@@ -391,26 +381,22 @@ -- | VkCommandPoolCreateFlags - Bitmask of VkCommandPoolCreateFlagBits -- -- = Description--- #_description# -- -- @VkCommandPoolCreateFlags@ is a bitmask type for setting a mask of zero -- or more 'VkCommandPoolCreateFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkCommandPoolCreateFlagBits', 'VkCommandPoolCreateInfo' type VkCommandPoolCreateFlags = VkCommandPoolCreateFlagBits -- | VkCommandPoolResetFlags - Bitmask of VkCommandPoolResetFlagBits -- -- = Description--- #_description# -- -- @VkCommandPoolResetFlags@ is a bitmask type for setting a mask of zero -- or more 'VkCommandPoolResetFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkCommandPoolResetFlagBits', 'vkResetCommandPool' type VkCommandPoolResetFlags = VkCommandPoolResetFlagBits
src/Graphics/Vulkan/Core10/Constants.hs view
@@ -57,11 +57,7 @@ -- | VK_NULL_HANDLE - Reserved non-valid object handle ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- No cross-references are available pattern VK_NULL_HANDLE :: Ptr a@@ -72,7 +68,6 @@ -- | VkPipelineCacheHeaderVersion - Encode pipeline cache version -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache', -- 'Graphics.Vulkan.Core10.PipelineCache.vkGetPipelineCacheData'
src/Graphics/Vulkan/Core10/Core.hs view
@@ -327,7 +327,6 @@ -- | VkBool32 - Vulkan boolean type -- -- = Description--- #_description# -- -- @VK_TRUE@ represents a boolean __True__ (integer 1) value, and -- @VK_FALSE@ a boolean __False__ (integer 0) value.@@ -339,7 +338,6 @@ -- @VK_FALSE@ into a Vulkan implementation where a @VkBool32@ is expected. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV',@@ -419,7 +417,6 @@ -- | VkFormat - Available image formats -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID', -- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription',@@ -1692,9 +1689,9 @@ -- packed unsigned floating-point format that has a 10-bit B component in -- bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component -- in bits 0..10. See--- <{html_spec_relative}#fundamentals-fp10 {html_spec_relative}#fundamentals-fp10>+-- [{html_spec_relative}#fundamentals-fp10](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fp10) -- and--- <{html_spec_relative}#fundamentals-fp11 {html_spec_relative}#fundamentals-fp11>.+-- [{html_spec_relative}#fundamentals-fp11](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fp11). pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 :: VkFormat pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 = VkFormat 122 @@ -2109,7 +2106,6 @@ -- | VkResult - Vulkan command return codes -- -- = Description--- #_description# -- -- - @VK_SUCCESS@ Command successfully completed --@@ -2124,6 +2120,10 @@ -- -- - @VK_INCOMPLETE@ A return array was too small for the result --+-- - @VK_SUBOPTIMAL_KHR@ A swapchain no longer matches the surface+-- properties exactly, but /can/ still be used to present to the+-- surface successfully.+-- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ A host memory allocation has failed. -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ A device memory allocation has@@ -2133,7 +2133,8 @@ -- not be completed for implementation-specific reasons. -- -- - @VK_ERROR_DEVICE_LOST@ The logical or physical device has been lost.--- See <{html_spec_relative}#devsandqueues-lost-device Lost Device>+-- See [Lost+-- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device) -- -- - @VK_ERROR_MEMORY_MAP_FAILED@ Mapping of a memory object has failed. --@@ -2158,8 +2159,42 @@ -- - @VK_ERROR_FRAGMENTED_POOL@ A pool allocation has failed due to -- fragmentation of the pool’s memory. This /must/ only be returned if -- no attempt to allocate host or device memory was made to accomodate--- the new allocation.+-- the new allocation. This /should/ be returned in preference to+-- @VK_ERROR_OUT_OF_POOL_MEMORY@, but only if the implementation is+-- certain that the pool allocation failure was due to fragmentation. --+-- - @VK_ERROR_SURFACE_LOST_KHR@ A surface is no longer available.+--+-- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ The requested window is already+-- in use by Vulkan or another API in a manner which prevents it from+-- being used again.+--+-- - @VK_ERROR_OUT_OF_DATE_KHR@ A surface has changed in such a way that+-- it is no longer compatible with the swapchain, and further+-- presentation requests using the swapchain will fail. Applications+-- /must/ query the new surface properties and recreate their swapchain+-- if they wish to continue presenting to the surface.+--+-- - @VK_ERROR_INCOMPATIBLE_DISPLAY_KHR@ The display used by a swapchain+-- does not use the same presentable image layout, or is incompatible+-- in a way that prevents sharing an image.+--+-- - @VK_ERROR_INVALID_SHADER_NV@ One or more shaders failed to compile+-- or link. More details are reported back to the application via+-- @{html_spec_relative}#VK_EXT_debug_report@ if enabled.+--+-- - @VK_ERROR_OUT_OF_POOL_MEMORY@ A pool memory allocation has failed.+-- This /must/ only be returned if no attempt to allocate host or+-- device memory was made to accomodate the new allocation. If the+-- failure was definitely due to fragmentation of the pool,+-- @VK_ERROR_FRAGMENTED_POOL@ /should/ be returned instead.+--+-- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ An external handle is not a valid+-- handle of the specified type.+--+-- - @VK_ERROR_FRAGMENTATION_EXT@ A descriptor pool creation has failed+-- due to fragmentation.+-- -- If a command returns a run time error, unless otherwise specified any -- output parameters will have undefined contents, except that if the -- output parameter is a structure with @sType@ and @pNext@ fields, those@@ -2178,7 +2213,6 @@ -- @vkEndCommandBuffer@. -- -- = See Also--- #_see_also# -- -- No cross-references are available, -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkPresentInfoKHR'@@ -2333,7 +2367,6 @@ -- | VkStructureType - Vulkan structure types (@stype@) -- -- = Description--- #_description# -- -- Each value corresponds to a particular structure with a @sType@ member -- with a matching name. As a general rule, the name of each@@ -2351,7 +2384,6 @@ -- this Specification. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkAcquireNextImageInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',@@ -3272,100 +3304,86 @@ -- | VkObjectType - Specify an enumeration to track object handle types -- -- = Description--- #_description# ----- > +------------------------------------------+---------------------------+--- > | 'VkObjectType' | Vulkan Handle Type |--- > +==========================================+===========================+--- > | @VK_OBJECT_TYPE_UNKNOWN@ | Unknown\/Undefined Handle |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_INSTANCE@ | 'Graphics.Vulkan.Core10.D |--- > | | eviceInitialization.VkIns |--- > | | tance' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_PHYSICAL_DEVICE@ | 'Graphics.Vulkan.Core10.D |--- > | | eviceInitialization.VkPhy |--- > | | sicalDevice' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_DEVICE@ | 'Graphics.Vulkan.Core10.D |--- > | | eviceInitialization.VkDev |--- > | | ice' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_QUEUE@ | 'Graphics.Vulkan.Core10.Q |--- > | | ueue.VkQueue' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_SEMAPHORE@ | 'Graphics.Vulkan.Core10.Q |--- > | | ueue.VkSemaphore' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_COMMAND_BUFFER@ | 'Graphics.Vulkan.Core10.Q |--- > | | ueue.VkCommandBuffer' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_FENCE@ | 'Graphics.Vulkan.Core10.Q |--- > | | ueue.VkFence' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_DEVICE_MEMORY@ | 'Graphics.Vulkan.Core10.M |--- > | | emory.VkDeviceMemory' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_BUFFER@ | 'Graphics.Vulkan.Core10.M |--- > | | emoryManagement.VkBuffer' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_IMAGE@ | 'Graphics.Vulkan.Core10.M |--- > | | emoryManagement.VkImage' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_EVENT@ | 'Graphics.Vulkan.Core10.E |--- > | | vent.VkEvent' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_QUERY_POOL@ | 'Graphics.Vulkan.Core10.Q |--- > | | uery.VkQueryPool' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_BUFFER_VIEW@ | 'Graphics.Vulkan.Core10.B |--- > | | ufferView.VkBufferView' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_IMAGE_VIEW@ | 'Graphics.Vulkan.Core10.I |--- > | | mageView.VkImageView' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_SHADER_MODULE@ | 'Graphics.Vulkan.Core10.S |--- > | | hader.VkShaderModule' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_PIPELINE_CACHE@ | 'Graphics.Vulkan.Core10.P |--- > | | ipelineCache.VkPipelineCa |--- > | | che' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_PIPELINE_LAYOUT@ | 'Graphics.Vulkan.Core10.P |--- > | | ipeline.VkPipelineLayout' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_RENDER_PASS@ | 'Graphics.Vulkan.Core10.P |--- > | | ipeline.VkRenderPass' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_PIPELINE@ | 'Graphics.Vulkan.Core10.P |--- > | | ipeline.VkPipeline' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT@ | 'Graphics.Vulkan.Core10.P |--- > | | ipelineLayout.VkDescripto |--- > | | rSetLayout' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_SAMPLER@ | 'Graphics.Vulkan.Core10.S |--- > | | ampler.VkSampler' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_DESCRIPTOR_POOL@ | 'Graphics.Vulkan.Core10.D |--- > | | escriptorSet.VkDescriptor |--- > | | Pool' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_DESCRIPTOR_SET@ | 'Graphics.Vulkan.Core10.D |--- > | | escriptorSet.VkDescriptor |--- > | | Set' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_FRAMEBUFFER@ | 'Graphics.Vulkan.Core10.P |--- > | | ass.VkFramebuffer' |--- > +------------------------------------------+---------------------------+--- > | @VK_OBJECT_TYPE_COMMAND_POOL@ | 'Graphics.Vulkan.Core10.C |--- > | | ommandPool.VkCommandPool' |--- > +------------------------------------------+---------------------------+--- >--- > VkObjectType and Vulkan Handle Relationship+-- \' --+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | 'VkObjectType' | Vulkan Handle Type |+-- +===============================================+=====================================================================================================++-- | @VK_OBJECT_TYPE_UNKNOWN@ | Unknown\/Undefined Handle |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_INSTANCE@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_PHYSICAL_DEVICE@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DEVICE@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_QUEUE@ | 'Graphics.Vulkan.Core10.Queue.VkQueue' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_SEMAPHORE@ | 'Graphics.Vulkan.Core10.Queue.VkSemaphore' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_COMMAND_BUFFER@ | 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_FENCE@ | 'Graphics.Vulkan.Core10.Queue.VkFence' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DEVICE_MEMORY@ | 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_BUFFER@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_IMAGE@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkImage' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_EVENT@ | 'Graphics.Vulkan.Core10.Event.VkEvent' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_QUERY_POOL@ | 'Graphics.Vulkan.Core10.Query.VkQueryPool' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_BUFFER_VIEW@ | 'Graphics.Vulkan.Core10.BufferView.VkBufferView' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_IMAGE_VIEW@ | 'Graphics.Vulkan.Core10.ImageView.VkImageView' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_SHADER_MODULE@ | 'Graphics.Vulkan.Core10.Shader.VkShaderModule' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_PIPELINE_CACHE@ | 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_PIPELINE_LAYOUT@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_RENDER_PASS@ | 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_PIPELINE@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipeline' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT@ | 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_SAMPLER@ | 'Graphics.Vulkan.Core10.Sampler.VkSampler' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DESCRIPTOR_POOL@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorPool' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DESCRIPTOR_SET@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_FRAMEBUFFER@ | 'Graphics.Vulkan.Core10.Pass.VkFramebuffer' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_COMMAND_POOL@ | 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_SURFACE_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_SWAPCHAIN_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DISPLAY_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DISPLAY_MODE_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeKHR' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT@ | 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportCallbackEXT' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE@ | 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_OBJECT_TABLE_NVX@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableNVX' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutNVX' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_OBJECT_TYPE_VALIDATION_CACHE_EXT@ | 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.VkValidationCacheEXT' |+-- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------++--+-- VkObjectType and Vulkan Handle Relationship+-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsObjectNameInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsObjectTagInfoEXT'@@ -3566,7 +3584,6 @@ -- | VkFlags - Vulkan bitmasks -- -- = Description--- #_description# -- -- Bitmasks are passed to many commands and structures to compactly -- represent options, but @VkFlags@ is not used directly in the API.@@ -3575,7 +3592,6 @@ -- type, is used. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Pipeline.VkColorComponentFlags' type VkFlags = Word32
src/Graphics/Vulkan/Core10/DescriptorSet.hs view
@@ -122,40 +122,44 @@ -- set -- -- = Description--- #_description# ----- - @VK_DESCRIPTOR_TYPE_SAMPLER@ specifies a--- <{html_spec_relative}#descriptorsets-sampler sampler descriptor>.+-- - @VK_DESCRIPTOR_TYPE_SAMPLER@ specifies a [sampler+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampler). ----- - @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ specifies a--- <{html_spec_relative}#descriptorsets-combinedimagesampler combined image sampler descriptor>.+-- - @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ specifies a [combined+-- image sampler+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler). ----- - @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ specifies a--- <{html_spec_relative}#descriptorsets-sampledimage sampled image descriptor>.+-- - @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ specifies a [sampled image+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage). ----- - @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ specifies a--- <{html_spec_relative}#descriptorsets-storageimage storage image descriptor>.+-- - @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ specifies a [storage image+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage). ----- - @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ specifies a--- <{html_spec_relative}#descriptorsets-uniformtexelbuffer uniform texel buffer descriptor>.+-- - @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ specifies a [uniform texel+-- buffer+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer). ----- - @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ specifies a--- <{html_spec_relative}#descriptorsets-storagetexelbuffer storage texel buffer descriptor>.+-- - @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ specifies a [storage texel+-- buffer+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer). ----- - @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ specifies a--- <{html_spec_relative}#descriptorsets-uniformbuffer uniform buffer descriptor>.+-- - @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ specifies a [uniform buffer+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer). ----- - @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ specifies a--- <{html_spec_relative}#descriptorsets-storagebuffer storage buffer descriptor>.+-- - @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ specifies a [storage buffer+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer). ----- - @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ specifies a--- <{html_spec_relative}#descriptorsets-uniformbufferdynamic dynamic uniform buffer descriptor>.+-- - @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ specifies a [dynamic+-- uniform buffer+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic). ----- - @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ specifies a--- <{html_spec_relative}#descriptorsets-storagebufferdynamic dynamic storage buffer descriptor>.+-- - @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ specifies a [dynamic+-- storage buffer+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic). ----- - @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ specifies a--- <{html_spec_relative}#descriptorsets-inputattachment input attachment descriptor>.+-- - @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ specifies a [input attachment+-- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-inputattachment). -- -- When a descriptor set is updated via elements of 'VkWriteDescriptorSet', -- members of @pImageInfo@, @pBufferInfo@ and @pTexelBufferView@ are only@@ -186,7 +190,6 @@ -- 'VkWriteDescriptorSet'::@pTexelBufferView@ is accessed. -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPoolSize', 'VkDescriptorSetLayoutBinding', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateEntry',@@ -276,16 +279,7 @@ -- | VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set -- layout properties ----- = Description--- #_description#------ __Note__------ All bits for this type are defined by extensions, and none of those--- extensions are enabled in this build of the specification.--- -- = See Also--- #_see_also# -- -- 'VkDescriptorSetLayoutCreateFlags' newtype VkDescriptorSetLayoutCreateFlagBits = VkDescriptorSetLayoutCreateFlagBits VkFlags@@ -316,7 +310,6 @@ -- operations on a descriptor pool -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPoolCreateFlags' newtype VkDescriptorPoolCreateFlagBits = VkDescriptorPoolCreateFlagBits VkFlags@@ -354,13 +347,11 @@ -- | VkDescriptorPoolResetFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkDescriptorPoolResetFlags@ is a bitmask type for setting a mask, but -- is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'vkResetDescriptorPool' newtype VkDescriptorPoolResetFlags = VkDescriptorPoolResetFlags VkFlags@@ -385,11 +376,7 @@ data VkDescriptorSet_T -- | VkDescriptorSet - Opaque handle to a descriptor set object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkCopyDescriptorSet', -- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableDescriptorSetEntryNVX',@@ -403,11 +390,7 @@ data VkDescriptorPool_T -- | VkDescriptorPool - Opaque handle to a descriptor pool object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkDescriptorSetAllocateInfo', 'vkCreateDescriptorPool', -- 'vkDestroyDescriptorPool', 'vkFreeDescriptorSets',@@ -416,7 +399,6 @@ -- | vkCreateDescriptorSetLayout - Create a new descriptor set layout -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the descriptor set -- layout.@@ -426,14 +408,13 @@ -- the descriptor set layout object. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pSetLayout@ points to a @VkDescriptorSetLayout@ handle in which the -- resulting descriptor set layout object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -449,16 +430,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',@@ -468,7 +448,6 @@ -- | vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the descriptor set -- layout.@@ -476,10 +455,9 @@ -- - @descriptorSetLayout@ is the descriptor set layout to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -510,7 +488,6 @@ -- synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',@@ -519,7 +496,6 @@ -- | vkCreateDescriptorPool - Creates a descriptor pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the descriptor pool. --@@ -528,16 +504,18 @@ -- descriptor pool object. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pDescriptorPool@ points to a @VkDescriptorPool@ handle in which the -- resulting descriptor pool object is returned. -- -- = Description--- #_description# ----- @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- @pAllocator@ controls host memory allocation as described in the [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- The created descriptor pool is returned in @pDescriptorPool@. --@@ -556,10 +534,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -567,7 +545,6 @@ -- - @VK_ERROR_FRAGMENTATION_EXT@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDescriptorPool', 'VkDescriptorPoolCreateInfo',@@ -576,17 +553,17 @@ -- | vkDestroyDescriptorPool - Destroy a descriptor pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the descriptor pool. -- -- - @descriptorPool@ is the descriptor pool to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- = Description--- #_description# -- -- When a pool is destroyed, all descriptor sets allocated from the pool -- are implicitly freed and become invalid. Descriptor sets allocated from@@ -623,7 +600,6 @@ -- - Host access to @descriptorPool@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDescriptorPool',@@ -632,7 +608,6 @@ -- | vkResetDescriptorPool - Resets a descriptor pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the descriptor pool. --@@ -641,7 +616,6 @@ -- - @flags@ is reserved for future use. -- -- = Description--- #_description# -- -- Resetting a descriptor pool recycles all of the resources from all of -- the descriptor sets allocated from the descriptor pool back to the@@ -672,16 +646,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPool', 'VkDescriptorPoolResetFlags', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -689,7 +662,6 @@ -- | vkAllocateDescriptorSets - Allocate one or more descriptor sets -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the descriptor pool. --@@ -701,40 +673,47 @@ -- handles in which the resulting descriptor set objects are returned. -- -- = Description--- #_description# -- -- The allocated descriptor sets are returned in @pDescriptorSets@. -- -- When a descriptor set is allocated, the initial state is largely -- uninitialized and all descriptors are undefined. However, the descriptor -- set /can/ be bound in a command buffer without causing errors or--- exceptions. All descriptors that are statically used /must/ have been--- populated before the descriptor set is consumed. Entries that are not--- used by a pipeline /can/ have uninitialized descriptors or descriptors--- of resources that have been destroyed, and executing a draw or dispatch--- with such a descriptor set bound does not cause undefined behavior. This--- means applications need not populate unused entries with dummy--- descriptors.------ If an allocation fails due to fragmentation, an indeterminate error is--- returned with an unspecified error code. Any returned error other than--- @VK_ERROR_FRAGMENTED_POOL@ does not imply its usual meaning:--- applications /should/ assume that the allocation failed due to--- fragmentation, and create a new descriptor pool.------ __Note__+-- exceptions. For descriptor set bindings created with the+-- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ bit set, all descriptors+-- in that binding that are dynamically used /must/ have been populated+-- before the descriptor set is+-- [consumed](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-binding).+-- For descriptor set bindings created without the+-- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ bit set, all descriptors+-- in that binding that are statically used /must/ have been populated+-- before the descriptor set is+-- [consumed](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-binding).+-- Entries that are not used by a pipeline /can/ have uninitialized+-- descriptors or descriptors of resources that have been destroyed, and+-- executing a draw or dispatch with such a descriptor set bound does not+-- cause undefined behavior. This means applications need not populate+-- unused entries with dummy descriptors. ----- Applications /should/ check for a negative return value when allocating--- new descriptor sets, assume that any error effectively means--- @VK_ERROR_FRAGMENTED_POOL@, and try to create a new descriptor pool. If--- @VK_ERROR_FRAGMENTED_POOL@ is the actual return value, it adds certainty--- to that decision.+-- If a call to @vkAllocateDescriptorSets@ would cause the total number of+-- descriptor sets allocated from the pool to exceed the value of+-- 'VkDescriptorPoolCreateInfo'::@maxSets@ used to create+-- @pAllocateInfo@→@descriptorPool@, then the allocation /may/ fail due to+-- lack of space in the descriptor pool. Similarly, the allocation /may/+-- fail due to lack of space if the call to @vkAllocateDescriptorSets@+-- would cause the number of any given descriptor type to exceed the sum of+-- all the @descriptorCount@ members of each element of+-- 'VkDescriptorPoolCreateInfo'::@pPoolSizes@ with a @member@ equal to that+-- type. If the allocation fails due to no more space in the descriptor+-- pool, and not because of system or device memory exhaustion, then+-- @VK_ERROR_OUT_OF_POOL_MEMORY@ /must/ be returned. ----- The reason for this is that @VK_ERROR_FRAGMENTED_POOL@ was only added in--- a later revision of the 1.0 specification, and so drivers /may/ return--- other errors if they were written against earlier revisions. To ensure--- full compatibility with earlier patch revisions, these other errors are--- allowed.+-- @vkAllocateDescriptorSets@ /can/ be used to create multiple descriptor+-- sets. If the creation of any of those descriptor sets fails, then the+-- implementation /must/ destroy all successfully created descriptor set+-- objects from this command, set all entries of the @pDescriptorSets@+-- array to 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' and return+-- the error. -- -- == Valid Usage (Implicit) --@@ -753,10 +732,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -766,7 +745,6 @@ -- - @VK_ERROR_OUT_OF_POOL_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorSet', 'VkDescriptorSetAllocateInfo', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -774,7 +752,6 @@ -- | vkFreeDescriptorSets - Free one or more descriptor sets -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the descriptor pool. --@@ -788,7 +765,6 @@ -- objects. -- -- = Description--- #_description# -- -- After a successful call to @vkFreeDescriptorSets@, all descriptor sets -- in @pDescriptorSets@ are invalid.@@ -832,16 +808,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPool', 'VkDescriptorSet', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -849,7 +824,6 @@ -- | vkUpdateDescriptorSets - Update the contents of a descriptor set object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that updates the descriptor sets. --@@ -868,7 +842,6 @@ -- copy between. -- -- = Description--- #_description# -- -- The operations described by @pDescriptorWrites@ are performed first, -- followed by the operations described by @pDescriptorCopies@. Within each@@ -884,17 +857,23 @@ -- -- If the @dstSet@ member of any element of @pDescriptorWrites@ or -- @pDescriptorCopies@ is bound, accessed, or modified by any command that--- was recorded to a command buffer which is currently in the--- <{html_spec_relative}#commandbuffers-lifecycle recording or executable state>,+-- was recorded to a command buffer which is currently in the [recording or+-- executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- and any of the descriptor bindings that are updated were not created+-- with the @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ or+-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ bits set, -- that command buffer becomes--- <{html_spec_relative}#commandbuffers-lifecycle invalid>.+-- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage ----- - The @dstSet@ member of each element of @pDescriptorWrites@ or--- @pDescriptorCopies@ /must/ not be used by any command that was--- recorded to a command buffer which is in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>.+-- - Descriptor bindings updated by this command which were created+-- without the @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ or+-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ bits set+-- /must/ not be used by any command that was recorded to a command+-- buffer which is in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- == Valid Usage (Implicit) --@@ -917,7 +896,6 @@ -- synchronized -- -- = See Also--- #_see_also# -- -- 'VkCopyDescriptorSet', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -926,15 +904,14 @@ -- | VkDescriptorBufferInfo - Structure specifying descriptor buffer info -- -- = Description--- #_description# -- -- __Note__ -- -- When setting @range@ to @VK_WHOLE_SIZE@, the effective range /must/ not -- be larger than the maximum range for the descriptor type--- (<{html_spec_relative}#features-limits-maxUniformBufferRange maxUniformBufferRange>+-- ([maxUniformBufferRange](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxUniformBufferRange) -- or--- <{html_spec_relative}#features-limits-maxStorageBufferRange maxStorageBufferRange>).+-- [maxStorageBufferRange](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxStorageBufferRange)). -- This means that @VK_WHOLE_SIZE@ is not typically useful in the common -- case where uniform buffer descriptors are suballocated from a buffer -- that is much larger than @maxUniformBufferRange@.@@ -959,16 +936,18 @@ -- - @buffer@ /must/ be a valid @VkBuffer@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', @VkDeviceSize@, -- 'VkWriteDescriptorSet' data VkDescriptorBufferInfo = VkDescriptorBufferInfo- { -- No documentation found for Nested "VkDescriptorBufferInfo" "vkBuffer"+ { -- | @buffer@ is the buffer resource. vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkDescriptorBufferInfo" "vkOffset"+ , -- | @offset@ is the offset in bytes from the start of @buffer@. Access to+ -- buffer memory via this descriptor uses addressing that is relative to+ -- this starting offset. vkOffset :: VkDeviceSize- , -- No documentation found for Nested "VkDescriptorBufferInfo" "vkRange"+ , -- | @range@ is the size in bytes that is used for this descriptor update, or+ -- @VK_WHOLE_SIZE@ to use the range from @offset@ to the end of the buffer. vkRange :: VkDeviceSize } deriving (Eq, Show)@@ -985,34 +964,85 @@ -- | VkDescriptorImageInfo - Structure specifying descriptor image info -- -- = Description--- #_description# -- -- Members of @VkDescriptorImageInfo@ that are not used in an update (as -- described above) are ignored. -- -- == Valid Usage --+-- - @imageView@ /must/ not be 2D or 2D array image view created from a+-- 3D image+-- -- - @imageLayout@ /must/ match the actual -- 'Graphics.Vulkan.Core10.Image.VkImageLayout' of each subresource -- accessible from @imageView@ at the time this descriptor is accessed --+-- - If @sampler@ is used and enables [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion):+--+-- - The @format@ of the @imageView@ /must/ be the same as the+-- 'Graphics.Vulkan.Core10.Core.VkFormat' of the image+--+-- - The @aspectMask@ of the @imageView@ /must/ be+-- @VK_IMAGE_ASPECT_COLOR_BIT@+--+-- - The @components.a@ of the @imageView@ /must/ be+-- @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - The @components.r@ of the @imageView@ /must/ be+-- @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - The @components.g@ of the @imageView@ /must/ be+-- @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - The @components.b@ of the @imageView@ /must/ be+-- @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - The @pNext@ chain of the @imageView@ /must/ contain a+-- @VkSamplerYcbcrConversionInfo@ which has a @conversion@ which is+-- an /identically defined object/ to the @conversion@ of the+-- @VkSamplerYcbcrConversionInfo@ which is in the @pNext@ chain of+-- the @sampler@+--+-- - If @sampler@ is used and does not enable [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- and the 'Graphics.Vulkan.Core10.Core.VkFormat' of the image is a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- the image /must/ have been created with+-- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@, and the @aspectMask@ of the+-- @imageView@ /must/ be @VK_IMAGE_ASPECT_PLANE_0_BIT@,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ or (for three-plane formats only)+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@+-- -- == Valid Usage (Implicit) -- -- - Both of @imageView@, and @sampler@ that are valid handles /must/ -- have been created, allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Image.VkImageLayout', -- 'Graphics.Vulkan.Core10.ImageView.VkImageView', -- 'Graphics.Vulkan.Core10.Sampler.VkSampler', 'VkWriteDescriptorSet' data VkDescriptorImageInfo = VkDescriptorImageInfo- { -- No documentation found for Nested "VkDescriptorImageInfo" "vkSampler"+ { -- | @sampler@ is a sampler handle, and is used in descriptor updates for+ -- types @VK_DESCRIPTOR_TYPE_SAMPLER@ and+ -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ if the binding being updated+ -- does not use immutable samplers. vkSampler :: VkSampler- , -- No documentation found for Nested "VkDescriptorImageInfo" "vkImageView"+ , -- | @imageView@ is an image view handle, and is used in descriptor updates+ -- for types @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@,+ -- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,+ -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and+ -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@. vkImageView :: VkImageView- , -- No documentation found for Nested "VkDescriptorImageInfo" "vkImageLayout"+ , -- | @imageLayout@ is the layout that the image subresources accessible from+ -- @imageView@ will be in at the time this descriptor is accessed.+ -- @imageLayout@ is used in descriptor updates for types+ -- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,+ -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and+ -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@. vkImageLayout :: VkImageLayout } deriving (Eq, Show)@@ -1030,7 +1060,6 @@ -- descriptor set write operation -- -- = Description--- #_description# -- -- Only one of @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ members -- is used according to the descriptor type specified in the@@ -1071,7 +1100,7 @@ -- than or equal to the number of array elements in the descriptor set -- binding specified by @dstBinding@, and all applicable consecutive -- bindings, as described by--- <{html_spec_relative}#descriptorsets-updates-consecutive {html_spec_relative}#descriptorsets-updates-consecutive>+-- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive) -- -- - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_SAMPLER@, -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,@@ -1187,6 +1216,11 @@ -- @imageView@ member of each element of @pImageInfo@ /must/ have been -- created with @VK_IMAGE_USAGE_STORAGE_BIT@ set --+-- - All consecutive bindings updated via a single @VkWriteDescriptorSet@+-- structure, except those with a @descriptorCount@ of zero, /must/+-- have identical+-- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorBindingFlagBitsEXT'.+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET@@@ -1202,7 +1236,6 @@ -- the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.BufferView.VkBufferView', -- 'VkDescriptorBufferInfo', 'VkDescriptorImageInfo', 'VkDescriptorSet',@@ -1210,25 +1243,36 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR', -- 'vkUpdateDescriptorSets' data VkWriteDescriptorSet = VkWriteDescriptorSet- { -- No documentation found for Nested "VkWriteDescriptorSet" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkDstSet"+ , -- | @dstSet@ is the destination descriptor set to update. vkDstSet :: VkDescriptorSet- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkDstBinding"+ , -- | @dstBinding@ is the descriptor binding within that set. vkDstBinding :: Word32- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkDstArrayElement"+ , -- | @dstArrayElement@ is the starting element in that array. vkDstArrayElement :: Word32- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkDescriptorCount"+ , -- | @descriptorCount@ is the number of descriptors to update (the number of+ -- elements in @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@). vkDescriptorCount :: Word32- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkDescriptorType"+ , -- | @descriptorType@ is a 'VkDescriptorType' specifying the type of each+ -- descriptor in @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@, as+ -- described below. It /must/ be the same type as that specified in+ -- @VkDescriptorSetLayoutBinding@ for @dstSet@ at @dstBinding@. The type of+ -- the descriptor also controls which array the descriptors are taken from. vkDescriptorType :: VkDescriptorType- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkPImageInfo"+ , -- | @pImageInfo@ points to an array of 'VkDescriptorImageInfo' structures or+ -- is ignored, as described below. vkPImageInfo :: Ptr VkDescriptorImageInfo- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkPBufferInfo"+ , -- | @pBufferInfo@ points to an array of 'VkDescriptorBufferInfo' structures+ -- or is ignored, as described below. vkPBufferInfo :: Ptr VkDescriptorBufferInfo- , -- No documentation found for Nested "VkWriteDescriptorSet" "vkPTexelBufferView"+ , -- | @pTexelBufferView@ points to an array of+ -- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' handles as described in+ -- the [Buffer+ -- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-buffer-views)+ -- section or is ignored, as described below. vkPTexelBufferView :: Ptr VkBufferView } deriving (Eq, Show)@@ -1259,9 +1303,6 @@ -- | VkCopyDescriptorSet - Structure specifying a copy descriptor set -- operation ----- = Description--- #_description#--- -- == Valid Usage -- -- - @srcBinding@ /must/ be a valid binding within @srcSet@@@ -1270,7 +1311,7 @@ -- than or equal to the number of array elements in the descriptor set -- binding specified by @srcBinding@, and all applicable consecutive -- bindings, as described by--- <{html_spec_relative}#descriptorsets-updates-consecutive {html_spec_relative}#descriptorsets-updates-consecutive>+-- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive) -- -- - @dstBinding@ /must/ be a valid binding within @dstSet@ --@@ -1278,13 +1319,38 @@ -- than or equal to the number of array elements in the descriptor set -- binding specified by @dstBinding@, and all applicable consecutive -- bindings, as described by--- <{html_spec_relative}#descriptorsets-updates-consecutive {html_spec_relative}#descriptorsets-updates-consecutive>+-- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive) -- -- - If @srcSet@ is equal to @dstSet@, then the source and destination -- ranges of descriptors /must/ not overlap, where the ranges /may/ -- include array elements from consecutive bindings as described by--- <{html_spec_relative}#descriptorsets-updates-consecutive {html_spec_relative}#descriptorsets-updates-consecutive>+-- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive) --+-- - If @srcSet@’s layout was created with the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- flag set, then @dstSet@’s layout /must/ also have been created with+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- flag set+--+-- - If @srcSet@’s layout was created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- flag set, then @dstSet@’s layout /must/ also have been created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- flag set+--+-- - If the descriptor pool from which @srcSet@ was allocated was created+-- with the @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag+-- set, then the descriptor pool from which @dstSet@ was allocated+-- /must/ also have been created with the+-- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag set+--+-- - If the descriptor pool from which @srcSet@ was allocated was created+-- without the @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@+-- flag set, then the descriptor pool from which @dstSet@ was allocated+-- /must/ also have been created without the+-- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag set+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET@@@ -1299,28 +1365,33 @@ -- or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorSet', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkUpdateDescriptorSets' data VkCopyDescriptorSet = VkCopyDescriptorSet- { -- No documentation found for Nested "VkCopyDescriptorSet" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkSrcSet"+ , -- | @srcSet@, @srcBinding@, and @srcArrayElement@ are the source set,+ -- binding, and array element, respectively. vkSrcSet :: VkDescriptorSet- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkSrcBinding"+ , -- No documentation found for Nested "VkCopyDescriptorSet" "srcBinding" vkSrcBinding :: Word32- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkSrcArrayElement"+ , -- No documentation found for Nested "VkCopyDescriptorSet" "srcArrayElement" vkSrcArrayElement :: Word32- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkDstSet"+ , -- | @dstSet@, @dstBinding@, and @dstArrayElement@ are the destination set,+ -- binding, and array element, respectively. vkDstSet :: VkDescriptorSet- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkDstBinding"+ , -- No documentation found for Nested "VkCopyDescriptorSet" "dstBinding" vkDstBinding :: Word32- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkDstArrayElement"+ , -- No documentation found for Nested "VkCopyDescriptorSet" "dstArrayElement" vkDstArrayElement :: Word32- , -- No documentation found for Nested "VkCopyDescriptorSet" "vkDescriptorCount"+ , -- | @descriptorCount@ is the number of descriptors to copy from the source+ -- to destination. If @descriptorCount@ is greater than the number of+ -- remaining array elements in the source or destination binding, those+ -- affect consecutive bindings in a manner similar to+ -- 'VkWriteDescriptorSet' above. vkDescriptorCount :: Word32 } deriving (Eq, Show)@@ -1350,7 +1421,6 @@ -- layout binding -- -- = Members--- #_members# -- -- - @binding@ is the binding number of this entry and corresponds to a -- resource of the same binding number in the shader stages.@@ -1380,7 +1450,6 @@ -- compute stage. -- -- = Description--- #_description# -- -- - @pImmutableSamplers@ affects initialization of samplers. If -- @descriptorType@ specifies a @VK_DESCRIPTOR_TYPE_SAMPLER@ or@@ -1433,21 +1502,20 @@ -- - @descriptorType@ /must/ be a valid 'VkDescriptorType' value -- -- = See Also--- #_see_also# -- -- 'VkDescriptorSetLayoutCreateInfo', 'VkDescriptorType', -- 'Graphics.Vulkan.Core10.Sampler.VkSampler', -- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags' data VkDescriptorSetLayoutBinding = VkDescriptorSetLayoutBinding- { -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "vkBinding"+ { -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "binding" vkBinding :: Word32- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "vkDescriptorType"+ , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "descriptorType" vkDescriptorType :: VkDescriptorType- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "vkDescriptorCount"+ , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "descriptorCount" vkDescriptorCount :: Word32- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "vkStageFlags"+ , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "stageFlags" vkStageFlags :: VkShaderStageFlags- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "vkPImmutableSamplers"+ , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "pImmutableSamplers" vkPImmutableSamplers :: Ptr VkSampler } deriving (Eq, Show)@@ -1468,14 +1536,34 @@ -- | VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a -- newly created descriptor set layout ----- = Description--- #_description#--- -- == Valid Usage -- -- - The 'VkDescriptorSetLayoutBinding'::@binding@ members of the -- elements of the @pBindings@ array /must/ each have different values. --+-- - If @flags@ contains+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@, then all+-- elements of @pBindings@ /must/ not have a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@+--+-- - If @flags@ contains+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@, then the+-- total number of elements of all bindings /must/ be less than or+-- equal to+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.VkPhysicalDevicePushDescriptorPropertiesKHR'::@maxPushDescriptors@+--+-- - If any binding has the+-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set, @flags@+-- /must/ include+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+--+-- - If any binding has the+-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set, then all+-- bindings /must/ not have @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -1492,7 +1580,6 @@ -- structures -- -- = See Also--- #_see_also# -- -- 'VkDescriptorSetLayoutBinding', 'VkDescriptorSetLayoutCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType',@@ -1500,15 +1587,17 @@ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupport', -- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR' data VkDescriptorSetLayoutCreateInfo = VkDescriptorSetLayoutCreateInfo- { -- No documentation found for Nested "VkDescriptorSetLayoutCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorSetLayoutCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorSetLayoutCreateInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkDescriptorSetLayoutCreateFlagBits' specifying+ -- options for descriptor set layout creation. vkFlags :: VkDescriptorSetLayoutCreateFlags- , -- No documentation found for Nested "VkDescriptorSetLayoutCreateInfo" "vkBindingCount"+ , -- | @bindingCount@ is the number of elements in @pBindings@. vkBindingCount :: Word32- , -- No documentation found for Nested "VkDescriptorSetLayoutCreateInfo" "vkPBindings"+ , -- | @pBindings@ is a pointer to an array of 'VkDescriptorSetLayoutBinding'+ -- structures. vkPBindings :: Ptr VkDescriptorSetLayoutBinding } deriving (Eq, Show)@@ -1528,9 +1617,6 @@ *> poke (ptr `plusPtr` 24) (vkPBindings (poked :: VkDescriptorSetLayoutCreateInfo)) -- | VkDescriptorPoolSize - Structure specifying descriptor pool size ----- = Description--- #_description#--- -- == Valid Usage -- -- - @descriptorCount@ /must/ be greater than @0@@@ -1540,13 +1626,12 @@ -- - @type@ /must/ be a valid 'VkDescriptorType' value -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPoolCreateInfo', 'VkDescriptorType' data VkDescriptorPoolSize = VkDescriptorPoolSize- { -- No documentation found for Nested "VkDescriptorPoolSize" "vkType"+ { -- | @type@ is the type of descriptor. vkType :: VkDescriptorType- , -- No documentation found for Nested "VkDescriptorPoolSize" "vkDescriptorCount"+ , -- | @descriptorCount@ is the number of descriptors of that type to allocate. vkDescriptorCount :: Word32 } deriving (Eq, Show)@@ -1562,7 +1647,6 @@ -- created descriptor pool -- -- = Description--- #_description# -- -- If multiple @VkDescriptorPoolSize@ structures appear in the @pPoolSizes@ -- array then the pool will be created with enough storage for the total@@ -1591,6 +1675,13 @@ -- /can/ create an additional descriptor pool to perform further descriptor -- set allocations. --+-- If @flags@ has the @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@+-- bit set, descriptor pool creation /may/ fail with the error+-- @VK_ERROR_FRAGMENTATION_EXT@ if the total number of descriptors across+-- all pools (including this one) created with this bit set exceeds+-- @maxUpdateAfterBindDescriptorsInAllPools@, or if fragmentation of the+-- underlying hardware resources occurs.+-- -- == Valid Usage -- -- - @maxSets@ /must/ be greater than @0@@@ -1610,22 +1701,25 @@ -- - @poolSizeCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPoolCreateFlags', 'VkDescriptorPoolSize', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateDescriptorPool' data VkDescriptorPoolCreateInfo = VkDescriptorPoolCreateInfo- { -- No documentation found for Nested "VkDescriptorPoolCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorPoolCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorPoolCreateInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkDescriptorPoolCreateFlagBits' specifying+ -- certain supported operations on the pool. vkFlags :: VkDescriptorPoolCreateFlags- , -- No documentation found for Nested "VkDescriptorPoolCreateInfo" "vkMaxSets"+ , -- | @maxSets@ is the maximum number of descriptor sets that /can/ be+ -- allocated from the pool. vkMaxSets :: Word32- , -- No documentation found for Nested "VkDescriptorPoolCreateInfo" "vkPoolSizeCount"+ , -- | @poolSizeCount@ is the number of elements in @pPoolSizes@. vkPoolSizeCount :: Word32- , -- No documentation found for Nested "VkDescriptorPoolCreateInfo" "vkPPoolSizes"+ , -- | @pPoolSizes@ is a pointer to an array of @VkDescriptorPoolSize@+ -- structures, each containing a descriptor type and number of descriptors+ -- of that type to be allocated in the pool. vkPPoolSizes :: Ptr VkDescriptorPoolSize } deriving (Eq, Show)@@ -1648,16 +1742,15 @@ -- | VkDescriptorSetAllocateInfo - Structure specifying the allocation -- parameters for descriptor sets ----- = Description--- #_description#--- -- == Valid Usage ----- - @descriptorSetCount@ /must/ not be greater than the number of sets--- that are currently available for allocation in @descriptorPool@+-- - Each element of @pSetLayouts@ /must/ not have been created with+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ set ----- - @descriptorPool@ /must/ have enough free descriptor capacity--- remaining to allocate the descriptor sets of the specified layouts+-- - If any element of @pSetLayouts@ was created with the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set, @descriptorPool@ /must/ have been created with the+-- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag set -- -- == Valid Usage (Implicit) --@@ -1677,22 +1770,23 @@ -- have been created, allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPool', -- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkAllocateDescriptorSets' data VkDescriptorSetAllocateInfo = VkDescriptorSetAllocateInfo- { -- No documentation found for Nested "VkDescriptorSetAllocateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorSetAllocateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorSetAllocateInfo" "vkDescriptorPool"+ , -- | @descriptorPool@ is the pool which the sets will be allocated from. vkDescriptorPool :: VkDescriptorPool- , -- No documentation found for Nested "VkDescriptorSetAllocateInfo" "vkDescriptorSetCount"+ , -- | @descriptorSetCount@ determines the number of descriptor sets to be+ -- allocated from the pool. vkDescriptorSetCount :: Word32- , -- No documentation found for Nested "VkDescriptorSetAllocateInfo" "vkPSetLayouts"+ , -- | @pSetLayouts@ is an array of descriptor set layouts, with each member+ -- specifying how the corresponding descriptor set is allocated. vkPSetLayouts :: Ptr VkDescriptorSetLayout } deriving (Eq, Show)@@ -1714,26 +1808,22 @@ -- VkDescriptorSetLayoutCreateFlagBits -- -- = Description--- #_description# -- -- @VkDescriptorSetLayoutCreateFlags@ is a bitmask type for setting a mask -- of zero or more 'VkDescriptorSetLayoutCreateFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkDescriptorSetLayoutCreateFlagBits', 'VkDescriptorSetLayoutCreateInfo' type VkDescriptorSetLayoutCreateFlags = VkDescriptorSetLayoutCreateFlagBits -- | VkDescriptorPoolCreateFlags - Bitmask of VkDescriptorPoolCreateFlagBits -- -- = Description--- #_description# -- -- @VkDescriptorPoolCreateFlags@ is a bitmask type for setting a mask of -- zero or more 'VkDescriptorPoolCreateFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkDescriptorPoolCreateFlagBits', 'VkDescriptorPoolCreateInfo' type VkDescriptorPoolCreateFlags = VkDescriptorPoolCreateFlagBits
src/Graphics/Vulkan/Core10/Device.hs view
@@ -74,13 +74,11 @@ -- | VkDeviceCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkDeviceCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkDeviceCreateInfo' newtype VkDeviceCreateFlags = VkDeviceCreateFlags VkFlags@@ -106,7 +104,6 @@ -- | VkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queue -- -- = See Also--- #_see_also# -- -- 'VkDeviceQueueCreateFlags' newtype VkDeviceQueueCreateFlagBits = VkDeviceQueueCreateFlagBits VkFlags@@ -132,23 +129,23 @@ -- | vkCreateDevice - Create a new device instance -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ /must/ be one of the device handles returned from a--- call to @vkEnumeratePhysicalDevices@ (see--- <{html_spec_relative}#devsandqueues-physical-device-enumeration Physical Device Enumeration>).+-- call to @vkEnumeratePhysicalDevices@ (see [Physical Device+-- Enumeration](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-physical-device-enumeration)). -- -- - @pCreateInfo@ is a pointer to a 'VkDeviceCreateInfo' structure -- containing information about how to create the device. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pDevice@ points to a handle in which the created @VkDevice@ is -- returned. -- -- = Description--- #_description# -- -- @vkCreateDevice@ verifies that extensions and features requested in the -- @ppEnabledExtensionNames@ and @pEnabledFeatures@ members of@@ -174,8 +171,8 @@ -- -- == Valid Usage ----- - All--- <{html_spec_relative}#extended-functionality-extensions-dependencies required extensions>+-- - All [required+-- extensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-extensions-dependencies) -- for each extension in the -- 'VkDeviceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be -- present in that list.@@ -194,10 +191,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -213,7 +210,6 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -223,15 +219,15 @@ -- | vkDestroyDevice - Destroy a logical device -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- = Description--- #_description# -- -- To ensure that no work is active on the device, -- 'Graphics.Vulkan.Core10.Queue.vkDeviceWaitIdle' /can/ be used to gate@@ -271,7 +267,6 @@ -- - Host access to @device@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -279,9 +274,6 @@ -- | VkDeviceQueueCreateInfo - Structure specifying parameters of a newly -- created device queue ----- = Description--- #_description#--- -- == Valid Usage -- -- - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@@@ -311,22 +303,29 @@ -- - @queueCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkDeviceCreateInfo', 'VkDeviceQueueCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceQueueCreateInfo = VkDeviceQueueCreateInfo- { -- No documentation found for Nested "VkDeviceQueueCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceQueueCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceQueueCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkDeviceQueueCreateFlags- , -- No documentation found for Nested "VkDeviceQueueCreateInfo" "vkQueueFamilyIndex"+ , -- | @queueFamilyIndex@ is an unsigned integer indicating the index of the+ -- queue family to create on this device. This index corresponds to the+ -- index of an element of the @pQueueFamilyProperties@ array that was+ -- returned by @vkGetPhysicalDeviceQueueFamilyProperties@. vkQueueFamilyIndex :: Word32- , -- No documentation found for Nested "VkDeviceQueueCreateInfo" "vkQueueCount"+ , -- | @queueCount@ is an unsigned integer specifying the number of queues to+ -- create in the queue family indicated by @queueFamilyIndex@. vkQueueCount :: Word32- , -- No documentation found for Nested "VkDeviceQueueCreateInfo" "vkPQueuePriorities"+ , -- | @pQueuePriorities@ is an array of @queueCount@ normalized floating point+ -- values, specifying priorities of work that will be submitted to each+ -- created queue. See [Queue+ -- Priority](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-priority)+ -- for more information. vkPQueuePriorities :: Ptr CFloat } deriving (Eq, Show)@@ -349,14 +348,19 @@ -- | VkDeviceCreateInfo - Structure specifying parameters of a newly created -- device ----- = Description--- #_description#--- -- == Valid Usage -- -- - The @queueFamilyIndex@ member of each element of @pQueueCreateInfos@ -- /must/ be unique within @pQueueCreateInfos@ --+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2'+-- structure, then @pEnabledFeatures@ /must/ be @NULL@+--+-- - @ppEnabledExtensionNames@ /must/ not contain both+-- @{html_spec_relative}#VK_KHR_maintenance1@ and+-- @{html_spec_relative}#VK_AMD_negative_viewport_height@+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO@@@ -395,31 +399,48 @@ -- - @queueCreateInfoCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkDeviceCreateFlags', 'VkDeviceQueueCreateInfo', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateDevice' data VkDeviceCreateInfo = VkDeviceCreateInfo- { -- No documentation found for Nested "VkDeviceCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkDeviceCreateFlags- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkQueueCreateInfoCount"+ , -- | @queueCreateInfoCount@ is the unsigned integer size of the+ -- @pQueueCreateInfos@ array. Refer to the [Queue+ -- Creation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queue-creation)+ -- section below for further details. vkQueueCreateInfoCount :: Word32- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkPQueueCreateInfos"+ , -- | @pQueueCreateInfos@ is a pointer to an array of+ -- 'VkDeviceQueueCreateInfo' structures describing the queues that are+ -- requested to be created along with the logical device. Refer to the+ -- [Queue+ -- Creation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queue-creation)+ -- section below for further details. vkPQueueCreateInfos :: Ptr VkDeviceQueueCreateInfo- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkEnabledLayerCount"+ , -- | @enabledLayerCount@ is deprecated and ignored. vkEnabledLayerCount :: Word32- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkPPEnabledLayerNames"+ , -- | @ppEnabledLayerNames@ is deprecated and ignored. See [Device Layer+ -- Deprecation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-device-layer-deprecation). vkPPEnabledLayerNames :: Ptr (Ptr CChar)- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkEnabledExtensionCount"+ , -- | @enabledExtensionCount@ is the number of device extensions to enable. vkEnabledExtensionCount :: Word32- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkPPEnabledExtensionNames"+ , -- | @ppEnabledExtensionNames@ is a pointer to an array of+ -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the+ -- names of extensions to enable for the created device. See the+ -- [Extensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-extensions)+ -- section for further details. vkPPEnabledExtensionNames :: Ptr (Ptr CChar)- , -- No documentation found for Nested "VkDeviceCreateInfo" "vkPEnabledFeatures"+ , -- | @pEnabledFeatures@ is @NULL@ or a pointer to a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures'+ -- structure that contains boolean indicators of all the features to be+ -- enabled. Refer to the+ -- [Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features)+ -- section for further details. vkPEnabledFeatures :: Ptr VkPhysicalDeviceFeatures } deriving (Eq, Show)@@ -450,13 +471,11 @@ -- | VkDeviceQueueCreateFlags - Bitmask of VkDeviceQueueCreateFlagBits -- -- = Description--- #_description# -- -- @VkDeviceQueueCreateFlags@ is a bitmask type for setting a mask of zero -- or more 'VkDeviceQueueCreateFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkDeviceQueueCreateFlagBits', 'VkDeviceQueueCreateInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkDeviceQueueInfo2'
src/Graphics/Vulkan/Core10/DeviceInitialization.hs view
@@ -194,5059 +194,5218 @@ -- | VkImageTiling - Specifies the tiling arrangement of data in an image -- -- = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkImageTiling = VkImageTiling Int32- deriving (Eq, Ord, Storable)--instance Show VkImageTiling where- showsPrec _ VK_IMAGE_TILING_OPTIMAL = showString "VK_IMAGE_TILING_OPTIMAL"- showsPrec _ VK_IMAGE_TILING_LINEAR = showString "VK_IMAGE_TILING_LINEAR"- showsPrec p (VkImageTiling x) = showParen (p >= 11) (showString "VkImageTiling " . showsPrec 11 x)--instance Read VkImageTiling where- readPrec = parens ( choose [ ("VK_IMAGE_TILING_OPTIMAL", pure VK_IMAGE_TILING_OPTIMAL)- , ("VK_IMAGE_TILING_LINEAR", pure VK_IMAGE_TILING_LINEAR)- ] +++- prec 10 (do- expectP (Ident "VkImageTiling")- v <- step readPrec- pure (VkImageTiling v)- )- )---- | @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_OPTIMAL :: VkImageTiling-pattern VK_IMAGE_TILING_OPTIMAL = VkImageTiling 0---- | @VK_IMAGE_TILING_LINEAR@ specifies linear tiling (texels are laid out in--- memory in row-major order, possibly with some padding on each row).-pattern VK_IMAGE_TILING_LINEAR :: VkImageTiling-pattern VK_IMAGE_TILING_LINEAR = VkImageTiling 1--- ** VkImageType---- | VkImageType - Specifies the type of an image object------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkImageType = VkImageType Int32- deriving (Eq, Ord, Storable)--instance Show VkImageType where- showsPrec _ VK_IMAGE_TYPE_1D = showString "VK_IMAGE_TYPE_1D"- showsPrec _ VK_IMAGE_TYPE_2D = showString "VK_IMAGE_TYPE_2D"- showsPrec _ VK_IMAGE_TYPE_3D = showString "VK_IMAGE_TYPE_3D"- showsPrec p (VkImageType x) = showParen (p >= 11) (showString "VkImageType " . showsPrec 11 x)--instance Read VkImageType where- readPrec = parens ( choose [ ("VK_IMAGE_TYPE_1D", pure VK_IMAGE_TYPE_1D)- , ("VK_IMAGE_TYPE_2D", pure VK_IMAGE_TYPE_2D)- , ("VK_IMAGE_TYPE_3D", pure VK_IMAGE_TYPE_3D)- ] +++- prec 10 (do- expectP (Ident "VkImageType")- v <- step readPrec- pure (VkImageType v)- )- )---- | @VK_IMAGE_TYPE_1D@ specifies a one-dimensional image.-pattern VK_IMAGE_TYPE_1D :: VkImageType-pattern VK_IMAGE_TYPE_1D = VkImageType 0---- | @VK_IMAGE_TYPE_2D@ specifies a two-dimensional image.-pattern VK_IMAGE_TYPE_2D :: VkImageType-pattern VK_IMAGE_TYPE_2D = VkImageType 1---- | @VK_IMAGE_TYPE_3D@ specifies a three-dimensional image.-pattern VK_IMAGE_TYPE_3D :: VkImageType-pattern VK_IMAGE_TYPE_3D = VkImageType 2--- ** VkPhysicalDeviceType---- | VkPhysicalDeviceType - Supported physical device types------ = Description--- #_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--- #_see_also#------ 'VkPhysicalDeviceProperties'-newtype VkPhysicalDeviceType = VkPhysicalDeviceType Int32- deriving (Eq, Ord, Storable)--instance Show VkPhysicalDeviceType where- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_OTHER = showString "VK_PHYSICAL_DEVICE_TYPE_OTHER"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_CPU = showString "VK_PHYSICAL_DEVICE_TYPE_CPU"- showsPrec p (VkPhysicalDeviceType x) = showParen (p >= 11) (showString "VkPhysicalDeviceType " . showsPrec 11 x)--instance Read VkPhysicalDeviceType where- readPrec = parens ( choose [ ("VK_PHYSICAL_DEVICE_TYPE_OTHER", pure VK_PHYSICAL_DEVICE_TYPE_OTHER)- , ("VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", pure VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)- , ("VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", pure VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)- , ("VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU", pure VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)- , ("VK_PHYSICAL_DEVICE_TYPE_CPU", pure VK_PHYSICAL_DEVICE_TYPE_CPU)- ] +++- prec 10 (do- expectP (Ident "VkPhysicalDeviceType")- v <- step readPrec- pure (VkPhysicalDeviceType v)- )- )---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_OTHER"-pattern VK_PHYSICAL_DEVICE_TYPE_OTHER :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_OTHER = VkPhysicalDeviceType 0---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"-pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = VkPhysicalDeviceType 1---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"-pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = VkPhysicalDeviceType 2---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"-pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = VkPhysicalDeviceType 3---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_CPU"-pattern VK_PHYSICAL_DEVICE_TYPE_CPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_CPU = VkPhysicalDeviceType 4--- ** VkSystemAllocationScope---- | VkSystemAllocationScope - Allocation scope------ = Description--- #_description#------ - @VK_SYSTEM_ALLOCATION_SCOPE_COMMAND@ specifies that the allocation--- is scoped to the duration of the Vulkan command.------ - @VK_SYSTEM_ALLOCATION_SCOPE_OBJECT@ specifies that the allocation is--- scoped to the lifetime of the Vulkan object that is being created or--- used.------ - @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@ specifies that the allocation is--- scoped to the lifetime of a @VkPipelineCache@ object.------ - @VK_SYSTEM_ALLOCATION_SCOPE_DEVICE@ specifies that the allocation is--- scoped to the lifetime of the Vulkan device.------ - @VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE@ specifies 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_COMMAND@--- allocation 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 parent @VkDevice@ has--- an allocator it will be used, else if the parent @VkInstance@ has an--- allocator it will be used. Else,------ - If an allocation is associated with an object of type--- @VkPipelineCache@, the allocator will use the--- @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@ allocation 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 @VkDevice@ or @VkInstance@, the allocator will use an--- allocation scope of @VK_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--- #_see_also#------ 'VkAllocationCallbacks'-newtype VkSystemAllocationScope = VkSystemAllocationScope Int32- deriving (Eq, Ord, Storable)--instance Show VkSystemAllocationScope where- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = showString "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = showString "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_CACHE = showString "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = showString "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = showString "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"- showsPrec p (VkSystemAllocationScope x) = showParen (p >= 11) (showString "VkSystemAllocationScope " . showsPrec 11 x)--instance Read VkSystemAllocationScope where- readPrec = parens ( choose [ ("VK_SYSTEM_ALLOCATION_SCOPE_COMMAND", pure VK_SYSTEM_ALLOCATION_SCOPE_COMMAND)- , ("VK_SYSTEM_ALLOCATION_SCOPE_OBJECT", pure VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)- , ("VK_SYSTEM_ALLOCATION_SCOPE_CACHE", pure VK_SYSTEM_ALLOCATION_SCOPE_CACHE)- , ("VK_SYSTEM_ALLOCATION_SCOPE_DEVICE", pure VK_SYSTEM_ALLOCATION_SCOPE_DEVICE)- , ("VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE", pure VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE)- ] +++- prec 10 (do- expectP (Ident "VkSystemAllocationScope")- v <- step readPrec- pure (VkSystemAllocationScope v)- )- )---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"-pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = VkSystemAllocationScope 0---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"-pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = VkSystemAllocationScope 1---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"-pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE = VkSystemAllocationScope 2---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"-pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = VkSystemAllocationScope 3---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"-pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = VkSystemAllocationScope 4--- ** VkInternalAllocationType---- | VkInternalAllocationType - Allocation type------ = See Also--- #_see_also#------ 'PFN_vkInternalAllocationNotification', 'PFN_vkInternalFreeNotification'-newtype VkInternalAllocationType = VkInternalAllocationType Int32- deriving (Eq, Ord, Storable)--instance Show VkInternalAllocationType where- showsPrec _ VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = showString "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"- showsPrec p (VkInternalAllocationType x) = showParen (p >= 11) (showString "VkInternalAllocationType " . showsPrec 11 x)--instance Read VkInternalAllocationType where- readPrec = parens ( choose [ ("VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE", pure VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE)- ] +++- prec 10 (do- expectP (Ident "VkInternalAllocationType")- v <- step readPrec- pure (VkInternalAllocationType v)- )- )---- | @VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE@ specifies that the allocation--- is intended for execution by the host.-pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: VkInternalAllocationType-pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = VkInternalAllocationType 0--- ** VkInstanceCreateFlags---- | VkInstanceCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkInstanceCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also--- #_see_also#------ 'VkInstanceCreateInfo'-newtype VkInstanceCreateFlags = VkInstanceCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkInstanceCreateFlags where- - showsPrec p (VkInstanceCreateFlags x) = showParen (p >= 11) (showString "VkInstanceCreateFlags " . showsPrec 11 x)--instance Read VkInstanceCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkInstanceCreateFlags")- v <- step readPrec- pure (VkInstanceCreateFlags v)- )- )----- ** VkQueueFlagBits---- | VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue--- family------ = Description--- #_description#------ - @VK_QUEUE_GRAPHICS_BIT@ specifies that queues in this queue family--- support graphics operations.------ - @VK_QUEUE_COMPUTE_BIT@ specifies that queues in this queue family--- support compute operations.------ - @VK_QUEUE_TRANSFER_BIT@ specifies that queues in this queue family--- support transfer operations.------ - @VK_QUEUE_SPARSE_BINDING_BIT@ specifies that queues in this queue--- family support sparse memory management operations (see--- <{html_spec_relative}#sparsememory 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--- <{html_spec_relative}#devsandqueues-queues Queues>.------ = See Also--- #_see_also#------ 'VkQueueFlags'-newtype VkQueueFlagBits = VkQueueFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkQueueFlagBits where- showsPrec _ VK_QUEUE_GRAPHICS_BIT = showString "VK_QUEUE_GRAPHICS_BIT"- showsPrec _ VK_QUEUE_COMPUTE_BIT = showString "VK_QUEUE_COMPUTE_BIT"- showsPrec _ VK_QUEUE_TRANSFER_BIT = showString "VK_QUEUE_TRANSFER_BIT"- showsPrec _ VK_QUEUE_SPARSE_BINDING_BIT = showString "VK_QUEUE_SPARSE_BINDING_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkQueueFlagBits 0x00000010) = showString "VK_QUEUE_PROTECTED_BIT"- showsPrec p (VkQueueFlagBits x) = showParen (p >= 11) (showString "VkQueueFlagBits " . showsPrec 11 x)--instance Read VkQueueFlagBits where- readPrec = parens ( choose [ ("VK_QUEUE_GRAPHICS_BIT", pure VK_QUEUE_GRAPHICS_BIT)- , ("VK_QUEUE_COMPUTE_BIT", pure VK_QUEUE_COMPUTE_BIT)- , ("VK_QUEUE_TRANSFER_BIT", pure VK_QUEUE_TRANSFER_BIT)- , ("VK_QUEUE_SPARSE_BINDING_BIT", pure VK_QUEUE_SPARSE_BINDING_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_QUEUE_PROTECTED_BIT", pure (VkQueueFlagBits 0x00000010))- ] +++- prec 10 (do- expectP (Ident "VkQueueFlagBits")- v <- step readPrec- pure (VkQueueFlagBits v)- )- )---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"-pattern VK_QUEUE_GRAPHICS_BIT :: VkQueueFlagBits-pattern VK_QUEUE_GRAPHICS_BIT = VkQueueFlagBits 0x00000001---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"-pattern VK_QUEUE_COMPUTE_BIT :: VkQueueFlagBits-pattern VK_QUEUE_COMPUTE_BIT = VkQueueFlagBits 0x00000002---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"-pattern VK_QUEUE_TRANSFER_BIT :: VkQueueFlagBits-pattern VK_QUEUE_TRANSFER_BIT = VkQueueFlagBits 0x00000004---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT"-pattern VK_QUEUE_SPARSE_BINDING_BIT :: VkQueueFlagBits-pattern VK_QUEUE_SPARSE_BINDING_BIT = VkQueueFlagBits 0x00000008--- ** VkMemoryPropertyFlagBits---- | VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory--- type------ = See Also--- #_see_also#------ 'VkMemoryPropertyFlags'-newtype VkMemoryPropertyFlagBits = VkMemoryPropertyFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMemoryPropertyFlagBits where- showsPrec _ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = showString "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"- showsPrec _ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = showString "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"- showsPrec _ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = showString "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"- showsPrec _ VK_MEMORY_PROPERTY_HOST_CACHED_BIT = showString "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"- showsPrec _ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = showString "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkMemoryPropertyFlagBits 0x00000020) = showString "VK_MEMORY_PROPERTY_PROTECTED_BIT"- showsPrec p (VkMemoryPropertyFlagBits x) = showParen (p >= 11) (showString "VkMemoryPropertyFlagBits " . showsPrec 11 x)--instance Read VkMemoryPropertyFlagBits where- readPrec = parens ( choose [ ("VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT", pure VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)- , ("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", pure VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)- , ("VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", pure VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)- , ("VK_MEMORY_PROPERTY_HOST_CACHED_BIT", pure VK_MEMORY_PROPERTY_HOST_CACHED_BIT)- , ("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT", pure VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_MEMORY_PROPERTY_PROTECTED_BIT", pure (VkMemoryPropertyFlagBits 0x00000020))- ] +++- prec 10 (do- expectP (Ident "VkMemoryPropertyFlagBits")- v <- step readPrec- pure (VkMemoryPropertyFlagBits v)- )- )---- | @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_DEVICE_LOCAL_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = VkMemoryPropertyFlagBits 0x00000001---- | @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ bit specifies that memory--- allocated with this type /can/ be mapped for host access using--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory'.-pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = VkMemoryPropertyFlagBits 0x00000002---- | @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ bit specifies that the host cache--- management commands--- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges' and--- 'Graphics.Vulkan.Core10.Memory.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_COHERENT_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = VkMemoryPropertyFlagBits 0x00000004---- | @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_HOST_CACHED_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT = VkMemoryPropertyFlagBits 0x00000008---- | @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--- <{html_spec_relative}#memory-device-lazy_allocation Lazily Allocated Memory>.-pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = VkMemoryPropertyFlagBits 0x00000010--- ** VkMemoryHeapFlagBits---- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap------ = See Also--- #_see_also#------ 'VkMemoryHeapFlags'-newtype VkMemoryHeapFlagBits = VkMemoryHeapFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMemoryHeapFlagBits where- showsPrec _ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = showString "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkMemoryHeapFlagBits 0x00000002) = showString "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"- showsPrec p (VkMemoryHeapFlagBits x) = showParen (p >= 11) (showString "VkMemoryHeapFlagBits " . showsPrec 11 x)--instance Read VkMemoryHeapFlagBits where- readPrec = parens ( choose [ ("VK_MEMORY_HEAP_DEVICE_LOCAL_BIT", pure VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_MEMORY_HEAP_MULTI_INSTANCE_BIT", pure (VkMemoryHeapFlagBits 0x00000002))- ] +++- prec 10 (do- expectP (Ident "VkMemoryHeapFlagBits")- v <- step readPrec- pure (VkMemoryHeapFlagBits v)- )- )---- | @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.-pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT :: VkMemoryHeapFlagBits-pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = VkMemoryHeapFlagBits 0x00000001--- ** VkImageUsageFlagBits---- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image------ = See Also--- #_see_also#------ 'VkImageUsageFlags'-newtype VkImageUsageFlagBits = VkImageUsageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkImageUsageFlagBits where- showsPrec _ VK_IMAGE_USAGE_TRANSFER_SRC_BIT = showString "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"- showsPrec _ VK_IMAGE_USAGE_TRANSFER_DST_BIT = showString "VK_IMAGE_USAGE_TRANSFER_DST_BIT"- showsPrec _ VK_IMAGE_USAGE_SAMPLED_BIT = showString "VK_IMAGE_USAGE_SAMPLED_BIT"- showsPrec _ VK_IMAGE_USAGE_STORAGE_BIT = showString "VK_IMAGE_USAGE_STORAGE_BIT"- showsPrec _ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"- showsPrec _ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"- showsPrec _ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"- showsPrec _ VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"- showsPrec p (VkImageUsageFlagBits x) = showParen (p >= 11) (showString "VkImageUsageFlagBits " . showsPrec 11 x)--instance Read VkImageUsageFlagBits where- readPrec = parens ( choose [ ("VK_IMAGE_USAGE_TRANSFER_SRC_BIT", pure VK_IMAGE_USAGE_TRANSFER_SRC_BIT)- , ("VK_IMAGE_USAGE_TRANSFER_DST_BIT", pure VK_IMAGE_USAGE_TRANSFER_DST_BIT)- , ("VK_IMAGE_USAGE_SAMPLED_BIT", pure VK_IMAGE_USAGE_SAMPLED_BIT)- , ("VK_IMAGE_USAGE_STORAGE_BIT", pure VK_IMAGE_USAGE_STORAGE_BIT)- , ("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)- , ("VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)- , ("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)- , ("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)- ] +++- prec 10 (do- expectP (Ident "VkImageUsageFlagBits")- v <- step readPrec- pure (VkImageUsageFlagBits v)- )- )---- | @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_SRC_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT = VkImageUsageFlagBits 0x00000001---- | @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ specifies that the image /can/ be used--- as the destination of a transfer command.-pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT = VkImageUsageFlagBits 0x00000002---- | @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_SAMPLED_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_SAMPLED_BIT = VkImageUsageFlagBits 0x00000004---- | @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_STORAGE_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_STORAGE_BIT = VkImageUsageFlagBits 0x00000008---- | @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_COLOR_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000010---- | @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_DEPTH_STENCIL_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000020---- | @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 {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_TRANSIENT_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000040---- | @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.-pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000080--- ** VkImageCreateFlagBits---- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an--- image------ = Description--- #_description#------ - @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ specifies that the image will--- be backed using sparse memory binding.------ - @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ specifies that the image--- /can/ be partially backed using sparse memory binding. Images--- created with this flag /must/ also be created with the--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ flag.------ - @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ specifies 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 the @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ flag------ - @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ specifies that the image /can/--- be used to create a @VkImageView@ with a different format from the--- image.------ - @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ specifies that the image /can/--- be used to create a @VkImageView@ of type @VK_IMAGE_VIEW_TYPE_CUBE@--- or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@.------ See--- <{html_spec_relative}#sparsememory-sparseresourcefeatures Sparse Resource Features>--- and--- <{html_spec_relative}#sparsememory-physicalfeatures Sparse Physical Device Features>--- for more details.------ = See Also--- #_see_also#------ 'VkImageCreateFlags'-newtype VkImageCreateFlagBits = VkImageCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkImageCreateFlagBits where- showsPrec _ VK_IMAGE_CREATE_SPARSE_BINDING_BIT = showString "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"- showsPrec _ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = showString "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"- showsPrec _ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = showString "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"- showsPrec _ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = showString "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"- showsPrec _ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = showString "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkImageCreateFlagBits 0x00000400) = showString "VK_IMAGE_CREATE_ALIAS_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000040) = showString "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000020) = showString "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000080) = showString "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000100) = showString "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000800) = showString "VK_IMAGE_CREATE_PROTECTED_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000200) = showString "VK_IMAGE_CREATE_DISJOINT_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00001000) = showString "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"- showsPrec p (VkImageCreateFlagBits x) = showParen (p >= 11) (showString "VkImageCreateFlagBits " . showsPrec 11 x)--instance Read VkImageCreateFlagBits where- readPrec = parens ( choose [ ("VK_IMAGE_CREATE_SPARSE_BINDING_BIT", pure VK_IMAGE_CREATE_SPARSE_BINDING_BIT)- , ("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT", pure VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)- , ("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT", pure VK_IMAGE_CREATE_SPARSE_ALIASED_BIT)- , ("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT", pure VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT)- , ("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT", pure VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_IMAGE_CREATE_ALIAS_BIT", pure (VkImageCreateFlagBits 0x00000400))- , ("VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", pure (VkImageCreateFlagBits 0x00000040))- , ("VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", pure (VkImageCreateFlagBits 0x00000020))- , ("VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", pure (VkImageCreateFlagBits 0x00000080))- , ("VK_IMAGE_CREATE_EXTENDED_USAGE_BIT", pure (VkImageCreateFlagBits 0x00000100))- , ("VK_IMAGE_CREATE_PROTECTED_BIT", pure (VkImageCreateFlagBits 0x00000800))- , ("VK_IMAGE_CREATE_DISJOINT_BIT", pure (VkImageCreateFlagBits 0x00000200))- , ("VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", pure (VkImageCreateFlagBits 0x00001000))- ] +++- prec 10 (do- expectP (Ident "VkImageCreateFlagBits")- v <- step readPrec- pure (VkImageCreateFlagBits v)- )- )---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"-pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT = VkImageCreateFlagBits 0x00000001---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"-pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = VkImageCreateFlagBits 0x00000002---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"-pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = VkImageCreateFlagBits 0x00000004---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"-pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = VkImageCreateFlagBits 0x00000008---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"-pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = VkImageCreateFlagBits 0x00000010--- ** VkFormatFeatureFlagBits---- | VkFormatFeatureFlagBits - Bitmask specifying features supported by a--- buffer------ = Description--- #_description#------ The following bits /may/ be set in @linearTilingFeatures@ and--- @optimalTilingFeatures@, specifying that the features are supported by--- <{html_spec_relative}#VkImage images> or--- <{html_spec_relative}#VkImageView image views> created with the queried--- 'vkGetPhysicalDeviceFormatProperties'::@format@:------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ specifies that an image view--- /can/ be--- <{html_spec_relative}#descriptorsets-sampledimage sampled from>.------ - @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@ specifies that an image view--- /can/ be used as a--- <{html_spec_relative}#descriptorsets-storageimage storage images>.------ - @VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT@ specifies that an image--- view /can/ be used as storage image that supports atomic operations.------ - @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ specifies that an image--- view /can/ be used as a framebuffer color attachment and as an input--- attachment.------ - @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ specifies 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_BIT@ specifies that an--- image view /can/ be used as a framebuffer depth\/stencil attachment--- and as an input attachment.------ - @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ specifies that an image /can/ be--- used as @srcImage@ for the @vkCmdBlitImage@ command.------ - @VK_FORMAT_FEATURE_BLIT_DST_BIT@ specifies that an image /can/ be--- used as @dstImage@ for the @vkCmdBlitImage@ command.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ specifies that--- if @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ is also set, an image view--- /can/ be used with a sampler that has either of @magFilter@ or--- @minFilter@ set to @VK_FILTER_LINEAR@, or @mipmapMode@ set to--- @VK_SAMPLER_MIPMAP_MODE_LINEAR@. If @VK_FORMAT_FEATURE_BLIT_SRC_BIT@--- is also set, an image can be used as the @srcImage@ to--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage' with a--- @filter@ of @VK_FILTER_LINEAR@. This bit /must/ only be exposed for--- formats that also support the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@--- or @VK_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.------ The following bits /may/ be set in @bufferFeatures@, specifying that the--- features are supported by <{html_spec_relative}#VkBuffer buffers> or--- <{html_spec_relative}#VkBufferView buffer views> created with the--- queried 'vkGetPhysicalDeviceProperties'::@format@:------ - @VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT@ specifies that the--- format /can/ be used to create a buffer view that /can/ be bound to--- a @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ descriptor.------ - @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT@ specifies that the--- format /can/ be used to create a buffer view that /can/ be bound to--- a @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ descriptor.------ - @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT@ specifies that--- atomic operations are supported on--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ with this format.------ - @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ specifies that the format--- /can/ be used as a vertex attribute format--- (@VkVertexInputAttributeDescription@::@format@).------ = See Also--- #_see_also#------ 'VkFormatFeatureFlags'-newtype VkFormatFeatureFlagBits = VkFormatFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkFormatFeatureFlagBits where- showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"- showsPrec _ VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = showString "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"- showsPrec _ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = showString "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"- showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"- showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"- showsPrec _ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = showString "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"- showsPrec _ VK_FORMAT_FEATURE_BLIT_SRC_BIT = showString "VK_FORMAT_FEATURE_BLIT_SRC_BIT"- showsPrec _ VK_FORMAT_FEATURE_BLIT_DST_BIT = showString "VK_FORMAT_FEATURE_BLIT_DST_BIT"- showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkFormatFeatureFlagBits 0x00004000) = showString "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00008000) = showString "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00020000) = showString "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00040000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00080000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00100000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00200000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00400000) = showString "VK_FORMAT_FEATURE_DISJOINT_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00800000) = showString "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00002000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"- showsPrec _ (VkFormatFeatureFlagBits 0x00010000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"- showsPrec p (VkFormatFeatureFlagBits x) = showParen (p >= 11) (showString "VkFormatFeatureFlagBits " . showsPrec 11 x)--instance Read VkFormatFeatureFlagBits where- readPrec = parens ( choose [ ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT", pure VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT", pure VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)- , ("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", pure VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT", pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT)- , ("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT", pure VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT)- , ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)- , ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT", pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT)- , ("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", pure VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)- , ("VK_FORMAT_FEATURE_BLIT_SRC_BIT", pure VK_FORMAT_FEATURE_BLIT_SRC_BIT)- , ("VK_FORMAT_FEATURE_BLIT_DST_BIT", pure VK_FORMAT_FEATURE_BLIT_DST_BIT)- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", pure (VkFormatFeatureFlagBits 0x00004000))- , ("VK_FORMAT_FEATURE_TRANSFER_DST_BIT", pure (VkFormatFeatureFlagBits 0x00008000))- , ("VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT", pure (VkFormatFeatureFlagBits 0x00020000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT", pure (VkFormatFeatureFlagBits 0x00040000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT", pure (VkFormatFeatureFlagBits 0x00080000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT", pure (VkFormatFeatureFlagBits 0x00100000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT", pure (VkFormatFeatureFlagBits 0x00200000))- , ("VK_FORMAT_FEATURE_DISJOINT_BIT", pure (VkFormatFeatureFlagBits 0x00400000))- , ("VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", pure (VkFormatFeatureFlagBits 0x00800000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", pure (VkFormatFeatureFlagBits 0x00002000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT", pure (VkFormatFeatureFlagBits 0x00010000))- ] +++- prec 10 (do- expectP (Ident "VkFormatFeatureFlagBits")- v <- step readPrec- pure (VkFormatFeatureFlagBits v)- )- )---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = VkFormatFeatureFlagBits 0x00000001---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = VkFormatFeatureFlagBits 0x00000002---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = VkFormatFeatureFlagBits 0x00000004---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"-pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000008---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000010---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = VkFormatFeatureFlagBits 0x00000020---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"-pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000040---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = VkFormatFeatureFlagBits 0x00000080---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = VkFormatFeatureFlagBits 0x00000100---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"-pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = VkFormatFeatureFlagBits 0x00000200---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_SRC_BIT"-pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT = VkFormatFeatureFlagBits 0x00000400---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_DST_BIT"-pattern VK_FORMAT_FEATURE_BLIT_DST_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_BLIT_DST_BIT = VkFormatFeatureFlagBits 0x00000800---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = VkFormatFeatureFlagBits 0x00001000--- ** VkSampleCountFlagBits---- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for--- an image used for storage operations------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo',--- 'VkSampleCountFlags',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkSampleCountFlagBits = VkSampleCountFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSampleCountFlagBits where- showsPrec _ VK_SAMPLE_COUNT_1_BIT = showString "VK_SAMPLE_COUNT_1_BIT"- showsPrec _ VK_SAMPLE_COUNT_2_BIT = showString "VK_SAMPLE_COUNT_2_BIT"- showsPrec _ VK_SAMPLE_COUNT_4_BIT = showString "VK_SAMPLE_COUNT_4_BIT"- showsPrec _ VK_SAMPLE_COUNT_8_BIT = showString "VK_SAMPLE_COUNT_8_BIT"- showsPrec _ VK_SAMPLE_COUNT_16_BIT = showString "VK_SAMPLE_COUNT_16_BIT"- showsPrec _ VK_SAMPLE_COUNT_32_BIT = showString "VK_SAMPLE_COUNT_32_BIT"- showsPrec _ VK_SAMPLE_COUNT_64_BIT = showString "VK_SAMPLE_COUNT_64_BIT"- showsPrec p (VkSampleCountFlagBits x) = showParen (p >= 11) (showString "VkSampleCountFlagBits " . showsPrec 11 x)--instance Read VkSampleCountFlagBits where- readPrec = parens ( choose [ ("VK_SAMPLE_COUNT_1_BIT", pure VK_SAMPLE_COUNT_1_BIT)- , ("VK_SAMPLE_COUNT_2_BIT", pure VK_SAMPLE_COUNT_2_BIT)- , ("VK_SAMPLE_COUNT_4_BIT", pure VK_SAMPLE_COUNT_4_BIT)- , ("VK_SAMPLE_COUNT_8_BIT", pure VK_SAMPLE_COUNT_8_BIT)- , ("VK_SAMPLE_COUNT_16_BIT", pure VK_SAMPLE_COUNT_16_BIT)- , ("VK_SAMPLE_COUNT_32_BIT", pure VK_SAMPLE_COUNT_32_BIT)- , ("VK_SAMPLE_COUNT_64_BIT", pure VK_SAMPLE_COUNT_64_BIT)- ] +++- prec 10 (do- expectP (Ident "VkSampleCountFlagBits")- v <- step readPrec- pure (VkSampleCountFlagBits v)- )- )---- | @VK_SAMPLE_COUNT_1_BIT@ specifies an image with one sample per pixel.-pattern VK_SAMPLE_COUNT_1_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_1_BIT = VkSampleCountFlagBits 0x00000001---- | @VK_SAMPLE_COUNT_2_BIT@ specifies an image with 2 samples per pixel.-pattern VK_SAMPLE_COUNT_2_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_2_BIT = VkSampleCountFlagBits 0x00000002---- | @VK_SAMPLE_COUNT_4_BIT@ specifies an image with 4 samples per pixel.-pattern VK_SAMPLE_COUNT_4_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_4_BIT = VkSampleCountFlagBits 0x00000004---- | @VK_SAMPLE_COUNT_8_BIT@ specifies an image with 8 samples per pixel.-pattern VK_SAMPLE_COUNT_8_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_8_BIT = VkSampleCountFlagBits 0x00000008---- | @VK_SAMPLE_COUNT_16_BIT@ specifies an image with 16 samples per pixel.-pattern VK_SAMPLE_COUNT_16_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_16_BIT = VkSampleCountFlagBits 0x00000010---- | @VK_SAMPLE_COUNT_32_BIT@ specifies an image with 32 samples per pixel.-pattern VK_SAMPLE_COUNT_32_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_32_BIT = VkSampleCountFlagBits 0x00000020---- | @VK_SAMPLE_COUNT_64_BIT@ specifies an image with 64 samples per pixel.-pattern VK_SAMPLE_COUNT_64_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_64_BIT = VkSampleCountFlagBits 0x00000040--- No documentation found for TopLevel "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"-type VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256--- No documentation found for Nested "Integral a => a" "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"-pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE :: Integral a => a-pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256--- No documentation found for TopLevel "VK_UUID_SIZE"-type VK_UUID_SIZE = 16--- No documentation found for Nested "Integral a => a" "VK_UUID_SIZE"-pattern VK_UUID_SIZE :: Integral a => a-pattern VK_UUID_SIZE = 16--- No documentation found for TopLevel "VK_MAX_MEMORY_TYPES"-type VK_MAX_MEMORY_TYPES = 32--- No documentation found for Nested "Integral a => a" "VK_MAX_MEMORY_TYPES"-pattern VK_MAX_MEMORY_TYPES :: Integral a => a-pattern VK_MAX_MEMORY_TYPES = 32--- No documentation found for TopLevel "VK_MAX_MEMORY_HEAPS"-type VK_MAX_MEMORY_HEAPS = 16--- No documentation found for Nested "Integral a => a" "VK_MAX_MEMORY_HEAPS"-pattern VK_MAX_MEMORY_HEAPS :: Integral a => a-pattern VK_MAX_MEMORY_HEAPS = 16--- | PFN_vkInternalAllocationNotification - Application-defined memory--- allocation notification function------ = Parameters--- #_parameters#------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @size@ is the requested size of an allocation.------ - @allocationType@ is a 'VkInternalAllocationType' value specifying--- the requested type of an allocation.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- <{html_spec_relative}#memory-host-allocation-scope here>.------ = Description--- #_description#------ This is a purely informational callback.------ = See Also--- #_see_also#------ 'VkAllocationCallbacks'-type PFN_vkInternalAllocationNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())--- | PFN_vkInternalFreeNotification - Application-defined memory free--- notification function------ = Parameters--- #_parameters#------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @size@ is the requested size of an allocation.------ - @allocationType@ is a 'VkInternalAllocationType' value specifying--- the requested type of an allocation.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- <{html_spec_relative}#memory-host-allocation-scope here>.------ = Description--- #_description#------ = See Also--- #_see_also#------ 'VkAllocationCallbacks'-type PFN_vkInternalFreeNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())--- | PFN_vkReallocationFunction - Application-defined memory reallocation--- function------ = Parameters--- #_parameters#------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @pOriginal@ /must/ be either @NULL@ or a pointer previously returned--- by @pfnReallocation@ or @pfnAllocation@ of the same allocator.------ - @size@ is the size in bytes of the requested allocation.------ - @alignment@ is the requested alignment of the allocation in bytes--- and /must/ be a power of two.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- <{html_spec_relative}#memory-host-allocation-scope here>.------ = Description--- #_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--- <{html_spec_relative}#vkAllocationFunction_return_rules rules for return values as PFN_vkAllocationFunction>.------ = See Also--- #_see_also#------ 'VkAllocationCallbacks'-type PFN_vkReallocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pOriginal" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))--- | PFN_vkAllocationFunction - Application-defined memory allocation--- function------ = Parameters--- #_parameters#------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @size@ is the size in bytes of the requested allocation.------ - @alignment@ is the requested alignment of the allocation in bytes--- and /must/ be a power of two.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- <{html_spec_relative}#memory-host-allocation-scope here>.------ = Description--- #_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--- <{html_spec_relative}#fundamentals-errorcodes 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--- #_see_also#------ 'VkAllocationCallbacks'-type PFN_vkAllocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))--- | PFN_vkFreeFunction - Application-defined memory free function------ = Parameters--- #_parameters#------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @pMemory@ is the allocation to be freed.------ = Description--- #_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--- #_see_also#------ 'VkAllocationCallbacks'-type PFN_vkFreeFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pMemory" ::: Ptr ()) -> IO ())--- | PFN_vkVoidFunction - Dummy function pointer type returned by queries------ = Parameters--- #_parameters#------ = Description--- #_description#------ = See Also--- #_see_also#------ 'vkGetDeviceProcAddr', 'vkGetInstanceProcAddr'-type PFN_vkVoidFunction = Ptr (() -> IO ())--- | Dummy data to tag the 'Ptr' with-data VkInstance_T--- | VkInstance - Opaque handle to a instance object------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkCreateDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCreateDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',--- 'vkCreateInstance',--- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDebugReportMessageEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDestroyDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkDestroyDebugUtilsMessengerEXT',--- 'vkDestroyInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkDestroySurfaceKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroups',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroupsKHR',--- 'vkEnumeratePhysicalDevices', 'vkGetInstanceProcAddr',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSubmitDebugUtilsMessageEXT'-type VkInstance = Ptr VkInstance_T--- | Dummy data to tag the 'Ptr' with-data VkPhysicalDevice_T--- | VkPhysicalDevice - Opaque handle to a physical device object------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties',--- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkAcquireXlibDisplayEXT',--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayModeKHR',--- 'Graphics.Vulkan.Core10.ExtensionDiscovery.vkEnumerateDeviceExtensionProperties',--- 'Graphics.Vulkan.Core10.LayerDiscovery.vkEnumerateDeviceLayerProperties',--- 'vkEnumeratePhysicalDevices',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayModePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayPlaneCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayPlaneSupportedDisplaysKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetPhysicalDeviceDisplayPlanePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetPhysicalDeviceDisplayPropertiesKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFenceProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphoreProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR',--- 'vkGetPhysicalDeviceFeatures',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2KHR',--- 'vkGetPhysicalDeviceFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR',--- 'vkGetPhysicalDeviceMemoryProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkGetPhysicalDeviceMirPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR',--- 'vkGetPhysicalDeviceProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2KHR',--- 'vkGetPhysicalDeviceQueueFamilyProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2KHR',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.vkGetPhysicalDeviceSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceFormats2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceFormatsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfacePresentModesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkGetPhysicalDeviceWaylandPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkGetPhysicalDeviceWin32PresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkGetPhysicalDeviceXcbPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkGetPhysicalDeviceXlibPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkGetRandROutputDisplayEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display.vkReleaseDisplayEXT'-type VkPhysicalDevice = Ptr VkPhysicalDevice_T--- | Dummy data to tag the 'Ptr' with-data VkDevice_T--- | VkDevice - Opaque handle to a device object------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImage2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkAllocateCommandBuffers',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkAllocateDescriptorSets',--- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindBufferMemory2',--- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindBufferMemory2KHR',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindImageMemory',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2',--- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindImageMemory2KHR',--- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkCreateBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkCreateCommandPool',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',--- 'Graphics.Vulkan.Core10.Event.vkCreateEvent',--- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',--- 'Graphics.Vulkan.Core10.Pass.vkCreateFramebuffer',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',--- 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- 'Graphics.Vulkan.Core10.ImageView.vkCreateImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateObjectTableNVX',--- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkCreateQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkCreateShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkCreateValidationCacheEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkDebugMarkerSetObjectNameEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkDebugMarkerSetObjectTagEXT',--- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkDestroyBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkDestroyCommandPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkDestroyDevice',--- 'Graphics.Vulkan.Core10.Event.vkDestroyEvent',--- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyFramebuffer',--- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',--- 'Graphics.Vulkan.Core10.ImageView.vkDestroyImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyObjectTableNVX',--- 'Graphics.Vulkan.Core10.Pipeline.vkDestroyPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.vkDestroyPipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkDestroyQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkDestroySampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkDestroyShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkDestroySwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkDestroyValidationCacheEXT',--- 'Graphics.Vulkan.Core10.Queue.vkDeviceWaitIdle',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkDisplayPowerControlEXT',--- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkFreeCommandBuffers',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkFreeDescriptorSets',--- 'Graphics.Vulkan.Core10.Memory.vkFreeMemory',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkGetBufferMemoryRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeatures',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeaturesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupPresentCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupSurfacePresentModesKHR',--- 'Graphics.Vulkan.Core10.Memory.vkGetDeviceMemoryCommitment',--- 'vkGetDeviceProcAddr', 'Graphics.Vulkan.Core10.Queue.vkGetDeviceQueue',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.vkGetDeviceQueue2',--- 'Graphics.Vulkan.Core10.Event.vkGetEventStatus',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.vkGetFenceFdKHR',--- 'Graphics.Vulkan.Core10.Fence.vkGetFenceStatus',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.vkGetFenceWin32HandleKHR',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkGetImageMemoryRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetImageSparseMemoryRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR',--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetMemoryAndroidHardwareBufferANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandleKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetPastPresentationTimingGOOGLE',--- 'Graphics.Vulkan.Core10.PipelineCache.vkGetPipelineCacheData',--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetRefreshCycleDurationGOOGLE',--- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.vkGetSemaphoreFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.vkGetSemaphoreWin32HandleKHR',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkGetSwapchainCounterEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetSwapchainImagesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.vkGetSwapchainStatusKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkGetValidationCacheDataEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.vkImportFenceFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.vkImportFenceWin32HandleKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.vkImportSemaphoreFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.vkImportSemaphoreWin32HandleKHR',--- 'Graphics.Vulkan.Core10.Memory.vkInvalidateMappedMemoryRanges',--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory',--- 'Graphics.Vulkan.Core10.PipelineCache.vkMergePipelineCaches',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkMergeValidationCachesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkRegisterObjectsNVX',--- 'Graphics.Vulkan.Core10.CommandPool.vkResetCommandPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkResetDescriptorPool',--- 'Graphics.Vulkan.Core10.Event.vkResetEvent',--- 'Graphics.Vulkan.Core10.Fence.vkResetFences',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSetDebugUtilsObjectNameEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSetDebugUtilsObjectTagEXT',--- 'Graphics.Vulkan.Core10.Event.vkSetEvent',--- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.vkSetHdrMetadataEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1.vkTrimCommandPool',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.vkTrimCommandPoolKHR',--- 'Graphics.Vulkan.Core10.Memory.vkUnmapMemory',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkUnregisterObjectsNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets',--- 'Graphics.Vulkan.Core10.Fence.vkWaitForFences'-type VkDevice = Ptr VkDevice_T--- | vkCreateInstance - Create a new Vulkan instance------ = Parameters--- #_parameters#------ - @pCreateInfo@ points to an instance of 'VkInstanceCreateInfo'--- controlling creation of the instance.------ - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ - @pInstance@ points a @VkInstance@ handle in which the resulting--- instance is returned.------ = Description--- #_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--- <{html_spec_relative}#extended-functionality-extensions-dependencies required extensions>--- for each extension in the--- 'VkInstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also--- be present in that list.------ == Valid Usage (Implicit)------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkInstanceCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pInstance@ /must/ be a valid pointer to a @VkInstance@ handle------ == Return Codes------ [<#fundamentals-successcodes Success>]--- - @VK_SUCCESS@------ [<#fundamentals-errorcodes Failure>]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_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--- #_see_also#------ 'VkAllocationCallbacks', 'VkInstance', 'VkInstanceCreateInfo'-foreign import ccall "vkCreateInstance" vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult--- | vkDestroyInstance - Destroy an instance of Vulkan------ = Parameters--- #_parameters#------ - @instance@ is the handle of the instance to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#------ == Valid Usage------ - All child objects created using @instance@ /must/ have been--- destroyed prior to destroying @instance@------ - If @VkAllocationCallbacks@ were provided when @instance@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @instance@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - If @instance@ is not @NULL@, @instance@ /must/ be a valid--- @VkInstance@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ == Host Synchronization------ - Host access to @instance@ /must/ be externally synchronized------ = See Also--- #_see_also#------ 'VkAllocationCallbacks', 'VkInstance'-foreign import ccall "vkDestroyInstance" vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible--- to a Vulkan instance------ = Parameters--- #_parameters#------ - @instance@ is a handle to a Vulkan instance previously created with--- 'vkCreateInstance'.------ - @pPhysicalDeviceCount@ is a pointer to an integer related to the--- number of physical devices available or queried, as described below.------ - @pPhysicalDevices@ is either @NULL@ or a pointer to an array of--- @VkPhysicalDevice@ handles.------ = Description--- #_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)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pPhysicalDeviceCount@ /must/ be a valid pointer to a @uint32_t@--- value------ - If the value referenced by @pPhysicalDeviceCount@ is not @0@, and--- @pPhysicalDevices@ is not @NULL@, @pPhysicalDevices@ /must/ be a--- valid pointer to an array of @pPhysicalDeviceCount@--- @VkPhysicalDevice@ handles------ == Return Codes------ [<#fundamentals-successcodes Success>]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [<#fundamentals-errorcodes Failure>]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INITIALIZATION_FAILED@------ = See Also--- #_see_also#------ 'VkInstance', 'VkPhysicalDevice'-foreign import ccall "vkEnumeratePhysicalDevices" vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult--- | vkGetDeviceProcAddr - Return a function pointer for a command------ = Parameters--- #_parameters#------ The table below defines the various use cases for @vkGetDeviceProcAddr@--- and expected return value for each case.------ = Description--- #_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)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pName@ /must/ be a null-terminated UTF-8 string------ = See Also--- #_see_also#------ 'PFN_vkVoidFunction', 'VkDevice'-foreign import ccall "vkGetDeviceProcAddr" vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction--- | vkGetInstanceProcAddr - Return a function pointer for a command------ = Parameters--- #_parameters#------ - @instance@ is the instance that the function pointer will be--- compatible with, or @NULL@ for commands not dependent on any--- instance.------ - @pName@ is the name of the command to obtain.------ = Description--- #_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 @instance@ or a--- child of @instance@, e.g. 'VkInstance', 'VkPhysicalDevice',--- 'VkDevice', 'Graphics.Vulkan.Core10.Queue.VkQueue', or--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'.------ [2]--- An “available device extension” is a device extension supported by--- any physical device enumerated by @instance@.------ == Valid Usage (Implicit)------ - If @instance@ is not @NULL@, @instance@ /must/ be a valid--- @VkInstance@ handle------ - @pName@ /must/ be a null-terminated UTF-8 string------ = See Also--- #_see_also#------ 'PFN_vkVoidFunction', 'VkInstance'-foreign import ccall "vkGetInstanceProcAddr" vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction--- | vkGetPhysicalDeviceProperties - Returns properties of a physical device------ = Parameters--- #_parameters#------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pProperties@ points to an instance of the--- 'VkPhysicalDeviceProperties' structure, that will be filled with--- returned information.------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pProperties@ /must/ be a valid pointer to a--- @VkPhysicalDeviceProperties@ structure------ = See Also--- #_see_also#------ 'VkPhysicalDevice', 'VkPhysicalDeviceProperties'-foreign import ccall "vkGetPhysicalDeviceProperties" vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()--- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the--- queues of the specified physical device------ = Parameters--- #_parameters#------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pQueueFamilyPropertyCount@ is a pointer to an integer related to--- the number of queue families available or queried, as described--- below.------ - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array--- of 'VkQueueFamilyProperties' structures.------ = Description--- #_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)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a--- @uint32_t@ value------ - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,--- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@--- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@--- @VkQueueFamilyProperties@ structures------ = See Also--- #_see_also#------ 'VkPhysicalDevice', 'VkQueueFamilyProperties'-foreign import ccall "vkGetPhysicalDeviceQueueFamilyProperties" vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()--- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the--- specified physical device------ = Parameters--- #_parameters#------ - @physicalDevice@ is the handle to the device to query.------ - @pMemoryProperties@ points to an instance of--- @VkPhysicalDeviceMemoryProperties@ structure in which the properties--- are returned.------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pMemoryProperties@ /must/ be a valid pointer to a--- @VkPhysicalDeviceMemoryProperties@ structure------ = See Also--- #_see_also#------ 'VkPhysicalDevice', 'VkPhysicalDeviceMemoryProperties'-foreign import ccall "vkGetPhysicalDeviceMemoryProperties" vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()--- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device------ = Parameters--- #_parameters#------ - @physicalDevice@ is the physical device from which to query the--- supported features.------ - @pFeatures@ is a pointer to a 'VkPhysicalDeviceFeatures' structure--- in which the physical device features are returned. For each--- feature, a value of @VK_TRUE@ specifies that the feature is--- supported on this physical device, and @VK_FALSE@ specifies that the--- feature is not supported.------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pFeatures@ /must/ be a valid pointer to a--- @VkPhysicalDeviceFeatures@ structure------ = See Also--- #_see_also#------ 'VkPhysicalDevice', 'VkPhysicalDeviceFeatures'-foreign import ccall "vkGetPhysicalDeviceFeatures" vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()--- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format--- capabilities------ = Parameters--- #_parameters#------ - @physicalDevice@ is the physical device from which to query the--- format properties.------ - @format@ is the format whose properties are queried.------ - @pFormatProperties@ is a pointer to a 'VkFormatProperties' structure--- in which physical device properties for @format@ are returned.------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @pFormatProperties@ /must/ be a valid pointer to a--- @VkFormatProperties@ structure------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties',--- 'VkPhysicalDevice'-foreign import ccall "vkGetPhysicalDeviceFormatProperties" vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()--- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image--- format capabilities------ = Parameters--- #_parameters#------ - @physicalDevice@ is the physical device from which to query the--- image capabilities.------ - @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value--- specifying the image format, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@format@.------ - @type@ is a 'VkImageType' value specifying the image type,--- corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@imageType@.------ - @tiling@ is a 'VkImageTiling' value specifying the image tiling,--- corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@tiling@.------ - @usage@ is a bitmask of 'VkImageUsageFlagBits' specifying the--- intended usage of the image, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@usage@.------ - @flags@ is a bitmask of 'VkImageCreateFlagBits' specifying--- additional parameters of the image, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@.------ - @pImageFormatProperties@ points to an instance of the--- 'VkImageFormatProperties' structure in which capabilities are--- returned.------ = Description--- #_description#------ The @format@, @type@, @tiling@, @usage@, and @flags@ parameters--- correspond to parameters that would be consumed by--- 'Graphics.Vulkan.Core10.Image.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)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @type@ /must/ be a valid 'VkImageType' value------ - @tiling@ /must/ be a valid 'VkImageTiling' value------ - @usage@ /must/ be a valid combination of 'VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @flags@ /must/ be a valid combination of 'VkImageCreateFlagBits'--- values------ - @pImageFormatProperties@ /must/ be a valid pointer to a--- @VkImageFormatProperties@ structure------ == Return Codes------ [<#fundamentals-successcodes Success>]--- - @VK_SUCCESS@------ [<#fundamentals-errorcodes Failure>]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_FORMAT_NOT_SUPPORTED@------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkImageCreateFlags',--- 'VkImageFormatProperties', 'VkImageTiling', 'VkImageType',--- 'VkImageUsageFlags', 'VkPhysicalDevice'-foreign import ccall "vkGetPhysicalDeviceImageFormatProperties" vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult--- | VkExtent3D - Structure specifying a three-dimensional extent------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageCopy',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'VkImageFormatProperties',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageResolve',--- 'VkQueueFamilyProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryBind'-data VkExtent3D = VkExtent3D- { -- No documentation found for Nested "VkExtent3D" "vkWidth"- vkWidth :: Word32- , -- No documentation found for Nested "VkExtent3D" "vkHeight"- vkHeight :: Word32- , -- No documentation found for Nested "VkExtent3D" "vkDepth"- vkDepth :: Word32- }- deriving (Eq, Show)--instance Storable VkExtent3D where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkExtent3D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent3D))- *> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent3D))- *> poke (ptr `plusPtr` 8) (vkDepth (poked :: VkExtent3D))--- | VkPhysicalDeviceProperties - Structure specifying physical device--- properties------ = Description--- #_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--- <https://pcisig.com/membership/member-companies 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--- <{html_spec_relative}#vulkan-styleguide 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--- <https://pcisig.com/ PCI device> with a--- <https://pcisig.com/ 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--- #_see_also#------ 'VkPhysicalDeviceLimits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- 'VkPhysicalDeviceSparseProperties', 'VkPhysicalDeviceType',--- 'vkGetPhysicalDeviceProperties'-data VkPhysicalDeviceProperties = VkPhysicalDeviceProperties- { -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkApiVersion"- vkApiVersion :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkDriverVersion"- vkDriverVersion :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkVendorID"- vkVendorID :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkDeviceID"- vkDeviceID :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkDeviceType"- vkDeviceType :: VkPhysicalDeviceType- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkDeviceName"- vkDeviceName :: Vector VK_MAX_PHYSICAL_DEVICE_NAME_SIZE CChar- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkPipelineCacheUUID"- vkPipelineCacheUUID :: Vector VK_UUID_SIZE Word8- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkLimits"- vkLimits :: VkPhysicalDeviceLimits- , -- No documentation found for Nested "VkPhysicalDeviceProperties" "vkSparseProperties"- vkSparseProperties :: VkPhysicalDeviceSparseProperties- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceProperties where- sizeOf ~_ = 824- alignment ~_ = 8- peek ptr = VkPhysicalDeviceProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 276)- <*> peek (ptr `plusPtr` 296)- <*> peek (ptr `plusPtr` 800)- poke ptr poked = poke (ptr `plusPtr` 0) (vkApiVersion (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 4) (vkDriverVersion (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 8) (vkVendorID (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 12) (vkDeviceID (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 16) (vkDeviceType (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 20) (vkDeviceName (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 276) (vkPipelineCacheUUID (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 296) (vkLimits (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 800) (vkSparseProperties (poked :: VkPhysicalDeviceProperties))--- | VkApplicationInfo - Structure specifying application info------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_APPLICATION_INFO@------ - @pNext@ /must/ be @NULL@------ - If @pApplicationName@ is not @NULL@, @pApplicationName@ /must/ be a--- null-terminated UTF-8 string------ - If @pEngineName@ is not @NULL@, @pEngineName@ /must/ be a--- null-terminated UTF-8 string------ = See Also--- #_see_also#------ 'VkInstanceCreateInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkApplicationInfo = VkApplicationInfo- { -- No documentation found for Nested "VkApplicationInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkApplicationInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkApplicationInfo" "vkPApplicationName"- vkPApplicationName :: Ptr CChar- , -- No documentation found for Nested "VkApplicationInfo" "vkApplicationVersion"- vkApplicationVersion :: Word32- , -- No documentation found for Nested "VkApplicationInfo" "vkPEngineName"- vkPEngineName :: Ptr CChar- , -- No documentation found for Nested "VkApplicationInfo" "vkEngineVersion"- vkEngineVersion :: Word32- , -- No documentation found for Nested "VkApplicationInfo" "vkApiVersion"- vkApiVersion :: Word32- }- deriving (Eq, Show)--instance Storable VkApplicationInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkApplicationInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 16) (vkPApplicationName (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 24) (vkApplicationVersion (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 32) (vkPEngineName (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 40) (vkEngineVersion (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 44) (vkApiVersion (poked :: VkApplicationInfo))--- | VkAllocationCallbacks - Structure containing callback function pointers--- for memory allocation------ = Description--- #_description#------ == Valid Usage------ - @pfnAllocation@ /must/ be a valid pointer to a valid user-defined--- 'PFN_vkAllocationFunction'------ - @pfnReallocation@ /must/ be a valid pointer to a valid user-defined--- 'PFN_vkReallocationFunction'------ - @pfnFree@ /must/ be a valid pointer to a valid user-defined--- 'PFN_vkFreeFunction'------ - If either of @pfnInternalAllocation@ or @pfnInternalFree@ is not--- @NULL@, both /must/ be valid callbacks------ = See Also--- #_see_also#------ 'PFN_vkAllocationFunction', 'PFN_vkFreeFunction',--- 'PFN_vkInternalAllocationNotification',--- 'PFN_vkInternalFreeNotification', 'PFN_vkReallocationFunction',--- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory',--- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',--- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkCreateBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkCreateCommandPool',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkCreateDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCreateDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayModeKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',--- 'Graphics.Vulkan.Core10.Event.vkCreateEvent',--- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',--- 'Graphics.Vulkan.Core10.Pass.vkCreateFramebuffer',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',--- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',--- 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- 'Graphics.Vulkan.Core10.ImageView.vkCreateImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateIndirectCommandsLayoutNVX',--- 'vkCreateInstance',--- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateObjectTableNVX',--- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkCreateQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkCreateShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkCreateValidationCacheEXT',--- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',--- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkDestroyBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkDestroyCommandPool',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDestroyDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkDestroyDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkDestroyDevice',--- 'Graphics.Vulkan.Core10.Event.vkDestroyEvent',--- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyFramebuffer',--- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',--- 'Graphics.Vulkan.Core10.ImageView.vkDestroyImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyIndirectCommandsLayoutNVX',--- 'vkDestroyInstance',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyObjectTableNVX',--- 'Graphics.Vulkan.Core10.Pipeline.vkDestroyPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.vkDestroyPipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkDestroyQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkDestroySampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkDestroyShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkDestroySurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkDestroySwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkDestroyValidationCacheEXT',--- 'Graphics.Vulkan.Core10.Memory.vkFreeMemory',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT'-data VkAllocationCallbacks = VkAllocationCallbacks- { -- No documentation found for Nested "VkAllocationCallbacks" "vkPUserData"- vkPUserData :: Ptr ()- , -- No documentation found for Nested "VkAllocationCallbacks" "vkPfnAllocation"- vkPfnAllocation :: PFN_vkAllocationFunction- , -- No documentation found for Nested "VkAllocationCallbacks" "vkPfnReallocation"- vkPfnReallocation :: PFN_vkReallocationFunction- , -- No documentation found for Nested "VkAllocationCallbacks" "vkPfnFree"- vkPfnFree :: PFN_vkFreeFunction- , -- No documentation found for Nested "VkAllocationCallbacks" "vkPfnInternalAllocation"- vkPfnInternalAllocation :: PFN_vkInternalAllocationNotification- , -- No documentation found for Nested "VkAllocationCallbacks" "vkPfnInternalFree"- vkPfnInternalFree :: PFN_vkInternalFreeNotification- }- deriving (Eq, Show)--instance Storable VkAllocationCallbacks where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkAllocationCallbacks <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkPUserData (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 8) (vkPfnAllocation (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 16) (vkPfnReallocation (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 24) (vkPfnFree (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 32) (vkPfnInternalAllocation (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 40) (vkPfnInternalFree (poked :: VkAllocationCallbacks))--- | VkInstanceCreateInfo - Structure specifying parameters of a newly--- created instance------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportCallbackCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsMessengerCreateInfoEXT',--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_flags.VkValidationFlagsEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - If @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a--- valid pointer to a valid @VkApplicationInfo@ structure------ - If @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a--- valid pointer to an array of @enabledLayerCount@ null-terminated--- UTF-8 strings------ - If @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@--- /must/ be a valid pointer to an array of @enabledExtensionCount@--- null-terminated UTF-8 strings------ = See Also--- #_see_also#------ 'VkApplicationInfo', 'VkInstanceCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateInstance'-data VkInstanceCreateInfo = VkInstanceCreateInfo- { -- No documentation found for Nested "VkInstanceCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkFlags"- vkFlags :: VkInstanceCreateFlags- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkPApplicationInfo"- vkPApplicationInfo :: Ptr VkApplicationInfo- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkEnabledLayerCount"- vkEnabledLayerCount :: Word32- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkPPEnabledLayerNames"- vkPPEnabledLayerNames :: Ptr (Ptr CChar)- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkEnabledExtensionCount"- vkEnabledExtensionCount :: Word32- , -- No documentation found for Nested "VkInstanceCreateInfo" "vkPPEnabledExtensionNames"- vkPPEnabledExtensionNames :: Ptr (Ptr CChar)- }- deriving (Eq, Show)--instance Storable VkInstanceCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkInstanceCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPApplicationInfo (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 32) (vkEnabledLayerCount (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPPEnabledLayerNames (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 48) (vkEnabledExtensionCount (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPPEnabledExtensionNames (poked :: VkInstanceCreateInfo))--- | VkQueueFamilyProperties - Structure providing information about a queue--- family------ = Description--- #_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@, and @z@ members of a--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'--- parameter /must/ always be zero.------ - The @width@, @height@, and @depth@ members of a 'VkExtent3D'--- parameter /must/ always match the width, height, and depth of--- the image subresource corresponding to the parameter,--- respectively.------ - (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@, and @z@ of a--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'--- parameter /must/ be integer multiples of Ax, Ay, and Az,--- respectively.------ - @width@ of a 'VkExtent3D' parameter /must/ be an integer--- multiple of Ax, or else @x@ + @width@ /must/ equal the width of--- the image subresource corresponding to the parameter.------ - @height@ of a 'VkExtent3D' parameter /must/ be an integer--- multiple of Ay, or else @y@ + @height@ /must/ equal the height--- of the image subresource corresponding to the parameter.------ - @depth@ of a 'VkExtent3D' parameter /must/ be an integer--- multiple of Az, or else @z@ + @depth@ /must/ 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 <{html_spec_relative}#memory-device Device Memory> section describes--- memory properties queried from the physical device.------ For physical device feature queries see the--- <{html_spec_relative}#features Features> chapter.------ = See Also--- #_see_also#------ 'VkExtent3D',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkQueueFamilyProperties2',--- 'VkQueueFlags', 'vkGetPhysicalDeviceQueueFamilyProperties'-data VkQueueFamilyProperties = VkQueueFamilyProperties- { -- No documentation found for Nested "VkQueueFamilyProperties" "vkQueueFlags"- vkQueueFlags :: VkQueueFlags- , -- No documentation found for Nested "VkQueueFamilyProperties" "vkQueueCount"- vkQueueCount :: Word32- , -- No documentation found for Nested "VkQueueFamilyProperties" "vkTimestampValidBits"- vkTimestampValidBits :: Word32- , -- No documentation found for Nested "VkQueueFamilyProperties" "vkMinImageTransferGranularity"- vkMinImageTransferGranularity :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkQueueFamilyProperties where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkQueueFamilyProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkQueueFlags (poked :: VkQueueFamilyProperties))- *> poke (ptr `plusPtr` 4) (vkQueueCount (poked :: VkQueueFamilyProperties))- *> poke (ptr `plusPtr` 8) (vkTimestampValidBits (poked :: VkQueueFamilyProperties))- *> poke (ptr `plusPtr` 12) (vkMinImageTransferGranularity (poked :: VkQueueFamilyProperties))--- | VkPhysicalDeviceMemoryProperties - Structure specifying physical device--- memory properties------ = Description--- #_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_BIT@------ - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@------ - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_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 @propertyFlags@ member--- of __X__ is a strict subset of the set of bit flags returned in the--- @propertyFlags@ member of __Y__.------ - or the @propertyFlags@ members 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--- <{html_spec_relative}#memory-device-bitmask-list 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--- #_see_also#------ 'VkMemoryHeap', 'VkMemoryType',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceMemoryProperties2',--- 'vkGetPhysicalDeviceMemoryProperties'-data VkPhysicalDeviceMemoryProperties = VkPhysicalDeviceMemoryProperties- { -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties" "vkMemoryTypeCount"- vkMemoryTypeCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties" "vkMemoryTypes"- vkMemoryTypes :: Vector VK_MAX_MEMORY_TYPES VkMemoryType- , -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties" "vkMemoryHeapCount"- vkMemoryHeapCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties" "vkMemoryHeaps"- vkMemoryHeaps :: Vector VK_MAX_MEMORY_HEAPS VkMemoryHeap- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceMemoryProperties where- sizeOf ~_ = 520- alignment ~_ = 8- peek ptr = VkPhysicalDeviceMemoryProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 260)- <*> peek (ptr `plusPtr` 264)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMemoryTypeCount (poked :: VkPhysicalDeviceMemoryProperties))- *> poke (ptr `plusPtr` 4) (vkMemoryTypes (poked :: VkPhysicalDeviceMemoryProperties))- *> poke (ptr `plusPtr` 260) (vkMemoryHeapCount (poked :: VkPhysicalDeviceMemoryProperties))- *> poke (ptr `plusPtr` 264) (vkMemoryHeaps (poked :: VkPhysicalDeviceMemoryProperties))--- | VkMemoryType - Structure specifying memory type------ = Description--- #_description#------ = See Also--- #_see_also#------ 'VkMemoryPropertyFlags', 'VkPhysicalDeviceMemoryProperties'-data VkMemoryType = VkMemoryType- { -- No documentation found for Nested "VkMemoryType" "vkPropertyFlags"- vkPropertyFlags :: VkMemoryPropertyFlags- , -- No documentation found for Nested "VkMemoryType" "vkHeapIndex"- vkHeapIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkMemoryType where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkMemoryType <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkPropertyFlags (poked :: VkMemoryType))- *> poke (ptr `plusPtr` 4) (vkHeapIndex (poked :: VkMemoryType))--- | VkMemoryHeap - Structure specifying a memory heap------ = Description--- #_description#------ = See Also--- #_see_also#------ @VkDeviceSize@, 'VkMemoryHeapFlags', 'VkPhysicalDeviceMemoryProperties'-data VkMemoryHeap = VkMemoryHeap- { -- No documentation found for Nested "VkMemoryHeap" "vkSize"- vkSize :: VkDeviceSize- , -- No documentation found for Nested "VkMemoryHeap" "vkFlags"- vkFlags :: VkMemoryHeapFlags- }- deriving (Eq, Show)--instance Storable VkMemoryHeap where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkMemoryHeap <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSize (poked :: VkMemoryHeap))- *> poke (ptr `plusPtr` 8) (vkFlags (poked :: VkMemoryHeap))--- | VkFormatProperties - Structure specifying image format properties------ = Description--- #_description#------ __Note__------ If no format feature flags are supported, then the only possible use--- would be image transfers - which alone are not useful. As such, 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--- #_see_also#------ 'VkFormatFeatureFlags',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkFormatProperties2',--- 'vkGetPhysicalDeviceFormatProperties'-data VkFormatProperties = VkFormatProperties- { -- No documentation found for Nested "VkFormatProperties" "vkLinearTilingFeatures"- vkLinearTilingFeatures :: VkFormatFeatureFlags- , -- No documentation found for Nested "VkFormatProperties" "vkOptimalTilingFeatures"- vkOptimalTilingFeatures :: VkFormatFeatureFlags- , -- No documentation found for Nested "VkFormatProperties" "vkBufferFeatures"- vkBufferFeatures :: VkFormatFeatureFlags- }- deriving (Eq, Show)--instance Storable VkFormatProperties where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkLinearTilingFeatures (poked :: VkFormatProperties))- *> poke (ptr `plusPtr` 4) (vkOptimalTilingFeatures (poked :: VkFormatProperties))- *> poke (ptr `plusPtr` 8) (vkBufferFeatures (poked :: VkFormatProperties))--- | VkImageFormatProperties - Structure specifying a image format properties------ = Members--- #_members#------ - @maxExtent@ are the maximum image dimensions. See the--- <{html_spec_relative}#features-extentperimagetype Allowed Extent Values>--- section below for how these values are constrained by @type@.------ - @maxMipLevels@ is the maximum number of mipmap levels.--- @maxMipLevels@ /must/ be equal to ⌈log2(max(@width@, @height@,--- @depth@))⌉ + 1, where @width@, @height@, and @depth@ are taken from--- the corresponding members of @maxExtent@, except when one of the--- following conditions is true, in which case it /may/ instead be @1@:------ - @vkGetPhysicalDeviceImageFormatProperties@::@tiling@ was--- @VK_IMAGE_TILING_LINEAR@------ - @maxArrayLayers@ is the maximum number of array layers.--- @maxArrayLayers@ /must/ either be equal to 1 or be greater than or--- equal to the @maxImageArrayLayers@ member of--- 'VkPhysicalDeviceLimits'. A value of 1 is valid only if @tiling@ is--- @VK_IMAGE_TILING_LINEAR@ or if @type@ is @VK_IMAGE_TYPE_3D@.------ - @sampleCounts@ is a bitmask of 'VkSampleCountFlagBits' specifying--- all the supported sample counts for this image as described--- <{html_spec_relative}#features-supported-sample-counts below>.------ - @maxResourceSize@ is 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. @maxResourceSize@ /must/ be at least--- 231.------ = Description--- #_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 'Graphics.Vulkan.Core10.Image.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 'Graphics.Vulkan.Core10.Image.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--- #_see_also#------ @VkDeviceSize@, 'VkExtent3D',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalImageFormatPropertiesNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2',--- 'VkSampleCountFlags', 'vkGetPhysicalDeviceImageFormatProperties'-data VkImageFormatProperties = VkImageFormatProperties- { -- No documentation found for Nested "VkImageFormatProperties" "vkMaxExtent"- vkMaxExtent :: VkExtent3D- , -- No documentation found for Nested "VkImageFormatProperties" "vkMaxMipLevels"- vkMaxMipLevels :: Word32- , -- No documentation found for Nested "VkImageFormatProperties" "vkMaxArrayLayers"- vkMaxArrayLayers :: Word32- , -- No documentation found for Nested "VkImageFormatProperties" "vkSampleCounts"- vkSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkImageFormatProperties" "vkMaxResourceSize"- vkMaxResourceSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkImageFormatProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkImageFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMaxExtent (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 12) (vkMaxMipLevels (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 16) (vkMaxArrayLayers (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 20) (vkSampleCounts (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 24) (vkMaxResourceSize (poked :: VkImageFormatProperties))--- | VkPhysicalDeviceFeatures - Structure describing the fine-grained--- features that can be supported by an implementation------ = Members--- #_members#------ The members of the @VkPhysicalDeviceFeatures@ structure describe the--- following features:------ = Description--- #_description#------ - @robustBufferAccess@ specifies that accesses to buffers are--- bounds-checked against the range of the buffer descriptor (as--- determined by @VkDescriptorBufferInfo@::@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 @OpImageTexelPointer@ and 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 @OpImageTexelPointer@ and the--- object pointed to is not wholly contained within the bound--- range.------ __Note__------ If a SPIR-V @OpLoad@ instruction 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.------ - 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@, if @bindingStride@ == 0; or------ - (@vertexBufferRangeSize@ - (@vertexBufferRangeSize@ %--- @bindingStride@))------ where @vertexBufferRangeSize@ is the byte size of the memory--- range bound to the vertex buffer binding and @bindingStride@ is--- 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 @robustBufferAccess@ is not enabled, out of bounds accesses--- /may/ corrupt any memory within the process and cause undefined--- behavior up to and including application termination.------ - @fullDrawIndexUint32@ specifies the full 32-bit range of indices is--- supported for indexed draw calls when using a--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' of--- @VK_INDEX_TYPE_UINT32@. @maxDrawIndexedIndexValue@ is the maximum--- index value that /may/ be used (aside from the primitive restart--- index, which is always 232-1 when the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' is--- @VK_INDEX_TYPE_UINT32@). If this feature is supported,--- @maxDrawIndexedIndexValue@ /must/ be 232-1; otherwise it /must/ be--- no smaller than 224-1. See--- <{html_spec_relative}#features-limits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue>.------ - @imageCubeArray@ specifies whether image views with a--- 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ /can/ be created, and that the--- corresponding @SampledCubeArray@ and @ImageCubeArray@ SPIR-V--- capabilities /can/ be used in shader code.------ - @independentBlend@ specifies whether the--- @VkPipelineColorBlendAttachmentState@ settings are controlled--- independently per-attachment. If this feature is not enabled, the--- @VkPipelineColorBlendAttachmentState@ settings for all color--- attachments /must/ be identical. Otherwise, a different--- @VkPipelineColorBlendAttachmentState@ /can/ be provided for each--- bound color attachment.------ - @geometryShader@ specifies whether geometry shaders are supported.--- If this feature is not enabled, the @VK_SHADER_STAGE_GEOMETRY_BIT@--- and @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ enum values /must/ not--- be used. This also specifies whether shader modules /can/ declare--- the @Geometry@ capability.------ - @tessellationShader@ specifies whether tessellation control and--- evaluation shaders are supported. If this feature is not enabled,--- the @VK_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@, and--- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@ enum--- values /must/ not be used. This also specifies whether shader--- modules /can/ declare the @Tessellation@ capability.------ - @sampleRateShading@ specifies whether--- <{html_spec_relative}#primsrast-sampleshading Sample Shading> and--- multisample interpolation are supported. If this feature is not--- enabled, the @sampleShadingEnable@ member of the--- @VkPipelineMultisampleStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@ and the @minSampleShading@ member is ignored. This also--- specifies whether shader modules /can/ declare the--- @SampleRateShading@ capability.------ - @dualSrcBlend@ specifies whether blend operations which take two--- sources are supported. If this feature is not enabled, the--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, and--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ enum values /must/ not be--- used as source or destination blending factors. See--- <{html_spec_relative}#framebuffer-dsb {html_spec_relative}#framebuffer-dsb>.------ - @logicOp@ specifies whether logic operations are supported. If this--- feature is not enabled, the @logicOpEnable@ member of the--- @VkPipelineColorBlendStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@, and the @logicOp@ member is ignored.------ - @multiDrawIndirect@ specifies whether multiple draw indirect is--- supported. If this feature is not enabled, the @drawCount@ parameter--- to the @vkCmdDrawIndirect@ and @vkCmdDrawIndexedIndirect@ commands--- /must/ be 0 or 1. The @maxDrawIndirectCount@ member of the--- @VkPhysicalDeviceLimits@ structure /must/ also be 1 if this feature--- is not supported. See--- <{html_spec_relative}#features-limits-maxDrawIndirectCount maxDrawIndirectCount>.------ - @drawIndirectFirstInstance@ specifies whether indirect draw calls--- support the @firstInstance@ parameter. If this feature is not--- enabled, the @firstInstance@ member of all @VkDrawIndirectCommand@--- and @VkDrawIndexedIndirectCommand@ structures that are provided to--- the @vkCmdDrawIndirect@ and @vkCmdDrawIndexedIndirect@ commands--- /must/ be 0.------ - @depthClamp@ specifies whether depth clamping is supported. If this--- feature is not enabled, the @depthClampEnable@ member of the--- @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@. Otherwise, setting @depthClampEnable@ to @VK_TRUE@ will--- enable depth clamping.------ - @depthBiasClamp@ specifies whether depth bias clamping is supported.--- If this feature is not enabled, the @depthBiasClamp@ member of the--- @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set to--- 0.0 unless the @VK_DYNAMIC_STATE_DEPTH_BIAS@ dynamic state is--- enabled, and the @depthBiasClamp@ parameter to @vkCmdSetDepthBias@--- /must/ be set to 0.0.------ - @fillModeNonSolid@ specifies whether point and wireframe fill modes--- are supported. If this feature is not enabled, the--- @VK_POLYGON_MODE_POINT@ and @VK_POLYGON_MODE_LINE@ enum values--- /must/ not be used.------ - @depthBounds@ specifies whether depth bounds tests are supported. If--- this feature is not enabled, the @depthBoundsTestEnable@ member of--- the @VkPipelineDepthStencilStateCreateInfo@ structure /must/ be set--- to @VK_FALSE@. When @depthBoundsTestEnable@ is set to @VK_FALSE@,--- the @minDepthBounds@ and @maxDepthBounds@ members of the--- @VkPipelineDepthStencilStateCreateInfo@ structure are ignored.------ - @wideLines@ specifies whether lines with width other than 1.0 are--- supported. If this feature is not enabled, the @lineWidth@ member of--- the @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set--- to 1.0 unless the @VK_DYNAMIC_STATE_LINE_WIDTH@ dynamic state is--- enabled, and the @lineWidth@ parameter to @vkCmdSetLineWidth@ /must/--- be set to 1.0. When this feature is supported, the range and--- granularity of supported line widths are indicated by the--- @lineWidthRange@ and @lineWidthGranularity@ members of the--- @VkPhysicalDeviceLimits@ structure, respectively.------ - @largePoints@ specifies 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 the @pointSizeRange@ and--- @pointSizeGranularity@ members of the @VkPhysicalDeviceLimits@--- structure, respectively.------ - @alphaToOne@ specifies 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 the @alphaToOneEnable@ member of the--- @VkPipelineMultisampleStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@. Otherwise setting @alphaToOneEnable@ to @VK_TRUE@ will--- enable alpha-to-one behavior.------ - @multiViewport@ specifies whether more than one viewport is--- supported. If this feature is not enabled, the @viewportCount@ and--- @scissorCount@ members of the @VkPipelineViewportStateCreateInfo@--- structure /must/ be set to 1. Similarly, the @viewportCount@--- parameter to the @vkCmdSetViewport@ command and the @scissorCount@--- parameter to the @vkCmdSetScissor@ command /must/ be 1, and the--- @firstViewport@ parameter to the @vkCmdSetViewport@ command and the--- @firstScissor@ parameter to the @vkCmdSetScissor@ command /must/ be--- 0.------ - @samplerAnisotropy@ specifies whether anisotropic filtering is--- supported. If this feature is not enabled, the @anisotropyEnable@--- member of the @VkSamplerCreateInfo@ structure /must/ be @VK_FALSE@.------ - @textureCompressionETC2@ specifies whether all of the ETC2 and EAC--- compressed texture formats are supported. If this feature is--- enabled, then the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/--- be supported in @optimalTilingFeatures@ for 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@------ 'vkGetPhysicalDeviceFormatProperties' and--- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check--- for additional supported properties of individual formats.------ - @textureCompressionASTC_LDR@ specifies whether all of the ASTC LDR--- compressed texture formats are supported. If this feature is--- enabled, then the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/--- be supported in @optimalTilingFeatures@ for 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@------ 'vkGetPhysicalDeviceFormatProperties' and--- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check--- for additional supported properties of individual formats.------ - @textureCompressionBC@ specifies whether all of the BC compressed--- texture formats are supported. If this feature is enabled, then the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/--- be supported in @optimalTilingFeatures@ for 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@------ 'vkGetPhysicalDeviceFormatProperties' and--- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check--- for additional supported properties of individual formats.------ - @occlusionQueryPrecise@ specifies whether occlusion queries--- returning actual sample counts are supported. Occlusion queries are--- created in a @VkQueryPool@ by specifying the @queryType@ of--- @VK_QUERY_TYPE_OCCLUSION@ in the @VkQueryPoolCreateInfo@ structure--- which is passed to @vkCreateQueryPool@. If this feature is enabled,--- queries of this type /can/ enable @VK_QUERY_CONTROL_PRECISE_BIT@ in--- the @flags@ parameter to @vkCmdBeginQuery@. 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 and @VK_QUERY_CONTROL_PRECISE_BIT@ is--- set, occlusion queries will report the actual number of samples--- passed.------ - @pipelineStatisticsQuery@ specifies whether the pipeline statistics--- queries are supported. If this feature is not enabled, queries of--- type @VK_QUERY_TYPE_PIPELINE_STATISTICS@ /cannot/ be created, and--- none of the--- 'Graphics.Vulkan.Core10.Query.VkQueryPipelineStatisticFlagBits' bits--- /can/ be set in the @pipelineStatistics@ member of the--- @VkQueryPoolCreateInfo@ structure.------ - @vertexPipelineStoresAndAtomics@ specifies 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 the @NonWriteable@ decoration (or the @readonly@--- memory qualifier in GLSL).------ - @fragmentStoresAndAtomics@ specifies 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 the @NonWriteable@--- decoration (or the @readonly@ memory qualifier in GLSL).------ - @shaderTessellationAndGeometryPointSize@ specifies whether the--- @PointSize@ built-in decoration is available in the tessellation--- control, tessellation evaluation, and geometry shader stages. If--- this feature is not enabled, members decorated with the @PointSize@--- built-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 the @TessellationPointSize@ capability for tessellation--- control and evaluation shaders, or if the shader modules /can/--- declare the @GeometryPointSize@ capability for geometry shaders. An--- implementation supporting this feature /must/ also support one or--- both of the--- <{html_spec_relative}#features-features-tessellationShader tessellationShader>--- or--- <{html_spec_relative}#features-features-geometryShader geometryShader>--- features.------ - @shaderImageGatherExtended@ specifies whether the extended set of--- image gather instructions are available in shader code. If this--- feature is not enabled, the @OpImage@*@Gather@ instructions do not--- support the @Offset@ and @ConstOffsets@ operands. This also--- specifies whether shader modules /can/ declare the--- @ImageGatherExtended@ capability.------ - @shaderStorageImageExtendedFormats@ specifies whether the extended--- storage image formats are available in shader code. If this feature--- is not enabled, the formats requiring the--- @StorageImageExtendedFormats@ capability are not supported for--- storage images. This also specifies whether shader modules /can/--- declare the @StorageImageExtendedFormats@ capability.------ - @shaderStorageImageMultisample@ specifies whether multisampled--- storage images are supported. If this feature is not enabled, images--- that are created with a @usage@ that includes--- @VK_IMAGE_USAGE_STORAGE_BIT@ /must/ be created with @samples@ equal--- to @VK_SAMPLE_COUNT_1_BIT@. This also specifies whether shader--- modules /can/ declare the @StorageImageMultisample@ capability.------ - @shaderStorageImageReadWithoutFormat@ specifies whether storage--- images require a format qualifier to be specified when reading from--- storage images. If this feature is not enabled, the @OpImageRead@--- instruction /must/ not have an @OpTypeImage@ of @Unknown@. This also--- specifies whether shader modules /can/ declare the--- @StorageImageReadWithoutFormat@ capability.------ - @shaderStorageImageWriteWithoutFormat@ specifies whether storage--- images require a format qualifier to be specified when writing to--- storage images. If this feature is not enabled, the @OpImageWrite@--- instruction /must/ not have an @OpTypeImage@ of @Unknown@. This also--- specifies whether shader modules /can/ declare the--- @StorageImageWriteWithoutFormat@ capability.------ - @shaderUniformBufferArrayDynamicIndexing@ specifies 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 of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ /must/ be indexed only--- by constant integral expressions when aggregated into arrays in--- shader code. This also specifies whether shader modules /can/--- declare the @UniformBufferArrayDynamicIndexing@ capability.------ - @shaderSampledImageArrayDynamicIndexing@ specifies 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 of @VK_DESCRIPTOR_TYPE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also specifies whether shader modules /can/ declare the--- @SampledImageArrayDynamicIndexing@ capability.------ - @shaderStorageBufferArrayDynamicIndexing@ specifies 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 of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ be indexed only--- by constant integral expressions when aggregated into arrays in--- shader code. This also specifies whether shader modules /can/--- declare the @StorageBufferArrayDynamicIndexing@ capability.------ - @shaderStorageImageArrayDynamicIndexing@ specifies 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 of--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also specifies whether shader modules /can/ declare the--- @StorageImageArrayDynamicIndexing@ capability.------ - @shaderClipDistance@ specifies whether clip distances are supported--- in shader code. If this feature is not enabled, any members--- decorated with the @ClipDistance@ built-in decoration /must/ not be--- read from or written to in shader modules. This also specifies--- whether shader modules /can/ declare the @ClipDistance@ capability.------ - @shaderCullDistance@ specifies whether cull distances are supported--- in shader code. If this feature is not enabled, any members--- decorated with the @CullDistance@ built-in decoration /must/ not be--- read from or written to in shader modules. This also specifies--- whether shader modules /can/ declare the @CullDistance@ capability.------ - @shaderFloat64@ specifies 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 the @Float64@--- capability.------ - @shaderInt64@ specifies 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 the @Int64@--- capability.------ - @shaderInt16@ specifies 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 the @Int16@--- capability.------ - @shaderResourceResidency@ specifies whether image operations that--- return resource residency information are supported in shader code.--- If this feature is not enabled, the @OpImageSparse@* instructions--- /must/ not be used in shader code. This also specifies whether--- shader modules /can/ declare the @SparseResidency@ capability. The--- feature requires at least one of the @sparseResidency*@ features to--- be supported.------ - @shaderResourceMinLod@ specifies whether image operations that--- specify the minimum resource LOD are supported in shader code. If--- this feature is not enabled, the @MinLod@ image operand /must/ not--- be used in shader code. This also specifies whether shader modules--- /can/ declare the @MinLod@ capability.------ - @sparseBinding@ specifies 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 the @vkBindBufferMemory@ and--- @vkBindImageMemory@ commands. In this case, buffers and images--- /must/ not be created with @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ and--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ set in the @flags@ member of--- the @VkBufferCreateInfo@ and @VkImageCreateInfo@ structures,--- respectively. Otherwise resource memory /can/ be managed as--- described in--- <{html_spec_relative}#sparsememory-sparseresourcefeatures Sparse Resource Features>.------ - @sparseResidencyBuffer@ specifies whether the device /can/ access--- partially resident buffers. If this feature is not enabled, buffers--- /must/ not be created with @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkBufferCreateInfo@ structure.------ - @sparseResidencyImage2D@ specifies whether the device /can/ access--- partially resident 2D images with 1 sample per pixel. If this--- feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_1_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidencyImage3D@ specifies whether the device /can/ access--- partially resident 3D images. If this feature is not enabled, images--- with an @imageType@ of @VK_IMAGE_TYPE_3D@ /must/ not be created with--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ set in the @flags@ member of--- the @VkImageCreateInfo@ structure.------ - @sparseResidency2Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 2 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_2_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidency4Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 4 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_4_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidency8Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 8 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_8_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidency16Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 16 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_16_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidencyAliased@ specifies whether the physical device /can/--- correctly access data aliased into multiple locations. If this--- feature is not enabled, the @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@--- and @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ enum values /must/ not be--- used in @flags@ members of the @VkBufferCreateInfo@ and--- @VkImageCreateInfo@ structures, respectively.------ - @variableMultisampleRate@ specifies whether all pipelines that will--- be bound to a command buffer during a subpass with no attachments--- /must/ have the same value for--- @VkPipelineMultisampleStateCreateInfo@::@rasterizationSamples@. If--- set to @VK_TRUE@, the implementation supports variable multisample--- rates in a subpass with no attachments. If set to @VK_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.------ - @inheritedQueries@ specifies whether a secondary command buffer--- /may/ be executed while a query is active.------ = See Also--- #_see_also#------ @VkBool32@, 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- 'vkGetPhysicalDeviceFeatures'-data VkPhysicalDeviceFeatures = VkPhysicalDeviceFeatures- { -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkRobustBufferAccess"- vkRobustBufferAccess :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkFullDrawIndexUint32"- vkFullDrawIndexUint32 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkImageCubeArray"- vkImageCubeArray :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkIndependentBlend"- vkIndependentBlend :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkGeometryShader"- vkGeometryShader :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkTessellationShader"- vkTessellationShader :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSampleRateShading"- vkSampleRateShading :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkDualSrcBlend"- vkDualSrcBlend :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkLogicOp"- vkLogicOp :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkMultiDrawIndirect"- vkMultiDrawIndirect :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkDrawIndirectFirstInstance"- vkDrawIndirectFirstInstance :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkDepthClamp"- vkDepthClamp :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkDepthBiasClamp"- vkDepthBiasClamp :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkFillModeNonSolid"- vkFillModeNonSolid :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkDepthBounds"- vkDepthBounds :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkWideLines"- vkWideLines :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkLargePoints"- vkLargePoints :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkAlphaToOne"- vkAlphaToOne :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkMultiViewport"- vkMultiViewport :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSamplerAnisotropy"- vkSamplerAnisotropy :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkTextureCompressionETC2"- vkTextureCompressionETC2 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkTextureCompressionASTC_LDR"- vkTextureCompressionASTC_LDR :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkTextureCompressionBC"- vkTextureCompressionBC :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkOcclusionQueryPrecise"- vkOcclusionQueryPrecise :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkPipelineStatisticsQuery"- vkPipelineStatisticsQuery :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkVertexPipelineStoresAndAtomics"- vkVertexPipelineStoresAndAtomics :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkFragmentStoresAndAtomics"- vkFragmentStoresAndAtomics :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderTessellationAndGeometryPointSize"- vkShaderTessellationAndGeometryPointSize :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderImageGatherExtended"- vkShaderImageGatherExtended :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderStorageImageExtendedFormats"- vkShaderStorageImageExtendedFormats :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderStorageImageMultisample"- vkShaderStorageImageMultisample :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderStorageImageReadWithoutFormat"- vkShaderStorageImageReadWithoutFormat :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderStorageImageWriteWithoutFormat"- vkShaderStorageImageWriteWithoutFormat :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderUniformBufferArrayDynamicIndexing"- vkShaderUniformBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderSampledImageArrayDynamicIndexing"- vkShaderSampledImageArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderStorageBufferArrayDynamicIndexing"- vkShaderStorageBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderStorageImageArrayDynamicIndexing"- vkShaderStorageImageArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderClipDistance"- vkShaderClipDistance :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderCullDistance"- vkShaderCullDistance :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderFloat64"- vkShaderFloat64 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderInt64"- vkShaderInt64 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderInt16"- vkShaderInt16 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderResourceResidency"- vkShaderResourceResidency :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkShaderResourceMinLod"- vkShaderResourceMinLod :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseBinding"- vkSparseBinding :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidencyBuffer"- vkSparseResidencyBuffer :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidencyImage2D"- vkSparseResidencyImage2D :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidencyImage3D"- vkSparseResidencyImage3D :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidency2Samples"- vkSparseResidency2Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidency4Samples"- vkSparseResidency4Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidency8Samples"- vkSparseResidency8Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidency16Samples"- vkSparseResidency16Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkSparseResidencyAliased"- vkSparseResidencyAliased :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkVariableMultisampleRate"- vkVariableMultisampleRate :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vkInheritedQueries"- vkInheritedQueries :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceFeatures where- sizeOf ~_ = 220- alignment ~_ = 4- peek ptr = VkPhysicalDeviceFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- <*> peek (ptr `plusPtr` 104)- <*> peek (ptr `plusPtr` 108)- <*> peek (ptr `plusPtr` 112)- <*> peek (ptr `plusPtr` 116)- <*> peek (ptr `plusPtr` 120)- <*> peek (ptr `plusPtr` 124)- <*> peek (ptr `plusPtr` 128)- <*> peek (ptr `plusPtr` 132)- <*> peek (ptr `plusPtr` 136)- <*> peek (ptr `plusPtr` 140)- <*> peek (ptr `plusPtr` 144)- <*> peek (ptr `plusPtr` 148)- <*> peek (ptr `plusPtr` 152)- <*> peek (ptr `plusPtr` 156)- <*> peek (ptr `plusPtr` 160)- <*> peek (ptr `plusPtr` 164)- <*> peek (ptr `plusPtr` 168)- <*> peek (ptr `plusPtr` 172)- <*> peek (ptr `plusPtr` 176)- <*> peek (ptr `plusPtr` 180)- <*> peek (ptr `plusPtr` 184)- <*> peek (ptr `plusPtr` 188)- <*> peek (ptr `plusPtr` 192)- <*> peek (ptr `plusPtr` 196)- <*> peek (ptr `plusPtr` 200)- <*> peek (ptr `plusPtr` 204)- <*> peek (ptr `plusPtr` 208)- <*> peek (ptr `plusPtr` 212)- <*> peek (ptr `plusPtr` 216)- poke ptr poked = poke (ptr `plusPtr` 0) (vkRobustBufferAccess (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 4) (vkFullDrawIndexUint32 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 8) (vkImageCubeArray (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 12) (vkIndependentBlend (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 16) (vkGeometryShader (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 20) (vkTessellationShader (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 24) (vkSampleRateShading (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 28) (vkDualSrcBlend (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 32) (vkLogicOp (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 36) (vkMultiDrawIndirect (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 40) (vkDrawIndirectFirstInstance (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 44) (vkDepthClamp (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 52) (vkFillModeNonSolid (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 56) (vkDepthBounds (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 60) (vkWideLines (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 64) (vkLargePoints (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 68) (vkAlphaToOne (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 72) (vkMultiViewport (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 76) (vkSamplerAnisotropy (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 80) (vkTextureCompressionETC2 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 84) (vkTextureCompressionASTC_LDR (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 88) (vkTextureCompressionBC (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 92) (vkOcclusionQueryPrecise (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 96) (vkPipelineStatisticsQuery (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 100) (vkVertexPipelineStoresAndAtomics (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 104) (vkFragmentStoresAndAtomics (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 108) (vkShaderTessellationAndGeometryPointSize (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 112) (vkShaderImageGatherExtended (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 116) (vkShaderStorageImageExtendedFormats (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 120) (vkShaderStorageImageMultisample (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 124) (vkShaderStorageImageReadWithoutFormat (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 128) (vkShaderStorageImageWriteWithoutFormat (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 132) (vkShaderUniformBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 136) (vkShaderSampledImageArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 140) (vkShaderStorageBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 144) (vkShaderStorageImageArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 148) (vkShaderClipDistance (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 152) (vkShaderCullDistance (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 156) (vkShaderFloat64 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 160) (vkShaderInt64 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 164) (vkShaderInt16 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 168) (vkShaderResourceResidency (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 172) (vkShaderResourceMinLod (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 176) (vkSparseBinding (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 180) (vkSparseResidencyBuffer (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 184) (vkSparseResidencyImage2D (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 188) (vkSparseResidencyImage3D (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 192) (vkSparseResidency2Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 196) (vkSparseResidency4Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 200) (vkSparseResidency8Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 204) (vkSparseResidency16Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 208) (vkSparseResidencyAliased (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 212) (vkVariableMultisampleRate (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 216) (vkInheritedQueries (poked :: VkPhysicalDeviceFeatures))--- | VkPhysicalDeviceSparseProperties - Structure specifying physical device--- sparse memory properties------ = Description--- #_description#------ = See Also--- #_see_also#------ @VkBool32@, 'VkPhysicalDeviceProperties'-data VkPhysicalDeviceSparseProperties = VkPhysicalDeviceSparseProperties- { -- No documentation found for Nested "VkPhysicalDeviceSparseProperties" "vkResidencyStandard2DBlockShape"- vkResidencyStandard2DBlockShape :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceSparseProperties" "vkResidencyStandard2DMultisampleBlockShape"- vkResidencyStandard2DMultisampleBlockShape :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceSparseProperties" "vkResidencyStandard3DBlockShape"- vkResidencyStandard3DBlockShape :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceSparseProperties" "vkResidencyAlignedMipSize"- vkResidencyAlignedMipSize :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceSparseProperties" "vkResidencyNonResidentStrict"- vkResidencyNonResidentStrict :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceSparseProperties where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkPhysicalDeviceSparseProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkResidencyStandard2DBlockShape (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 4) (vkResidencyStandard2DMultisampleBlockShape (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 8) (vkResidencyStandard3DBlockShape (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 12) (vkResidencyAlignedMipSize (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 16) (vkResidencyNonResidentStrict (poked :: VkPhysicalDeviceSparseProperties))--- | VkPhysicalDeviceLimits - Structure reporting implementation-dependent--- physical device limits------ = Members--- #_members#------ - @maxImageDimension1D@ is the maximum dimension (@width@) supported--- for all images created with an @imageType@ of @VK_IMAGE_TYPE_1D@.------ - @maxImageDimension2D@ is the maximum dimension (@width@ or @height@)--- supported for all images created with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and without @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@--- set in @flags@.------ - @maxImageDimension3D@ is the maximum dimension (@width@, @height@,--- or @depth@) supported for all images created with an @imageType@ of--- @VK_IMAGE_TYPE_3D@.------ - @maxImageDimensionCube@ is the maximum dimension (@width@ or--- @height@) supported for all images created with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and with @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@--- set in @flags@.------ - @maxImageArrayLayers@ is the maximum number of layers--- (@arrayLayers@) for an image.------ - @maxTexelBufferElements@ is the maximum number of addressable texels--- for a buffer view created on a buffer which was created with the--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set in the @usage@ member--- of the @VkBufferCreateInfo@ structure.------ - @maxUniformBufferRange@ is the maximum value that /can/ be specified--- in the @range@ member of any--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo'--- structures passed to a call to--- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets' for--- descriptors of type @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@.------ - @maxStorageBufferRange@ is the maximum value that /can/ be specified--- in the @range@ member of any--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo'--- structures passed to a call to--- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets' for--- descriptors of type @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@.------ - @maxPushConstantsSize@ is the maximum size, in bytes, of the pool of--- push constant memory. For each of the push constant ranges indicated--- by the @pPushConstantRanges@ member of the--- @VkPipelineLayoutCreateInfo@ structure, (@offset@ + @size@) /must/--- be less than or equal to this limit.------ - @maxMemoryAllocationCount@ is the maximum number of device memory--- allocations, as created by--- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory', which /can/--- simultaneously exist.------ - @maxSamplerAllocationCount@ is the maximum number of sampler--- objects, as created by--- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler', which /can/--- simultaneously exist on a device.------ - @bufferImageGranularity@ is the granularity, in bytes, at which--- buffer or linear image resources, and optimal image resources /can/--- be bound to adjacent offsets in the same @VkDeviceMemory@ object--- without aliasing. See--- <{html_spec_relative}#resources-bufferimagegranularity Buffer-Image Granularity>--- for more details.------ - @sparseAddressSpaceSize@ is 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.------ - @maxBoundDescriptorSets@ is the maximum number of descriptor sets--- that /can/ be simultaneously used by a pipeline. All @DescriptorSet@--- decorations in shader modules /must/ have a value less than--- @maxBoundDescriptorSets@. See--- <{html_spec_relative}#descriptorsets-sets {html_spec_relative}#descriptorsets-sets>.------ - @maxPerStageDescriptorSamplers@ is the maximum number of samplers--- that /can/ be accessible to a single shader stage in a pipeline--- layout. Descriptors with a type of @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ count against this--- limit. A descriptor is accessible to a shader stage when the--- @stageFlags@ member of the @VkDescriptorSetLayoutBinding@ structure--- has the bit for that shader stage set. See--- <{html_spec_relative}#descriptorsets-sampler {html_spec_relative}#descriptorsets-sampler>--- and--- <{html_spec_relative}#descriptorsets-combinedimagesampler {html_spec_relative}#descriptorsets-combinedimagesampler>.------ - @maxPerStageDescriptorUniformBuffers@ is the maximum number of--- uniform buffers that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this--- limit. A descriptor is accessible to a shader stage when the--- @stageFlags@ member of the @VkDescriptorSetLayoutBinding@ structure--- has the bit for that shader stage set. See--- <{html_spec_relative}#descriptorsets-uniformbuffer {html_spec_relative}#descriptorsets-uniformbuffer>--- and--- <{html_spec_relative}#descriptorsets-uniformbufferdynamic {html_spec_relative}#descriptorsets-uniformbufferdynamic>.------ - @maxPerStageDescriptorStorageBuffers@ is the maximum number of--- storage buffers that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this--- limit. A descriptor is accessible to a pipeline shader stage when--- the @stageFlags@ member of the @VkDescriptorSetLayoutBinding@--- structure has the bit for that shader stage set. See--- <{html_spec_relative}#descriptorsets-storagebuffer {html_spec_relative}#descriptorsets-storagebuffer>--- and--- <{html_spec_relative}#descriptorsets-storagebufferdynamic {html_spec_relative}#descriptorsets-storagebufferdynamic>.------ - @maxPerStageDescriptorSampledImages@ is the maximum number of--- sampled images that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ count against this limit.--- A descriptor is accessible to a pipeline shader stage when the--- @stageFlags@ member of the @VkDescriptorSetLayoutBinding@ structure--- has the bit for that shader stage set. See--- <{html_spec_relative}#descriptorsets-combinedimagesampler {html_spec_relative}#descriptorsets-combinedimagesampler>,--- <{html_spec_relative}#descriptorsets-sampledimage {html_spec_relative}#descriptorsets-sampledimage>,--- and--- <{html_spec_relative}#descriptorsets-uniformtexelbuffer {html_spec_relative}#descriptorsets-uniformtexelbuffer>.------ - @maxPerStageDescriptorStorageImages@ is the maximum number of--- storage images that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ count against this limit.--- A descriptor is accessible to a pipeline shader stage when the--- @stageFlags@ member of the @VkDescriptorSetLayoutBinding@ structure--- has the bit for that shader stage set. See--- <{html_spec_relative}#descriptorsets-storageimage {html_spec_relative}#descriptorsets-storageimage>,--- and--- <{html_spec_relative}#descriptorsets-storagetexelbuffer {html_spec_relative}#descriptorsets-storagetexelbuffer>.------ - @maxPerStageDescriptorInputAttachments@ is the maximum number of--- input attachments that /can/ be accessible to a single shader stage--- in a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. A--- descriptor is accessible to a pipeline shader stage when the--- @stageFlags@ member of the @VkDescriptorSetLayoutBinding@ structure--- has the bit for that shader stage set. These are only supported for--- the fragment stage. See--- <{html_spec_relative}#descriptorsets-inputattachment {html_spec_relative}#descriptorsets-inputattachment>.------ - @maxPerStageResources@ is the maximum number of resources that /can/--- be accessible to a single shader stage in a pipeline layout.--- Descriptors with a type of--- @VK_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@, or--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. For--- the fragment shader stage the framebuffer color attachments also--- count against this limit.------ - @maxDescriptorSetSamplers@ is 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 of @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ count against this--- limit. See--- <{html_spec_relative}#descriptorsets-sampler {html_spec_relative}#descriptorsets-sampler>--- and--- <{html_spec_relative}#descriptorsets-combinedimagesampler {html_spec_relative}#descriptorsets-combinedimagesampler>.------ - @maxDescriptorSetUniformBuffers@ is 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 of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this--- limit. See--- <{html_spec_relative}#descriptorsets-uniformbuffer {html_spec_relative}#descriptorsets-uniformbuffer>--- and--- <{html_spec_relative}#descriptorsets-uniformbufferdynamic {html_spec_relative}#descriptorsets-uniformbufferdynamic>.------ - @maxDescriptorSetUniformBuffersDynamic@ is 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 of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this--- limit. See--- <{html_spec_relative}#descriptorsets-uniformbufferdynamic {html_spec_relative}#descriptorsets-uniformbufferdynamic>.------ - @maxDescriptorSetStorageBuffers@ is 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 of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this--- limit. See--- <{html_spec_relative}#descriptorsets-storagebuffer {html_spec_relative}#descriptorsets-storagebuffer>--- and--- <{html_spec_relative}#descriptorsets-storagebufferdynamic {html_spec_relative}#descriptorsets-storagebufferdynamic>.------ - @maxDescriptorSetStorageBuffersDynamic@ is 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 of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this--- limit. See--- <{html_spec_relative}#descriptorsets-storagebufferdynamic {html_spec_relative}#descriptorsets-storagebufferdynamic>.------ - @maxDescriptorSetSampledImages@ is 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 of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ count against this limit.--- See--- <{html_spec_relative}#descriptorsets-combinedimagesampler {html_spec_relative}#descriptorsets-combinedimagesampler>,--- <{html_spec_relative}#descriptorsets-sampledimage {html_spec_relative}#descriptorsets-sampledimage>,--- and--- <{html_spec_relative}#descriptorsets-uniformtexelbuffer {html_spec_relative}#descriptorsets-uniformtexelbuffer>.------ - @maxDescriptorSetStorageImages@ is 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 of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ count against this limit.--- See--- <{html_spec_relative}#descriptorsets-storageimage {html_spec_relative}#descriptorsets-storageimage>,--- and--- <{html_spec_relative}#descriptorsets-storagetexelbuffer {html_spec_relative}#descriptorsets-storagetexelbuffer>.------ - @maxDescriptorSetInputAttachments@ is 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 of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. See--- <{html_spec_relative}#descriptorsets-inputattachment {html_spec_relative}#descriptorsets-inputattachment>.------ - @maxVertexInputAttributes@ is the maximum number of vertex input--- attributes that /can/ be specified for a graphics pipeline. These--- are described in the array of @VkVertexInputAttributeDescription@--- structures that are provided at graphics pipeline creation time via--- the @pVertexAttributeDescriptions@ member of the--- @VkPipelineVertexInputStateCreateInfo@ structure. See--- <{html_spec_relative}#fxvertex-attrib {html_spec_relative}#fxvertex-attrib>--- and--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>.------ - @maxVertexInputBindings@ is the maximum number of vertex buffers--- that /can/ be specified for providing vertex attributes to a--- graphics pipeline. These are described in the array of--- @VkVertexInputBindingDescription@ structures that are provided at--- graphics pipeline creation time via the @pVertexBindingDescriptions@--- member of the @VkPipelineVertexInputStateCreateInfo@ structure. The--- @binding@ member of @VkVertexInputBindingDescription@ /must/ be less--- than this limit. See--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>.------ - @maxVertexInputAttributeOffset@ is the maximum vertex input--- attribute offset that /can/ be added to the vertex input binding--- stride. The @offset@ member of the--- @VkVertexInputAttributeDescription@ structure /must/ be less than or--- equal to this limit. See--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>.------ - @maxVertexInputBindingStride@ is the maximum vertex input binding--- stride that /can/ be specified in a vertex input binding. The--- @stride@ member of the @VkVertexInputBindingDescription@ structure--- /must/ be less than or equal to this limit. See--- <{html_spec_relative}#fxvertex-input {html_spec_relative}#fxvertex-input>.------ - @maxVertexOutputComponents@ is the maximum number of components of--- output variables which /can/ be output by a vertex shader. See--- <{html_spec_relative}#shaders-vertex {html_spec_relative}#shaders-vertex>.------ - @maxTessellationGenerationLevel@ is the maximum tessellation--- generation level supported by the fixed-function tessellation--- primitive generator. See--- <{html_spec_relative}#tessellation {html_spec_relative}#tessellation>.------ - @maxTessellationPatchSize@ is the maximum patch size, in vertices,--- of patches that /can/ be processed by the tessellation control--- shader and tessellation primitive generator. The--- @patchControlPoints@ member of the--- @VkPipelineTessellationStateCreateInfo@ structure specified at--- pipeline creation time and the value provided in the--- @OutputVertices@ execution mode of shader modules /must/ be less--- than or equal to this limit. See--- <{html_spec_relative}#tessellation {html_spec_relative}#tessellation>.------ - @maxTessellationControlPerVertexInputComponents@ is the maximum--- number of components of input variables which /can/ be provided as--- per-vertex inputs to the tessellation control shader stage.------ - @maxTessellationControlPerVertexOutputComponents@ is the maximum--- number of components of per-vertex output variables which /can/ be--- output from the tessellation control shader stage.------ - @maxTessellationControlPerPatchOutputComponents@ is the maximum--- number of components of per-patch output variables which /can/ be--- output from the tessellation control shader stage.------ - @maxTessellationControlTotalOutputComponents@ is the maximum total--- number of components of per-vertex and per-patch output variables--- which /can/ be output from the tessellation control shader stage.------ - @maxTessellationEvaluationInputComponents@ is the maximum number of--- components of input variables which /can/ be provided as per-vertex--- inputs to the tessellation evaluation shader stage.------ - @maxTessellationEvaluationOutputComponents@ is the maximum number of--- components of per-vertex output variables which /can/ be output from--- the tessellation evaluation shader stage.------ - @maxGeometryShaderInvocations@ is the maximum invocation count--- supported for instanced geometry shaders. The value provided in the--- @Invocations@ execution mode of shader modules /must/ be less than--- or equal to this limit. See--- <{html_spec_relative}#geometry {html_spec_relative}#geometry>.------ - @maxGeometryInputComponents@ is the maximum number of components of--- input variables which /can/ be provided as inputs to the geometry--- shader stage.------ - @maxGeometryOutputComponents@ is the maximum number of components of--- output variables which /can/ be output from the geometry shader--- stage.------ - @maxGeometryOutputVertices@ is the maximum number of vertices which--- /can/ be emitted by any geometry shader.------ - @maxGeometryTotalOutputComponents@ is the maximum total number of--- components of output, across all emitted vertices, which /can/ be--- output from the geometry shader stage.------ - @maxFragmentInputComponents@ is the maximum number of components of--- input variables which /can/ be provided as inputs to the fragment--- shader stage.------ - @maxFragmentOutputAttachments@ is the maximum number of output--- attachments which /can/ be written to by the fragment shader stage.------ - @maxFragmentDualSrcAttachments@ is 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 {html_spec_relative}#framebuffer-dsb>--- and--- <{html_spec_relative}#features-features-dualSrcBlend dualSrcBlend>.------ - @maxFragmentCombinedOutputResources@ is the total number of storage--- buffers, storage images, and output buffers which /can/ be used in--- the fragment shader stage.------ - @maxComputeSharedMemorySize@ is the maximum total storage size, in--- bytes, of all variables declared with the @WorkgroupLocal@ storage--- class in shader modules (or with the @shared@ storage 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 {html_spec_relative}#dispatch>.------ - @maxComputeWorkGroupInvocations@ is 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 the @LocalSize@ execution--- mode in shader modules and by the object decorated by the--- @WorkgroupSize@ decoration /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.--- The @x@, @y@, and @z@ sizes specified by the @LocalSize@ execution--- mode and by the object decorated by the @WorkgroupSize@ decoration--- in shader modules /must/ be less than or equal to the corresponding--- limit.------ - @subPixelPrecisionBits@ is the number of bits of subpixel precision--- in framebuffer coordinates xf and yf. See--- <{html_spec_relative}#primsrast {html_spec_relative}#primsrast>.------ - @subTexelPrecisionBits@ is the number of bits of precision in the--- division along an axis of an image used for minification and--- magnification filters. 2@subTexelPrecisionBits@ is 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.------ - @mipmapPrecisionBits@ is 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.--- 2@mipmapPrecisionBits@ is 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).------ - @maxDrawIndexedIndexValue@ is 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--- <{html_spec_relative}#features-features-fullDrawIndexUint32 fullDrawIndexUint32>.------ - @maxDrawIndirectCount@ is the maximum draw count that is supported--- for indirect draw calls. See--- <{html_spec_relative}#features-features-multiDrawIndirect multiDrawIndirect>.------ - @maxSamplerLodBias@ is the maximum absolute sampler LOD bias. The--- sum of the @mipLodBias@ member of the @VkSamplerCreateInfo@--- structure and the @Bias@ operand of image sampling operations in--- shader modules (or 0 if no @Bias@ operand is provided to an image--- sampling operation) are clamped to the range--- [-@maxSamplerLodBias@,+@maxSamplerLodBias@]. See--- <{html_spec_relative}#samplers-mipLodBias {html_spec_relative}#samplers-mipLodBias>.------ - @maxSamplerAnisotropy@ is the maximum degree of sampler anisotropy.--- The maximum degree of anisotropic filtering used for an image--- sampling operation is the minimum of the @maxAnisotropy@ member of--- the @VkSamplerCreateInfo@ structure and this limit. See--- <{html_spec_relative}#samplers-maxAnisotropy {html_spec_relative}#samplers-maxAnisotropy>.------ - @maxViewports@ is the maximum number of active viewports. The--- @viewportCount@ member of the @VkPipelineViewportStateCreateInfo@--- structure 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--- <{html_spec_relative}#vertexpostproc-viewport 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], where @size@ =--- max(@maxViewportDimensions@[0], @maxViewportDimensions@[1]). See--- <{html_spec_relative}#vertexpostproc-viewport Controlling the Viewport>.------ __Note__------ The intent of the @viewportBoundsRange@ limit 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.------ - @viewportSubPixelBits@ is 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.------ - @minMemoryMapAlignment@ is the minimum /required/ alignment, in--- bytes, of host visible memory allocations within the host address--- space. When mapping a memory allocation with--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory', subtracting @offset@--- bytes from the returned pointer will always produce an integer--- multiple of this limit. See--- <{html_spec_relative}#memory-device-hostaccess {html_spec_relative}#memory-device-hostaccess>.------ - @minTexelBufferOffsetAlignment@ is the minimum /required/ alignment,--- in bytes, for the @offset@ member of the @VkBufferViewCreateInfo@--- structure for texel buffers. When a buffer view is created for a--- buffer which was created with--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set in the @usage@ member--- of the @VkBufferCreateInfo@ structure, the @offset@ /must/ be an--- integer multiple of this limit.------ - @minUniformBufferOffsetAlignment@ is the minimum /required/--- alignment, in bytes, for the @offset@ member of the--- @VkDescriptorBufferInfo@ structure for uniform buffers. When a--- descriptor of type @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ is updated, the @offset@--- /must/ be an integer multiple of this limit. Similarly, dynamic--- offsets for uniform buffers /must/ be multiples of this limit.------ - @minStorageBufferOffsetAlignment@ is the minimum /required/--- alignment, in bytes, for the @offset@ member of the--- @VkDescriptorBufferInfo@ structure for storage buffers. When a--- descriptor of type @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ is updated, the @offset@--- /must/ be an integer multiple of this limit. Similarly, dynamic--- offsets for storage buffers /must/ be multiples of this limit.------ - @minTexelOffset@ is the minimum offset value for the @ConstOffset@--- image operand of any of the @OpImageSample@* or @OpImageFetch@*--- image instructions.------ - @maxTexelOffset@ is the maximum offset value for the @ConstOffset@--- image operand of any of the @OpImageSample@* or @OpImageFetch@*--- image instructions.------ - @minTexelGatherOffset@ is the minimum offset value for the @Offset@--- or @ConstOffsets@ image operands of any of the @OpImage@*@Gather@--- image instructions.------ - @maxTexelGatherOffset@ is the maximum offset value for the @Offset@--- or @ConstOffsets@ image operands of any of the @OpImage@*@Gather@--- image instructions.------ - @minInterpolationOffset@ is the minimum negative offset value for--- the @offset@ operand of the @InterpolateAtOffset@ extended--- instruction.------ - @maxInterpolationOffset@ is the maximum positive offset value for--- the @offset@ operand of the @InterpolateAtOffset@ extended--- instruction.------ - @subPixelInterpolationOffsetBits@ is the number of subpixel--- fractional bits that the @x@ and @y@ offsets to the--- @InterpolateAtOffset@ extended instruction /may/ be rounded to as--- fixed-point values.------ - @maxFramebufferWidth@ is the maximum width for a framebuffer. The--- @width@ member of the @VkFramebufferCreateInfo@ structure /must/ be--- less than or equal to this limit.------ - @maxFramebufferHeight@ is the maximum height for a framebuffer. The--- @height@ member of the @VkFramebufferCreateInfo@ structure /must/ be--- less than or equal to this limit.------ - @maxFramebufferLayers@ is the maximum layer count for a layered--- framebuffer. The @layers@ member of the @VkFramebufferCreateInfo@--- structure /must/ be less than or equal to this limit.------ - @framebufferColorSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating 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.------ - @framebufferDepthSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the supported depth sample counts--- for all framebuffer depth\/stencil attachments, when the format--- includes a depth component.------ - @framebufferStencilSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the supported stencil sample--- counts for all framebuffer depth\/stencil attachments, when the--- format includes a stencil component.------ - @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the supported sample counts for a--- framebuffer with no attachments.------ - @maxColorAttachments@ is the maximum number of color attachments--- that /can/ be used by a subpass in a render pass. The--- @colorAttachmentCount@ member of the @VkSubpassDescription@--- structure /must/ be less than or equal to this limit.------ - @sampledImageColorSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample counts supported for--- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@--- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and a non-integer color--- format.------ - @sampledImageIntegerSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample counts supported for--- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@--- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and an integer color--- format.------ - @sampledImageDepthSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample counts supported for--- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@--- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and a depth format.------ - @sampledImageStencilSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample supported for all 2D--- images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@ containing--- @VK_IMAGE_USAGE_SAMPLED_BIT@, and a stencil format.------ - @storageImageSampleCounts@ is a bitmask1 of 'VkSampleCountFlagBits'--- indicating the sample counts supported for all 2D images created--- with @VK_IMAGE_TILING_OPTIMAL@, and @usage@ containing--- @VK_IMAGE_USAGE_STORAGE_BIT@.------ - @maxSampleMaskWords@ is the maximum number of array elements of a--- variable decorated with the @SampleMask@ built-in decoration.------ - @timestampComputeAndGraphics@ specifies support for timestamps on--- all graphics and compute queues. If this limit is set to @VK_TRUE@,--- all queues that advertise the @VK_QUEUE_GRAPHICS_BIT@ or--- @VK_QUEUE_COMPUTE_BIT@ in the--- @VkQueueFamilyProperties@::@queueFlags@ support--- @VkQueueFamilyProperties@::@timestampValidBits@ of at least 36. See--- <{html_spec_relative}#queries-timestamps Timestamp Queries>.------ - @timestampPeriod@ is the number of nanoseconds /required/ for a--- timestamp query to be incremented by 1. See--- <{html_spec_relative}#queries-timestamps Timestamp Queries>.------ - @maxClipDistances@ is the maximum number of clip distances that--- /can/ be used in a single shader stage. The size of any array--- declared with the @ClipDistance@ built-in decoration in a shader--- module /must/ be less than or equal to this limit.------ - @maxCullDistances@ is the maximum number of cull distances that--- /can/ be used in a single shader stage. The size of any array--- declared with the @CullDistance@ built-in decoration in a shader--- module /must/ be less than or equal to this limit.------ - @maxCombinedClipAndCullDistances@ is 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 the--- @ClipDistance@ and @CullDistance@ built-in decoration used by a--- single shader stage in a shader module /must/ be less than or equal--- to this limit.------ - @discreteQueuePriorities@ is the number of discrete priorities that--- /can/ be assigned to a queue based on the value of each member of--- @VkDeviceQueueCreateInfo@::@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 {html_spec_relative}#devsandqueues-priority>.------ - @pointSizeRange@[2] is the range [@minimum@,@maximum@] of supported--- sizes for points. Values written to variables decorated with the--- @PointSize@ built-in decoration are clamped to this range.------ - @lineWidthRange@[2] is the range [@minimum@,@maximum@] of supported--- widths for lines. Values specified by the @lineWidth@ member of the--- @VkPipelineRasterizationStateCreateInfo@ or the @lineWidth@--- parameter to @vkCmdSetLineWidth@ are clamped to this range.------ - @pointSizeGranularity@ is the granularity of supported point sizes.--- Not all point sizes in the range defined by @pointSizeRange@ are--- supported. This limit specifies the granularity (or increment)--- between successive supported point sizes.------ - @lineWidthGranularity@ is the granularity of supported line widths.--- Not all line widths in the range defined by @lineWidthRange@ are--- supported. This limit specifies the granularity (or increment)--- between successive supported line widths.------ - @strictLines@ specifies whether lines are rasterized according to--- the preferred method of rasterization. If set to @VK_FALSE@, lines--- /may/ be rasterized under a relaxed set of rules. If set to--- @VK_TRUE@, lines are rasterized as per the strict definition. See--- <{html_spec_relative}#primsrast-lines-basic Basic Line Segment Rasterization>.------ - @standardSampleLocations@ specifies whether rasterization uses the--- standard sample locations as documented in--- <{html_spec_relative}#primsrast-multisampling Multisampling>. If set--- to @VK_TRUE@, the implementation uses the documented sample--- locations. If set to @VK_FALSE@, the implementation /may/ use--- different sample locations.------ - @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset--- alignment in bytes for @vkCmdCopyBufferToImage@ and--- @vkCmdCopyImageToBuffer@. The per texel alignment requirements are--- enforced, but applications /should/ use the optimal alignment for--- optimal performance and power use.------ - @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch--- alignment in bytes for @vkCmdCopyBufferToImage@ and--- @vkCmdCopyImageToBuffer@. 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.------ - @nonCoherentAtomSize@ is the size and alignment in bytes that bounds--- concurrent access to--- <{html_spec_relative}#memory-device-hostaccess host-mapped device memory>.------ = Description--- #_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 using--- 'vkGetPhysicalDeviceImageFormatProperties' as described in--- <{html_spec_relative}#features-supported-sample-counts Supported Sample Counts>.------ = See Also--- #_see_also#------ @VkBool32@, @VkDeviceSize@, 'VkPhysicalDeviceProperties',--- 'VkSampleCountFlags'-data VkPhysicalDeviceLimits = VkPhysicalDeviceLimits- { -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxImageDimension1D"- vkMaxImageDimension1D :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxImageDimension2D"- vkMaxImageDimension2D :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxImageDimension3D"- vkMaxImageDimension3D :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxImageDimensionCube"- vkMaxImageDimensionCube :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxImageArrayLayers"- vkMaxImageArrayLayers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTexelBufferElements"- vkMaxTexelBufferElements :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxUniformBufferRange"- vkMaxUniformBufferRange :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxStorageBufferRange"- vkMaxStorageBufferRange :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPushConstantsSize"- vkMaxPushConstantsSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxMemoryAllocationCount"- vkMaxMemoryAllocationCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxSamplerAllocationCount"- vkMaxSamplerAllocationCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkBufferImageGranularity"- vkBufferImageGranularity :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSparseAddressSpaceSize"- vkSparseAddressSpaceSize :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxBoundDescriptorSets"- vkMaxBoundDescriptorSets :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageDescriptorSamplers"- vkMaxPerStageDescriptorSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageDescriptorUniformBuffers"- vkMaxPerStageDescriptorUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageDescriptorStorageBuffers"- vkMaxPerStageDescriptorStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageDescriptorSampledImages"- vkMaxPerStageDescriptorSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageDescriptorStorageImages"- vkMaxPerStageDescriptorStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageDescriptorInputAttachments"- vkMaxPerStageDescriptorInputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxPerStageResources"- vkMaxPerStageResources :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetSamplers"- vkMaxDescriptorSetSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetUniformBuffers"- vkMaxDescriptorSetUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetUniformBuffersDynamic"- vkMaxDescriptorSetUniformBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetStorageBuffers"- vkMaxDescriptorSetStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetStorageBuffersDynamic"- vkMaxDescriptorSetStorageBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetSampledImages"- vkMaxDescriptorSetSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetStorageImages"- vkMaxDescriptorSetStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDescriptorSetInputAttachments"- vkMaxDescriptorSetInputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxVertexInputAttributes"- vkMaxVertexInputAttributes :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxVertexInputBindings"- vkMaxVertexInputBindings :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxVertexInputAttributeOffset"- vkMaxVertexInputAttributeOffset :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxVertexInputBindingStride"- vkMaxVertexInputBindingStride :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxVertexOutputComponents"- vkMaxVertexOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationGenerationLevel"- vkMaxTessellationGenerationLevel :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationPatchSize"- vkMaxTessellationPatchSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationControlPerVertexInputComponents"- vkMaxTessellationControlPerVertexInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationControlPerVertexOutputComponents"- vkMaxTessellationControlPerVertexOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationControlPerPatchOutputComponents"- vkMaxTessellationControlPerPatchOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationControlTotalOutputComponents"- vkMaxTessellationControlTotalOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationEvaluationInputComponents"- vkMaxTessellationEvaluationInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTessellationEvaluationOutputComponents"- vkMaxTessellationEvaluationOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxGeometryShaderInvocations"- vkMaxGeometryShaderInvocations :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxGeometryInputComponents"- vkMaxGeometryInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxGeometryOutputComponents"- vkMaxGeometryOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxGeometryOutputVertices"- vkMaxGeometryOutputVertices :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxGeometryTotalOutputComponents"- vkMaxGeometryTotalOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFragmentInputComponents"- vkMaxFragmentInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFragmentOutputAttachments"- vkMaxFragmentOutputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFragmentDualSrcAttachments"- vkMaxFragmentDualSrcAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFragmentCombinedOutputResources"- vkMaxFragmentCombinedOutputResources :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxComputeSharedMemorySize"- vkMaxComputeSharedMemorySize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxComputeWorkGroupCount"- vkMaxComputeWorkGroupCount :: Vector 3 Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxComputeWorkGroupInvocations"- vkMaxComputeWorkGroupInvocations :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxComputeWorkGroupSize"- vkMaxComputeWorkGroupSize :: Vector 3 Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSubPixelPrecisionBits"- vkSubPixelPrecisionBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSubTexelPrecisionBits"- vkSubTexelPrecisionBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMipmapPrecisionBits"- vkMipmapPrecisionBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDrawIndexedIndexValue"- vkMaxDrawIndexedIndexValue :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxDrawIndirectCount"- vkMaxDrawIndirectCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxSamplerLodBias"- vkMaxSamplerLodBias :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxSamplerAnisotropy"- vkMaxSamplerAnisotropy :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxViewports"- vkMaxViewports :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxViewportDimensions"- vkMaxViewportDimensions :: Vector 2 Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkViewportBoundsRange"- vkViewportBoundsRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkViewportSubPixelBits"- vkViewportSubPixelBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinMemoryMapAlignment"- vkMinMemoryMapAlignment :: CSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinTexelBufferOffsetAlignment"- vkMinTexelBufferOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinUniformBufferOffsetAlignment"- vkMinUniformBufferOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinStorageBufferOffsetAlignment"- vkMinStorageBufferOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinTexelOffset"- vkMinTexelOffset :: Int32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTexelOffset"- vkMaxTexelOffset :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinTexelGatherOffset"- vkMinTexelGatherOffset :: Int32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxTexelGatherOffset"- vkMaxTexelGatherOffset :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMinInterpolationOffset"- vkMinInterpolationOffset :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxInterpolationOffset"- vkMaxInterpolationOffset :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSubPixelInterpolationOffsetBits"- vkSubPixelInterpolationOffsetBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFramebufferWidth"- vkMaxFramebufferWidth :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFramebufferHeight"- vkMaxFramebufferHeight :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxFramebufferLayers"- vkMaxFramebufferLayers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkFramebufferColorSampleCounts"- vkFramebufferColorSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkFramebufferDepthSampleCounts"- vkFramebufferDepthSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkFramebufferStencilSampleCounts"- vkFramebufferStencilSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkFramebufferNoAttachmentsSampleCounts"- vkFramebufferNoAttachmentsSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxColorAttachments"- vkMaxColorAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSampledImageColorSampleCounts"- vkSampledImageColorSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSampledImageIntegerSampleCounts"- vkSampledImageIntegerSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSampledImageDepthSampleCounts"- vkSampledImageDepthSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkSampledImageStencilSampleCounts"- vkSampledImageStencilSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkStorageImageSampleCounts"- vkStorageImageSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxSampleMaskWords"- vkMaxSampleMaskWords :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkTimestampComputeAndGraphics"- vkTimestampComputeAndGraphics :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkTimestampPeriod"- vkTimestampPeriod :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxClipDistances"- vkMaxClipDistances :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxCullDistances"- vkMaxCullDistances :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkMaxCombinedClipAndCullDistances"- vkMaxCombinedClipAndCullDistances :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkDiscreteQueuePriorities"- vkDiscreteQueuePriorities :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkPointSizeRange"- vkPointSizeRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkLineWidthRange"- vkLineWidthRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkPointSizeGranularity"- vkPointSizeGranularity :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkLineWidthGranularity"- vkLineWidthGranularity :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkStrictLines"- vkStrictLines :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkStandardSampleLocations"- vkStandardSampleLocations :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkOptimalBufferCopyOffsetAlignment"- vkOptimalBufferCopyOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkOptimalBufferCopyRowPitchAlignment"- vkOptimalBufferCopyRowPitchAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "vkNonCoherentAtomSize"- vkNonCoherentAtomSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceLimits where- sizeOf ~_ = 504- alignment ~_ = 8- peek ptr = VkPhysicalDeviceLimits <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- <*> peek (ptr `plusPtr` 104)- <*> peek (ptr `plusPtr` 108)- <*> peek (ptr `plusPtr` 112)- <*> peek (ptr `plusPtr` 116)- <*> peek (ptr `plusPtr` 120)- <*> peek (ptr `plusPtr` 124)- <*> peek (ptr `plusPtr` 128)- <*> peek (ptr `plusPtr` 132)- <*> peek (ptr `plusPtr` 136)- <*> peek (ptr `plusPtr` 140)- <*> peek (ptr `plusPtr` 144)- <*> peek (ptr `plusPtr` 148)- <*> peek (ptr `plusPtr` 152)- <*> peek (ptr `plusPtr` 156)- <*> peek (ptr `plusPtr` 160)- <*> peek (ptr `plusPtr` 164)- <*> peek (ptr `plusPtr` 168)- <*> peek (ptr `plusPtr` 172)- <*> peek (ptr `plusPtr` 176)- <*> peek (ptr `plusPtr` 180)- <*> peek (ptr `plusPtr` 184)- <*> peek (ptr `plusPtr` 188)- <*> peek (ptr `plusPtr` 192)- <*> peek (ptr `plusPtr` 196)- <*> peek (ptr `plusPtr` 200)- <*> peek (ptr `plusPtr` 204)- <*> peek (ptr `plusPtr` 208)- <*> peek (ptr `plusPtr` 212)- <*> peek (ptr `plusPtr` 216)- <*> peek (ptr `plusPtr` 220)- <*> peek (ptr `plusPtr` 232)- <*> peek (ptr `plusPtr` 236)- <*> peek (ptr `plusPtr` 248)- <*> peek (ptr `plusPtr` 252)- <*> peek (ptr `plusPtr` 256)- <*> peek (ptr `plusPtr` 260)- <*> peek (ptr `plusPtr` 264)- <*> peek (ptr `plusPtr` 268)- <*> peek (ptr `plusPtr` 272)- <*> peek (ptr `plusPtr` 276)- <*> peek (ptr `plusPtr` 280)- <*> peek (ptr `plusPtr` 288)- <*> peek (ptr `plusPtr` 296)- <*> peek (ptr `plusPtr` 304)- <*> peek (ptr `plusPtr` 312)- <*> peek (ptr `plusPtr` 320)- <*> peek (ptr `plusPtr` 328)- <*> peek (ptr `plusPtr` 336)- <*> peek (ptr `plusPtr` 340)- <*> peek (ptr `plusPtr` 344)- <*> peek (ptr `plusPtr` 348)- <*> peek (ptr `plusPtr` 352)- <*> peek (ptr `plusPtr` 356)- <*> peek (ptr `plusPtr` 360)- <*> peek (ptr `plusPtr` 364)- <*> peek (ptr `plusPtr` 368)- <*> peek (ptr `plusPtr` 372)- <*> peek (ptr `plusPtr` 376)- <*> peek (ptr `plusPtr` 380)- <*> peek (ptr `plusPtr` 384)- <*> peek (ptr `plusPtr` 388)- <*> peek (ptr `plusPtr` 392)- <*> peek (ptr `plusPtr` 396)- <*> peek (ptr `plusPtr` 400)- <*> peek (ptr `plusPtr` 404)- <*> peek (ptr `plusPtr` 408)- <*> peek (ptr `plusPtr` 412)- <*> peek (ptr `plusPtr` 416)- <*> peek (ptr `plusPtr` 420)- <*> peek (ptr `plusPtr` 424)- <*> peek (ptr `plusPtr` 428)- <*> peek (ptr `plusPtr` 432)- <*> peek (ptr `plusPtr` 436)- <*> peek (ptr `plusPtr` 440)- <*> peek (ptr `plusPtr` 444)- <*> peek (ptr `plusPtr` 452)- <*> peek (ptr `plusPtr` 460)- <*> peek (ptr `plusPtr` 464)- <*> peek (ptr `plusPtr` 468)- <*> peek (ptr `plusPtr` 472)- <*> peek (ptr `plusPtr` 480)- <*> peek (ptr `plusPtr` 488)- <*> peek (ptr `plusPtr` 496)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMaxImageDimension1D (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 4) (vkMaxImageDimension2D (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 8) (vkMaxImageDimension3D (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 12) (vkMaxImageDimensionCube (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 16) (vkMaxImageArrayLayers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 20) (vkMaxTexelBufferElements (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 24) (vkMaxUniformBufferRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 28) (vkMaxStorageBufferRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 32) (vkMaxPushConstantsSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 36) (vkMaxMemoryAllocationCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 40) (vkMaxSamplerAllocationCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 48) (vkBufferImageGranularity (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 56) (vkSparseAddressSpaceSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 64) (vkMaxBoundDescriptorSets (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 68) (vkMaxPerStageDescriptorSamplers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 72) (vkMaxPerStageDescriptorUniformBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 76) (vkMaxPerStageDescriptorStorageBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 80) (vkMaxPerStageDescriptorSampledImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 84) (vkMaxPerStageDescriptorStorageImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 88) (vkMaxPerStageDescriptorInputAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 92) (vkMaxPerStageResources (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 96) (vkMaxDescriptorSetSamplers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 100) (vkMaxDescriptorSetUniformBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 104) (vkMaxDescriptorSetUniformBuffersDynamic (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 108) (vkMaxDescriptorSetStorageBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 112) (vkMaxDescriptorSetStorageBuffersDynamic (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 116) (vkMaxDescriptorSetSampledImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 120) (vkMaxDescriptorSetStorageImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 124) (vkMaxDescriptorSetInputAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 128) (vkMaxVertexInputAttributes (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 132) (vkMaxVertexInputBindings (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 136) (vkMaxVertexInputAttributeOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 140) (vkMaxVertexInputBindingStride (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 144) (vkMaxVertexOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 148) (vkMaxTessellationGenerationLevel (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 152) (vkMaxTessellationPatchSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 156) (vkMaxTessellationControlPerVertexInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 160) (vkMaxTessellationControlPerVertexOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 164) (vkMaxTessellationControlPerPatchOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 168) (vkMaxTessellationControlTotalOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 172) (vkMaxTessellationEvaluationInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 176) (vkMaxTessellationEvaluationOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 180) (vkMaxGeometryShaderInvocations (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 184) (vkMaxGeometryInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 188) (vkMaxGeometryOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 192) (vkMaxGeometryOutputVertices (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 196) (vkMaxGeometryTotalOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 200) (vkMaxFragmentInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 204) (vkMaxFragmentOutputAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 208) (vkMaxFragmentDualSrcAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 212) (vkMaxFragmentCombinedOutputResources (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 216) (vkMaxComputeSharedMemorySize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 220) (vkMaxComputeWorkGroupCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 232) (vkMaxComputeWorkGroupInvocations (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 236) (vkMaxComputeWorkGroupSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 248) (vkSubPixelPrecisionBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 252) (vkSubTexelPrecisionBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 256) (vkMipmapPrecisionBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 260) (vkMaxDrawIndexedIndexValue (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 264) (vkMaxDrawIndirectCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 268) (vkMaxSamplerLodBias (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 272) (vkMaxSamplerAnisotropy (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 276) (vkMaxViewports (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 280) (vkMaxViewportDimensions (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 288) (vkViewportBoundsRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 296) (vkViewportSubPixelBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 304) (vkMinMemoryMapAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 312) (vkMinTexelBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 320) (vkMinUniformBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 328) (vkMinStorageBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 336) (vkMinTexelOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 340) (vkMaxTexelOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 344) (vkMinTexelGatherOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 348) (vkMaxTexelGatherOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 352) (vkMinInterpolationOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 356) (vkMaxInterpolationOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 360) (vkSubPixelInterpolationOffsetBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 364) (vkMaxFramebufferWidth (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 368) (vkMaxFramebufferHeight (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 372) (vkMaxFramebufferLayers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 376) (vkFramebufferColorSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 380) (vkFramebufferDepthSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 384) (vkFramebufferStencilSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 388) (vkFramebufferNoAttachmentsSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 392) (vkMaxColorAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 396) (vkSampledImageColorSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 400) (vkSampledImageIntegerSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 404) (vkSampledImageDepthSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 408) (vkSampledImageStencilSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 412) (vkStorageImageSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 416) (vkMaxSampleMaskWords (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 420) (vkTimestampComputeAndGraphics (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 424) (vkTimestampPeriod (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 428) (vkMaxClipDistances (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 432) (vkMaxCullDistances (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 436) (vkMaxCombinedClipAndCullDistances (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 440) (vkDiscreteQueuePriorities (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 444) (vkPointSizeRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 452) (vkLineWidthRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 460) (vkPointSizeGranularity (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 464) (vkLineWidthGranularity (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 468) (vkStrictLines (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 472) (vkStandardSampleLocations (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 480) (vkOptimalBufferCopyOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 488) (vkOptimalBufferCopyRowPitchAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 496) (vkNonCoherentAtomSize (poked :: VkPhysicalDeviceLimits))--- | VkQueueFlags - Bitmask of VkQueueFlagBits------ = Description--- #_description#------ @VkQueueFlags@ is a bitmask type for setting a mask of zero or more--- 'VkQueueFlagBits'.------ = See Also--- #_see_also#------ 'VkQueueFamilyProperties', 'VkQueueFlagBits'-type VkQueueFlags = VkQueueFlagBits--- | VkMemoryPropertyFlags - Bitmask of VkMemoryPropertyFlagBits------ = Description--- #_description#------ @VkMemoryPropertyFlags@ is a bitmask type for setting a mask of zero or--- more 'VkMemoryPropertyFlagBits'.------ = See Also--- #_see_also#------ 'VkMemoryPropertyFlagBits', 'VkMemoryType'-type VkMemoryPropertyFlags = VkMemoryPropertyFlagBits--- | VkMemoryHeapFlags - Bitmask of VkMemoryHeapFlagBits------ = Description--- #_description#------ @VkMemoryHeapFlags@ is a bitmask type for setting a mask of zero or more--- 'VkMemoryHeapFlagBits'.------ = See Also--- #_see_also#------ 'VkMemoryHeap', 'VkMemoryHeapFlagBits'-type VkMemoryHeapFlags = VkMemoryHeapFlagBits--- | VkImageUsageFlags - Bitmask of VkImageUsageFlagBits------ = Description--- #_description#------ @VkImageUsageFlags@ is a bitmask type for setting a mask of zero or more--- 'VkImageUsageFlagBits'.------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'VkImageUsageFlagBits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-type VkImageUsageFlags = VkImageUsageFlagBits--- | VkImageCreateFlags - Bitmask of VkImageCreateFlagBits------ = Description--- #_description#------ @VkImageCreateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkImageCreateFlagBits'.------ = See Also--- #_see_also#------ 'VkImageCreateFlagBits',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties'-type VkImageCreateFlags = VkImageCreateFlagBits--- | VkFormatFeatureFlags - Bitmask of VkFormatFeatureFlagBits------ = Description--- #_description#------ @VkFormatFeatureFlags@ is a bitmask type for setting a mask of zero or--- more 'VkFormatFeatureFlagBits'.------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'VkFormatFeatureFlagBits', 'VkFormatProperties'-type VkFormatFeatureFlags = VkFormatFeatureFlagBits--- | VkSampleCountFlags - Bitmask of VkSampleCountFlagBits------ = Description--- #_description#------ @VkSampleCountFlags@ is a bitmask type for setting a mask of zero or--- more 'VkSampleCountFlagBits'.------ = See Also--- #_see_also#------ 'VkImageFormatProperties', 'VkPhysicalDeviceLimits',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'VkSampleCountFlagBits'-type VkSampleCountFlags = VkSampleCountFlagBits--- | VkDeviceSize - Vulkan device memory size and offsets------ = Description--- #_description#------ = See Also--- #_see_also#+--+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'vkGetPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'+newtype VkImageTiling = VkImageTiling Int32+ deriving (Eq, Ord, Storable)++instance Show VkImageTiling where+ showsPrec _ VK_IMAGE_TILING_OPTIMAL = showString "VK_IMAGE_TILING_OPTIMAL"+ showsPrec _ VK_IMAGE_TILING_LINEAR = showString "VK_IMAGE_TILING_LINEAR"+ showsPrec p (VkImageTiling x) = showParen (p >= 11) (showString "VkImageTiling " . showsPrec 11 x)++instance Read VkImageTiling where+ readPrec = parens ( choose [ ("VK_IMAGE_TILING_OPTIMAL", pure VK_IMAGE_TILING_OPTIMAL)+ , ("VK_IMAGE_TILING_LINEAR", pure VK_IMAGE_TILING_LINEAR)+ ] ++++ prec 10 (do+ expectP (Ident "VkImageTiling")+ v <- step readPrec+ pure (VkImageTiling v)+ )+ )++-- | @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_OPTIMAL :: VkImageTiling+pattern VK_IMAGE_TILING_OPTIMAL = VkImageTiling 0++-- | @VK_IMAGE_TILING_LINEAR@ specifies linear tiling (texels are laid out in+-- memory in row-major order, possibly with some padding on each row).+pattern VK_IMAGE_TILING_LINEAR :: VkImageTiling+pattern VK_IMAGE_TILING_LINEAR = VkImageTiling 1+-- ** VkImageType++-- | VkImageType - Specifies the type of an image object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'vkGetPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'+newtype VkImageType = VkImageType Int32+ deriving (Eq, Ord, Storable)++instance Show VkImageType where+ showsPrec _ VK_IMAGE_TYPE_1D = showString "VK_IMAGE_TYPE_1D"+ showsPrec _ VK_IMAGE_TYPE_2D = showString "VK_IMAGE_TYPE_2D"+ showsPrec _ VK_IMAGE_TYPE_3D = showString "VK_IMAGE_TYPE_3D"+ showsPrec p (VkImageType x) = showParen (p >= 11) (showString "VkImageType " . showsPrec 11 x)++instance Read VkImageType where+ readPrec = parens ( choose [ ("VK_IMAGE_TYPE_1D", pure VK_IMAGE_TYPE_1D)+ , ("VK_IMAGE_TYPE_2D", pure VK_IMAGE_TYPE_2D)+ , ("VK_IMAGE_TYPE_3D", pure VK_IMAGE_TYPE_3D)+ ] ++++ prec 10 (do+ expectP (Ident "VkImageType")+ v <- step readPrec+ pure (VkImageType v)+ )+ )++-- | @VK_IMAGE_TYPE_1D@ specifies a one-dimensional image.+pattern VK_IMAGE_TYPE_1D :: VkImageType+pattern VK_IMAGE_TYPE_1D = VkImageType 0++-- | @VK_IMAGE_TYPE_2D@ specifies a two-dimensional image.+pattern VK_IMAGE_TYPE_2D :: VkImageType+pattern VK_IMAGE_TYPE_2D = VkImageType 1++-- | @VK_IMAGE_TYPE_3D@ specifies a three-dimensional image.+pattern VK_IMAGE_TYPE_3D :: VkImageType+pattern VK_IMAGE_TYPE_3D = VkImageType 2+-- ** VkPhysicalDeviceType++-- | 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+--+-- 'VkPhysicalDeviceProperties'+newtype VkPhysicalDeviceType = VkPhysicalDeviceType Int32+ deriving (Eq, Ord, Storable)++instance Show VkPhysicalDeviceType where+ showsPrec _ VK_PHYSICAL_DEVICE_TYPE_OTHER = showString "VK_PHYSICAL_DEVICE_TYPE_OTHER"+ showsPrec _ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"+ showsPrec _ VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"+ showsPrec _ VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"+ showsPrec _ VK_PHYSICAL_DEVICE_TYPE_CPU = showString "VK_PHYSICAL_DEVICE_TYPE_CPU"+ showsPrec p (VkPhysicalDeviceType x) = showParen (p >= 11) (showString "VkPhysicalDeviceType " . showsPrec 11 x)++instance Read VkPhysicalDeviceType where+ readPrec = parens ( choose [ ("VK_PHYSICAL_DEVICE_TYPE_OTHER", pure VK_PHYSICAL_DEVICE_TYPE_OTHER)+ , ("VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", pure VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)+ , ("VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", pure VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)+ , ("VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU", pure VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)+ , ("VK_PHYSICAL_DEVICE_TYPE_CPU", pure VK_PHYSICAL_DEVICE_TYPE_CPU)+ ] ++++ prec 10 (do+ expectP (Ident "VkPhysicalDeviceType")+ v <- step readPrec+ pure (VkPhysicalDeviceType v)+ )+ )++-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_OTHER"+pattern VK_PHYSICAL_DEVICE_TYPE_OTHER :: VkPhysicalDeviceType+pattern VK_PHYSICAL_DEVICE_TYPE_OTHER = VkPhysicalDeviceType 0++-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"+pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU :: VkPhysicalDeviceType+pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = VkPhysicalDeviceType 1++-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"+pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU :: VkPhysicalDeviceType+pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = VkPhysicalDeviceType 2++-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"+pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU :: VkPhysicalDeviceType+pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = VkPhysicalDeviceType 3++-- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_CPU"+pattern VK_PHYSICAL_DEVICE_TYPE_CPU :: VkPhysicalDeviceType+pattern VK_PHYSICAL_DEVICE_TYPE_CPU = VkPhysicalDeviceType 4+-- ** VkSystemAllocationScope++-- | VkSystemAllocationScope - Allocation scope+--+-- = Description+--+-- - @VK_SYSTEM_ALLOCATION_SCOPE_COMMAND@ specifies that the allocation+-- is scoped to the duration of the Vulkan command.+--+-- - @VK_SYSTEM_ALLOCATION_SCOPE_OBJECT@ specifies that the allocation is+-- scoped to the lifetime of the Vulkan object that is being created or+-- used.+--+-- - @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@ specifies that the allocation is+-- scoped to the lifetime of a @VkPipelineCache@ or+-- @VkValidationCacheEXT@ object.+--+-- - @VK_SYSTEM_ALLOCATION_SCOPE_DEVICE@ specifies that the allocation is+-- scoped to the lifetime of the Vulkan device.+--+-- - @VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE@ specifies 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_COMMAND@+-- allocation 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 parent @VkDevice@ has+-- an allocator it will be used, else if the parent @VkInstance@ has an+-- allocator it will be used. Else,+--+-- - If an allocation is associated with an object of type+-- @VkValidationCacheEXT@ or @VkPipelineCache@, the allocator will use+-- the @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@ allocation 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 @VkDevice@ or @VkInstance@, the allocator will use an+-- allocation scope of @VK_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+--+-- 'VkAllocationCallbacks'+newtype VkSystemAllocationScope = VkSystemAllocationScope Int32+ deriving (Eq, Ord, Storable)++instance Show VkSystemAllocationScope where+ showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = showString "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"+ showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = showString "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"+ showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_CACHE = showString "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"+ showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = showString "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"+ showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = showString "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"+ showsPrec p (VkSystemAllocationScope x) = showParen (p >= 11) (showString "VkSystemAllocationScope " . showsPrec 11 x)++instance Read VkSystemAllocationScope where+ readPrec = parens ( choose [ ("VK_SYSTEM_ALLOCATION_SCOPE_COMMAND", pure VK_SYSTEM_ALLOCATION_SCOPE_COMMAND)+ , ("VK_SYSTEM_ALLOCATION_SCOPE_OBJECT", pure VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)+ , ("VK_SYSTEM_ALLOCATION_SCOPE_CACHE", pure VK_SYSTEM_ALLOCATION_SCOPE_CACHE)+ , ("VK_SYSTEM_ALLOCATION_SCOPE_DEVICE", pure VK_SYSTEM_ALLOCATION_SCOPE_DEVICE)+ , ("VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE", pure VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE)+ ] ++++ prec 10 (do+ expectP (Ident "VkSystemAllocationScope")+ v <- step readPrec+ pure (VkSystemAllocationScope v)+ )+ )++-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"+pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND :: VkSystemAllocationScope+pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = VkSystemAllocationScope 0++-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"+pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT :: VkSystemAllocationScope+pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = VkSystemAllocationScope 1++-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"+pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE :: VkSystemAllocationScope+pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE = VkSystemAllocationScope 2++-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"+pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE :: VkSystemAllocationScope+pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = VkSystemAllocationScope 3++-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"+pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE :: VkSystemAllocationScope+pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = VkSystemAllocationScope 4+-- ** VkInternalAllocationType++-- | VkInternalAllocationType - Allocation type+--+-- = See Also+--+-- 'PFN_vkInternalAllocationNotification', 'PFN_vkInternalFreeNotification'+newtype VkInternalAllocationType = VkInternalAllocationType Int32+ deriving (Eq, Ord, Storable)++instance Show VkInternalAllocationType where+ showsPrec _ VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = showString "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"+ showsPrec p (VkInternalAllocationType x) = showParen (p >= 11) (showString "VkInternalAllocationType " . showsPrec 11 x)++instance Read VkInternalAllocationType where+ readPrec = parens ( choose [ ("VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE", pure VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE)+ ] ++++ prec 10 (do+ expectP (Ident "VkInternalAllocationType")+ v <- step readPrec+ pure (VkInternalAllocationType v)+ )+ )++-- | @VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE@ specifies that the allocation+-- is intended for execution by the host.+pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: VkInternalAllocationType+pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = VkInternalAllocationType 0+-- ** VkInstanceCreateFlags++-- | VkInstanceCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkInstanceCreateFlags@ is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'VkInstanceCreateInfo'+newtype VkInstanceCreateFlags = VkInstanceCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkInstanceCreateFlags where+ + showsPrec p (VkInstanceCreateFlags x) = showParen (p >= 11) (showString "VkInstanceCreateFlags " . showsPrec 11 x)++instance Read VkInstanceCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkInstanceCreateFlags")+ v <- step readPrec+ pure (VkInstanceCreateFlags v)+ )+ )+++-- ** VkQueueFlagBits++-- | VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue+-- family+--+-- = Description+--+-- - @VK_QUEUE_GRAPHICS_BIT@ specifies that queues in this queue family+-- support graphics operations.+--+-- - @VK_QUEUE_COMPUTE_BIT@ specifies that queues in this queue family+-- support compute operations.+--+-- - @VK_QUEUE_TRANSFER_BIT@ specifies that queues in this queue family+-- support transfer operations.+--+-- - @VK_QUEUE_SPARSE_BINDING_BIT@ specifies that queues in this queue+-- family support sparse memory management operations (see [Sparse+-- Resources](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory)).+-- 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queues).+--+-- = See Also+--+-- 'VkQueueFlags'+newtype VkQueueFlagBits = VkQueueFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkQueueFlagBits where+ showsPrec _ VK_QUEUE_GRAPHICS_BIT = showString "VK_QUEUE_GRAPHICS_BIT"+ showsPrec _ VK_QUEUE_COMPUTE_BIT = showString "VK_QUEUE_COMPUTE_BIT"+ showsPrec _ VK_QUEUE_TRANSFER_BIT = showString "VK_QUEUE_TRANSFER_BIT"+ showsPrec _ VK_QUEUE_SPARSE_BINDING_BIT = showString "VK_QUEUE_SPARSE_BINDING_BIT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkQueueFlagBits 0x00000010) = showString "VK_QUEUE_PROTECTED_BIT"+ showsPrec p (VkQueueFlagBits x) = showParen (p >= 11) (showString "VkQueueFlagBits " . showsPrec 11 x)++instance Read VkQueueFlagBits where+ readPrec = parens ( choose [ ("VK_QUEUE_GRAPHICS_BIT", pure VK_QUEUE_GRAPHICS_BIT)+ , ("VK_QUEUE_COMPUTE_BIT", pure VK_QUEUE_COMPUTE_BIT)+ , ("VK_QUEUE_TRANSFER_BIT", pure VK_QUEUE_TRANSFER_BIT)+ , ("VK_QUEUE_SPARSE_BINDING_BIT", pure VK_QUEUE_SPARSE_BINDING_BIT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_QUEUE_PROTECTED_BIT", pure (VkQueueFlagBits 0x00000010))+ ] ++++ prec 10 (do+ expectP (Ident "VkQueueFlagBits")+ v <- step readPrec+ pure (VkQueueFlagBits v)+ )+ )++-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"+pattern VK_QUEUE_GRAPHICS_BIT :: VkQueueFlagBits+pattern VK_QUEUE_GRAPHICS_BIT = VkQueueFlagBits 0x00000001++-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"+pattern VK_QUEUE_COMPUTE_BIT :: VkQueueFlagBits+pattern VK_QUEUE_COMPUTE_BIT = VkQueueFlagBits 0x00000002++-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"+pattern VK_QUEUE_TRANSFER_BIT :: VkQueueFlagBits+pattern VK_QUEUE_TRANSFER_BIT = VkQueueFlagBits 0x00000004++-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT"+pattern VK_QUEUE_SPARSE_BINDING_BIT :: VkQueueFlagBits+pattern VK_QUEUE_SPARSE_BINDING_BIT = VkQueueFlagBits 0x00000008+-- ** VkMemoryPropertyFlagBits++-- | VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory+-- type+--+-- = See Also+--+-- 'VkMemoryPropertyFlags'+newtype VkMemoryPropertyFlagBits = VkMemoryPropertyFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkMemoryPropertyFlagBits where+ showsPrec _ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = showString "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"+ showsPrec _ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = showString "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"+ showsPrec _ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = showString "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"+ showsPrec _ VK_MEMORY_PROPERTY_HOST_CACHED_BIT = showString "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"+ showsPrec _ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = showString "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkMemoryPropertyFlagBits 0x00000020) = showString "VK_MEMORY_PROPERTY_PROTECTED_BIT"+ showsPrec p (VkMemoryPropertyFlagBits x) = showParen (p >= 11) (showString "VkMemoryPropertyFlagBits " . showsPrec 11 x)++instance Read VkMemoryPropertyFlagBits where+ readPrec = parens ( choose [ ("VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT", pure VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)+ , ("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", pure VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)+ , ("VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", pure VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)+ , ("VK_MEMORY_PROPERTY_HOST_CACHED_BIT", pure VK_MEMORY_PROPERTY_HOST_CACHED_BIT)+ , ("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT", pure VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_MEMORY_PROPERTY_PROTECTED_BIT", pure (VkMemoryPropertyFlagBits 0x00000020))+ ] ++++ prec 10 (do+ expectP (Ident "VkMemoryPropertyFlagBits")+ v <- step readPrec+ pure (VkMemoryPropertyFlagBits v)+ )+ )++-- | @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_DEVICE_LOCAL_BIT :: VkMemoryPropertyFlagBits+pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = VkMemoryPropertyFlagBits 0x00000001++-- | @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ bit specifies that memory+-- allocated with this type /can/ be mapped for host access using+-- 'Graphics.Vulkan.Core10.Memory.vkMapMemory'.+pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT :: VkMemoryPropertyFlagBits+pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = VkMemoryPropertyFlagBits 0x00000002++-- | @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ bit specifies that the host cache+-- management commands+-- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges' and+-- 'Graphics.Vulkan.Core10.Memory.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_COHERENT_BIT :: VkMemoryPropertyFlagBits+pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = VkMemoryPropertyFlagBits 0x00000004++-- | @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_HOST_CACHED_BIT :: VkMemoryPropertyFlagBits+pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT = VkMemoryPropertyFlagBits 0x00000008++-- | @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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-lazy_allocation).+pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT :: VkMemoryPropertyFlagBits+pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = VkMemoryPropertyFlagBits 0x00000010+-- ** VkMemoryHeapFlagBits++-- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap+--+-- = See Also+--+-- 'VkMemoryHeapFlags'+newtype VkMemoryHeapFlagBits = VkMemoryHeapFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkMemoryHeapFlagBits where+ showsPrec _ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = showString "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkMemoryHeapFlagBits 0x00000002) = showString "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"+ showsPrec p (VkMemoryHeapFlagBits x) = showParen (p >= 11) (showString "VkMemoryHeapFlagBits " . showsPrec 11 x)++instance Read VkMemoryHeapFlagBits where+ readPrec = parens ( choose [ ("VK_MEMORY_HEAP_DEVICE_LOCAL_BIT", pure VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_MEMORY_HEAP_MULTI_INSTANCE_BIT", pure (VkMemoryHeapFlagBits 0x00000002))+ ] ++++ prec 10 (do+ expectP (Ident "VkMemoryHeapFlagBits")+ v <- step readPrec+ pure (VkMemoryHeapFlagBits v)+ )+ )++-- | @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.+pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT :: VkMemoryHeapFlagBits+pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = VkMemoryHeapFlagBits 0x00000001+-- ** VkImageUsageFlagBits++-- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image+--+-- = See Also+--+-- 'VkImageUsageFlags'+newtype VkImageUsageFlagBits = VkImageUsageFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkImageUsageFlagBits where+ showsPrec _ VK_IMAGE_USAGE_TRANSFER_SRC_BIT = showString "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"+ showsPrec _ VK_IMAGE_USAGE_TRANSFER_DST_BIT = showString "VK_IMAGE_USAGE_TRANSFER_DST_BIT"+ showsPrec _ VK_IMAGE_USAGE_SAMPLED_BIT = showString "VK_IMAGE_USAGE_SAMPLED_BIT"+ showsPrec _ VK_IMAGE_USAGE_STORAGE_BIT = showString "VK_IMAGE_USAGE_STORAGE_BIT"+ showsPrec _ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"+ showsPrec _ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"+ showsPrec _ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"+ showsPrec _ VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"+ showsPrec p (VkImageUsageFlagBits x) = showParen (p >= 11) (showString "VkImageUsageFlagBits " . showsPrec 11 x)++instance Read VkImageUsageFlagBits where+ readPrec = parens ( choose [ ("VK_IMAGE_USAGE_TRANSFER_SRC_BIT", pure VK_IMAGE_USAGE_TRANSFER_SRC_BIT)+ , ("VK_IMAGE_USAGE_TRANSFER_DST_BIT", pure VK_IMAGE_USAGE_TRANSFER_DST_BIT)+ , ("VK_IMAGE_USAGE_SAMPLED_BIT", pure VK_IMAGE_USAGE_SAMPLED_BIT)+ , ("VK_IMAGE_USAGE_STORAGE_BIT", pure VK_IMAGE_USAGE_STORAGE_BIT)+ , ("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)+ , ("VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)+ , ("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)+ , ("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)+ ] ++++ prec 10 (do+ expectP (Ident "VkImageUsageFlagBits")+ v <- step readPrec+ pure (VkImageUsageFlagBits v)+ )+ )++-- | @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_SRC_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT = VkImageUsageFlagBits 0x00000001++-- | @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ specifies that the image /can/ be used+-- as the destination of a transfer command.+pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT = VkImageUsageFlagBits 0x00000002++-- | @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_SAMPLED_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_SAMPLED_BIT = VkImageUsageFlagBits 0x00000004++-- | @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_STORAGE_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_STORAGE_BIT = VkImageUsageFlagBits 0x00000008++-- | @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_COLOR_ATTACHMENT_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000010++-- | @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_DEPTH_STENCIL_ATTACHMENT_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000020++-- | @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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#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_TRANSIENT_ATTACHMENT_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000040++-- | @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.+pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT :: VkImageUsageFlagBits+pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000080+-- ** VkImageCreateFlagBits++-- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an+-- image+--+-- = Description+--+-- - @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ specifies that the image will+-- be backed using sparse memory binding.+--+-- - @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ specifies that the image+-- /can/ be partially backed using sparse memory binding. Images+-- created with this flag /must/ also be created with the+-- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ flag.+--+-- - @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ specifies 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 the @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ flag+--+-- - @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ specifies that the image /can/+-- be used to create a @VkImageView@ with a different format from the+-- image. For+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- formats, @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ specifies that a+-- @VkImageView@ can be created of a /plane/ of the image.+--+-- - @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ specifies that the image /can/+-- be used to create a @VkImageView@ of type @VK_IMAGE_VIEW_TYPE_CUBE@+-- or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@.+--+-- - @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ specifies that the image+-- /can/ be used to create a @VkImageView@ of type+-- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@.+--+-- - @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@ specifies that the+-- image /can/ be used with a non-zero value of the+-- @splitInstanceBindRegionCount@ member of a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'+-- structure passed into+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'.+-- This flag also has the effect of making the image use the standard+-- sparse image block dimensions.+--+-- - @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ specifies that the+-- image having a compressed format /can/ be used to create a+-- @VkImageView@ with an uncompressed format where each texel in the+-- image view corresponds to a compressed texel block of the image.+--+-- - @VK_IMAGE_CREATE_EXTENDED_USAGE_BIT@ specifies 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+-- a @VkImageView@ created from the image /can/ have.+--+-- - @VK_IMAGE_CREATE_DISJOINT_BIT@ specifies that an image with a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- /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_BIT@ specifies 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes).+-- If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV'+-- structure whose @handleTypes@ member is not @0@, it is as if+-- @VK_IMAGE_CREATE_ALIAS_BIT@ is set.+--+-- - @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@+-- specifies 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures)+-- and [Sparse Physical Device+-- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-physicalfeatures)+-- for more details.+--+-- = See Also+--+-- 'VkImageCreateFlags'+newtype VkImageCreateFlagBits = VkImageCreateFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkImageCreateFlagBits where+ showsPrec _ VK_IMAGE_CREATE_SPARSE_BINDING_BIT = showString "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"+ showsPrec _ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = showString "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"+ showsPrec _ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = showString "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"+ showsPrec _ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = showString "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"+ showsPrec _ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = showString "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkImageCreateFlagBits 0x00000400) = showString "VK_IMAGE_CREATE_ALIAS_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00000040) = showString "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00000020) = showString "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00000080) = showString "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00000100) = showString "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00000800) = showString "VK_IMAGE_CREATE_PROTECTED_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00000200) = showString "VK_IMAGE_CREATE_DISJOINT_BIT"+ showsPrec _ (VkImageCreateFlagBits 0x00001000) = showString "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"+ showsPrec p (VkImageCreateFlagBits x) = showParen (p >= 11) (showString "VkImageCreateFlagBits " . showsPrec 11 x)++instance Read VkImageCreateFlagBits where+ readPrec = parens ( choose [ ("VK_IMAGE_CREATE_SPARSE_BINDING_BIT", pure VK_IMAGE_CREATE_SPARSE_BINDING_BIT)+ , ("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT", pure VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)+ , ("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT", pure VK_IMAGE_CREATE_SPARSE_ALIASED_BIT)+ , ("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT", pure VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT)+ , ("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT", pure VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_IMAGE_CREATE_ALIAS_BIT", pure (VkImageCreateFlagBits 0x00000400))+ , ("VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", pure (VkImageCreateFlagBits 0x00000040))+ , ("VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", pure (VkImageCreateFlagBits 0x00000020))+ , ("VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", pure (VkImageCreateFlagBits 0x00000080))+ , ("VK_IMAGE_CREATE_EXTENDED_USAGE_BIT", pure (VkImageCreateFlagBits 0x00000100))+ , ("VK_IMAGE_CREATE_PROTECTED_BIT", pure (VkImageCreateFlagBits 0x00000800))+ , ("VK_IMAGE_CREATE_DISJOINT_BIT", pure (VkImageCreateFlagBits 0x00000200))+ , ("VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", pure (VkImageCreateFlagBits 0x00001000))+ ] ++++ prec 10 (do+ expectP (Ident "VkImageCreateFlagBits")+ v <- step readPrec+ pure (VkImageCreateFlagBits v)+ )+ )++-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"+pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT :: VkImageCreateFlagBits+pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT = VkImageCreateFlagBits 0x00000001++-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"+pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT :: VkImageCreateFlagBits+pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = VkImageCreateFlagBits 0x00000002++-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"+pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT :: VkImageCreateFlagBits+pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = VkImageCreateFlagBits 0x00000004++-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"+pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT :: VkImageCreateFlagBits+pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = VkImageCreateFlagBits 0x00000008++-- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"+pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT :: VkImageCreateFlagBits+pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = VkImageCreateFlagBits 0x00000010+-- ** VkFormatFeatureFlagBits++-- | 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImage)+-- or [image+-- views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageView)+-- created with the queried+-- 'vkGetPhysicalDeviceFormatProperties'::@format@:+--+-- - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ specifies that an image view+-- /can/ be [sampled+-- from](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage).+--+-- - @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@ specifies that an image view+-- /can/ be used as a [storage+-- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage).+--+-- - @VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT@ specifies that an image+-- view /can/ be used as storage image that supports atomic operations.+--+-- - @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ specifies that an image+-- view /can/ be used as a framebuffer color attachment and as an input+-- attachment.+--+-- - @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ specifies 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_BIT@ specifies that an+-- image view /can/ be used as a framebuffer depth\/stencil attachment+-- and as an input attachment.+--+-- - @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ specifies that an image /can/ be+-- used as @srcImage@ for the @vkCmdBlitImage@ command.+--+-- - @VK_FORMAT_FEATURE_BLIT_DST_BIT@ specifies that an image /can/ be+-- used as @dstImage@ for the @vkCmdBlitImage@ command.+--+-- - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ specifies that+-- if @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ is also set, an image view+-- /can/ be used with a sampler that has either of @magFilter@ or+-- @minFilter@ set to @VK_FILTER_LINEAR@, or @mipmapMode@ set to+-- @VK_SAMPLER_MIPMAP_MODE_LINEAR@. If @VK_FORMAT_FEATURE_BLIT_SRC_BIT@+-- is also set, an image can be used as the @srcImage@ to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage' with a+-- @filter@ of @VK_FILTER_LINEAR@. This bit /must/ only be exposed for+-- formats that also support the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@+-- or @VK_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_BIT@ specifies that an image /can/+-- be used as a source image for [copy+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies).+--+-- - @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@ specifies that an image /can/+-- be used as a destination image for [copy+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)+-- and [clear+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears).+--+-- - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT@ specifies+-- @VkImage@ /can/ be used as a sampled image with a min or max+-- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeEXT'.+-- This bit /must/ only be exposed for formats that also support the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@.+--+-- - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ specifies+-- that @VkImage@ /can/ be used with a sampler that has either of+-- @magFilter@ or @minFilter@ set to @VK_FILTER_CUBIC_IMG@, or be the+-- source image for a blit with @filter@ set to @VK_FILTER_CUBIC_IMG@.+-- This bit /must/ only be exposed for formats that also support the+-- @VK_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_BIT@ specifies that an+-- application /can/ define a [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- using this format as a source, and that an image of this format+-- /can/ be used with a @VkSamplerYcbcrConversionCreateInfo@+-- @xChromaOffset@ and\/or @yChromaOffset@ of+-- @VK_CHROMA_LOCATION_MIDPOINT@. Otherwise both @xChromaOffset@ and+-- @yChromaOffset@ /must/ be @VK_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/ set+-- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@.+--+-- - @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@ specifies that an+-- application /can/ define a [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- using this format as a source, and that an image of this format+-- /can/ be used with a @VkSamplerYcbcrConversionCreateInfo@+-- @xChromaOffset@ and\/or @yChromaOffset@ of+-- @VK_CHROMA_LOCATION_COSITED_EVEN@. Otherwise both @xChromaOffset@+-- and @yChromaOffset@ /must/ be @VK_CHROMA_LOCATION_MIDPOINT@. If+-- neither @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@ nor+-- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@ is set, the+-- application /must/ not define a [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- using this format as a source.+--+-- - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT@+-- specifies 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_BIT@+-- specifies that the format can have different chroma, min, and mag+-- filters.+--+-- - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT@+-- specifies that reconstruction is explicit, as described in+-- [{html_spec_relative}#textures-chroma-reconstruction](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#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_BIT@+-- specifies that reconstruction /can/ be forcibly made explicit by+-- setting+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@+-- to @VK_TRUE@.+--+-- - @VK_FORMAT_FEATURE_DISJOINT_BIT@ specifies that a multi-planar image+-- /can/ have the @VK_IMAGE_CREATE_DISJOINT_BIT@ set during image+-- creation. An implementation /must/ not set+-- @VK_FORMAT_FEATURE_DISJOINT_BIT@ for /single-plane formats/.+--+-- The following bits /may/ be set in @bufferFeatures@, specifying that the+-- features are supported by+-- [buffers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBuffer)+-- or [buffer+-- views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBufferView)+-- created with the queried 'vkGetPhysicalDeviceProperties'::@format@:+--+-- - @VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT@ specifies that the+-- format /can/ be used to create a buffer view that /can/ be bound to+-- a @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ descriptor.+--+-- - @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT@ specifies that the+-- format /can/ be used to create a buffer view that /can/ be bound to+-- a @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ descriptor.+--+-- - @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT@ specifies that+-- atomic operations are supported on+-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ with this format.+--+-- - @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ specifies that the format+-- /can/ be used as a vertex attribute format+-- (@VkVertexInputAttributeDescription@::@format@).+--+-- = See Also+--+-- 'VkFormatFeatureFlags'+newtype VkFormatFeatureFlagBits = VkFormatFeatureFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkFormatFeatureFlagBits where+ showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"+ showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"+ showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"+ showsPrec _ VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = showString "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"+ showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"+ showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"+ showsPrec _ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = showString "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"+ showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"+ showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"+ showsPrec _ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = showString "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"+ showsPrec _ VK_FORMAT_FEATURE_BLIT_SRC_BIT = showString "VK_FORMAT_FEATURE_BLIT_SRC_BIT"+ showsPrec _ VK_FORMAT_FEATURE_BLIT_DST_BIT = showString "VK_FORMAT_FEATURE_BLIT_DST_BIT"+ showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkFormatFeatureFlagBits 0x00004000) = showString "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00008000) = showString "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00020000) = showString "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00040000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00080000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00100000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00200000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00400000) = showString "VK_FORMAT_FEATURE_DISJOINT_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00800000) = showString "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"+ showsPrec _ (VkFormatFeatureFlagBits 0x00002000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"+ showsPrec _ (VkFormatFeatureFlagBits 0x00010000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"+ showsPrec p (VkFormatFeatureFlagBits x) = showParen (p >= 11) (showString "VkFormatFeatureFlagBits " . showsPrec 11 x)++instance Read VkFormatFeatureFlagBits where+ readPrec = parens ( choose [ ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)+ , ("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT", pure VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)+ , ("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT", pure VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)+ , ("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", pure VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)+ , ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)+ , ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT", pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT)+ , ("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT", pure VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT)+ , ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)+ , ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT", pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT)+ , ("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", pure VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)+ , ("VK_FORMAT_FEATURE_BLIT_SRC_BIT", pure VK_FORMAT_FEATURE_BLIT_SRC_BIT)+ , ("VK_FORMAT_FEATURE_BLIT_DST_BIT", pure VK_FORMAT_FEATURE_BLIT_DST_BIT)+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", pure (VkFormatFeatureFlagBits 0x00004000))+ , ("VK_FORMAT_FEATURE_TRANSFER_DST_BIT", pure (VkFormatFeatureFlagBits 0x00008000))+ , ("VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT", pure (VkFormatFeatureFlagBits 0x00020000))+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT", pure (VkFormatFeatureFlagBits 0x00040000))+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT", pure (VkFormatFeatureFlagBits 0x00080000))+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT", pure (VkFormatFeatureFlagBits 0x00100000))+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT", pure (VkFormatFeatureFlagBits 0x00200000))+ , ("VK_FORMAT_FEATURE_DISJOINT_BIT", pure (VkFormatFeatureFlagBits 0x00400000))+ , ("VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", pure (VkFormatFeatureFlagBits 0x00800000))+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", pure (VkFormatFeatureFlagBits 0x00002000))+ , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT", pure (VkFormatFeatureFlagBits 0x00010000))+ ] ++++ prec 10 (do+ expectP (Ident "VkFormatFeatureFlagBits")+ v <- step readPrec+ pure (VkFormatFeatureFlagBits v)+ )+ )++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = VkFormatFeatureFlagBits 0x00000001++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"+pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = VkFormatFeatureFlagBits 0x00000002++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"+pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = VkFormatFeatureFlagBits 0x00000004++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"+pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000008++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"+pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000010++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"+pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = VkFormatFeatureFlagBits 0x00000020++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"+pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000040++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"+pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = VkFormatFeatureFlagBits 0x00000080++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"+pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = VkFormatFeatureFlagBits 0x00000100++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"+pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = VkFormatFeatureFlagBits 0x00000200++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_SRC_BIT"+pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT = VkFormatFeatureFlagBits 0x00000400++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_DST_BIT"+pattern VK_FORMAT_FEATURE_BLIT_DST_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_BLIT_DST_BIT = VkFormatFeatureFlagBits 0x00000800++-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT :: VkFormatFeatureFlagBits+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = VkFormatFeatureFlagBits 0x00001000+-- ** VkSampleCountFlagBits++-- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for+-- an image used for storage operations+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription',+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo',+-- 'VkSampleCountFlags',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'+newtype VkSampleCountFlagBits = VkSampleCountFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkSampleCountFlagBits where+ showsPrec _ VK_SAMPLE_COUNT_1_BIT = showString "VK_SAMPLE_COUNT_1_BIT"+ showsPrec _ VK_SAMPLE_COUNT_2_BIT = showString "VK_SAMPLE_COUNT_2_BIT"+ showsPrec _ VK_SAMPLE_COUNT_4_BIT = showString "VK_SAMPLE_COUNT_4_BIT"+ showsPrec _ VK_SAMPLE_COUNT_8_BIT = showString "VK_SAMPLE_COUNT_8_BIT"+ showsPrec _ VK_SAMPLE_COUNT_16_BIT = showString "VK_SAMPLE_COUNT_16_BIT"+ showsPrec _ VK_SAMPLE_COUNT_32_BIT = showString "VK_SAMPLE_COUNT_32_BIT"+ showsPrec _ VK_SAMPLE_COUNT_64_BIT = showString "VK_SAMPLE_COUNT_64_BIT"+ showsPrec p (VkSampleCountFlagBits x) = showParen (p >= 11) (showString "VkSampleCountFlagBits " . showsPrec 11 x)++instance Read VkSampleCountFlagBits where+ readPrec = parens ( choose [ ("VK_SAMPLE_COUNT_1_BIT", pure VK_SAMPLE_COUNT_1_BIT)+ , ("VK_SAMPLE_COUNT_2_BIT", pure VK_SAMPLE_COUNT_2_BIT)+ , ("VK_SAMPLE_COUNT_4_BIT", pure VK_SAMPLE_COUNT_4_BIT)+ , ("VK_SAMPLE_COUNT_8_BIT", pure VK_SAMPLE_COUNT_8_BIT)+ , ("VK_SAMPLE_COUNT_16_BIT", pure VK_SAMPLE_COUNT_16_BIT)+ , ("VK_SAMPLE_COUNT_32_BIT", pure VK_SAMPLE_COUNT_32_BIT)+ , ("VK_SAMPLE_COUNT_64_BIT", pure VK_SAMPLE_COUNT_64_BIT)+ ] ++++ prec 10 (do+ expectP (Ident "VkSampleCountFlagBits")+ v <- step readPrec+ pure (VkSampleCountFlagBits v)+ )+ )++-- | @VK_SAMPLE_COUNT_1_BIT@ specifies an image with one sample per pixel.+pattern VK_SAMPLE_COUNT_1_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_1_BIT = VkSampleCountFlagBits 0x00000001++-- | @VK_SAMPLE_COUNT_2_BIT@ specifies an image with 2 samples per pixel.+pattern VK_SAMPLE_COUNT_2_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_2_BIT = VkSampleCountFlagBits 0x00000002++-- | @VK_SAMPLE_COUNT_4_BIT@ specifies an image with 4 samples per pixel.+pattern VK_SAMPLE_COUNT_4_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_4_BIT = VkSampleCountFlagBits 0x00000004++-- | @VK_SAMPLE_COUNT_8_BIT@ specifies an image with 8 samples per pixel.+pattern VK_SAMPLE_COUNT_8_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_8_BIT = VkSampleCountFlagBits 0x00000008++-- | @VK_SAMPLE_COUNT_16_BIT@ specifies an image with 16 samples per pixel.+pattern VK_SAMPLE_COUNT_16_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_16_BIT = VkSampleCountFlagBits 0x00000010++-- | @VK_SAMPLE_COUNT_32_BIT@ specifies an image with 32 samples per pixel.+pattern VK_SAMPLE_COUNT_32_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_32_BIT = VkSampleCountFlagBits 0x00000020++-- | @VK_SAMPLE_COUNT_64_BIT@ specifies an image with 64 samples per pixel.+pattern VK_SAMPLE_COUNT_64_BIT :: VkSampleCountFlagBits+pattern VK_SAMPLE_COUNT_64_BIT = VkSampleCountFlagBits 0x00000040+-- No documentation found for TopLevel "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"+type VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256+-- No documentation found for Nested "Integral a => a" "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"+pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE :: Integral a => a+pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256+-- No documentation found for TopLevel "VK_UUID_SIZE"+type VK_UUID_SIZE = 16+-- No documentation found for Nested "Integral a => a" "VK_UUID_SIZE"+pattern VK_UUID_SIZE :: Integral a => a+pattern VK_UUID_SIZE = 16+-- No documentation found for TopLevel "VK_MAX_MEMORY_TYPES"+type VK_MAX_MEMORY_TYPES = 32+-- No documentation found for Nested "Integral a => a" "VK_MAX_MEMORY_TYPES"+pattern VK_MAX_MEMORY_TYPES :: Integral a => a+pattern VK_MAX_MEMORY_TYPES = 32+-- No documentation found for TopLevel "VK_MAX_MEMORY_HEAPS"+type VK_MAX_MEMORY_HEAPS = 16+-- No documentation found for Nested "Integral a => a" "VK_MAX_MEMORY_HEAPS"+pattern VK_MAX_MEMORY_HEAPS :: Integral a => a+pattern VK_MAX_MEMORY_HEAPS = 16+-- | PFN_vkInternalAllocationNotification - Application-defined memory+-- allocation notification function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by+-- the application.+--+-- - @size@ is the requested size of an allocation.+--+-- - @allocationType@ is a 'VkInternalAllocationType' value specifying+-- the requested type of an allocation.+--+-- - @allocationScope@ is a 'VkSystemAllocationScope' value specifying+-- the allocation scope of the lifetime of the allocation, as described+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).+--+-- = Description+--+-- This is a purely informational callback.+--+-- = See Also+--+-- 'VkAllocationCallbacks'+type PFN_vkInternalAllocationNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())+-- | PFN_vkInternalFreeNotification - Application-defined memory free+-- notification function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by+-- the application.+--+-- - @size@ is the requested size of an allocation.+--+-- - @allocationType@ is a 'VkInternalAllocationType' value specifying+-- the requested type of an allocation.+--+-- - @allocationScope@ is a 'VkSystemAllocationScope' value specifying+-- the allocation scope of the lifetime of the allocation, as described+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).+--+-- = See Also+--+-- 'VkAllocationCallbacks'+type PFN_vkInternalFreeNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())+-- | PFN_vkReallocationFunction - Application-defined memory reallocation+-- function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by+-- the application.+--+-- - @pOriginal@ /must/ be either @NULL@ or a pointer previously returned+-- by @pfnReallocation@ or @pfnAllocation@ of the same allocator.+--+-- - @size@ is the size in bytes of the requested allocation.+--+-- - @alignment@ is the requested alignment of the allocation in bytes+-- and /must/ be a power of two.+--+-- - @allocationScope@ is a 'VkSystemAllocationScope' value specifying+-- the allocation scope of the lifetime of the allocation, as described+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).+--+-- = 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@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkAllocationFunction_return_rules).+--+-- = See Also+--+-- 'VkAllocationCallbacks'+type PFN_vkReallocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pOriginal" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))+-- | PFN_vkAllocationFunction - Application-defined memory allocation+-- function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by+-- the application.+--+-- - @size@ is the size in bytes of the requested allocation.+--+-- - @alignment@ is the requested alignment of the allocation in bytes+-- and /must/ be a power of two.+--+-- - @allocationScope@ is a 'VkSystemAllocationScope' value specifying+-- the allocation scope of the lifetime of the allocation, as described+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).+--+-- = 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes).+--+-- 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+--+-- 'VkAllocationCallbacks'+type PFN_vkAllocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))+-- | PFN_vkFreeFunction - Application-defined memory free function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by+-- the application.+--+-- - @pMemory@ is 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+--+-- 'VkAllocationCallbacks'+type PFN_vkFreeFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pMemory" ::: Ptr ()) -> IO ())+-- | PFN_vkVoidFunction - Dummy function pointer type returned by queries+--+-- = See Also+--+-- 'vkGetDeviceProcAddr', 'vkGetInstanceProcAddr'+type PFN_vkVoidFunction = Ptr (() -> IO ())+-- | Dummy data to tag the 'Ptr' with+data VkInstance_T+-- | VkInstance - Opaque handle to a instance object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkCreateDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCreateDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',+-- 'vkCreateInstance',+-- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDebugReportMessageEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDestroyDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkDestroyDebugUtilsMessengerEXT',+-- 'vkDestroyInstance',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkDestroySurfaceKHR',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroups',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroupsKHR',+-- 'vkEnumeratePhysicalDevices', 'vkGetInstanceProcAddr',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSubmitDebugUtilsMessageEXT'+type VkInstance = Ptr VkInstance_T+-- | Dummy data to tag the 'Ptr' with+data VkPhysicalDevice_T+-- | VkPhysicalDevice - Opaque handle to a physical device object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkAcquireXlibDisplayEXT',+-- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayModeKHR',+-- 'Graphics.Vulkan.Core10.ExtensionDiscovery.vkEnumerateDeviceExtensionProperties',+-- 'Graphics.Vulkan.Core10.LayerDiscovery.vkEnumerateDeviceLayerProperties',+-- 'vkEnumeratePhysicalDevices',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayPlaneSupportedDisplaysKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetPhysicalDeviceDisplayPlanePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetPhysicalDeviceDisplayPropertiesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR',+-- 'vkGetPhysicalDeviceFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2KHR',+-- 'vkGetPhysicalDeviceFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX',+-- 'vkGetPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR',+-- 'vkGetPhysicalDeviceMemoryProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkGetPhysicalDeviceMirPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR',+-- 'vkGetPhysicalDeviceProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2KHR',+-- 'vkGetPhysicalDeviceQueueFamilyProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2KHR',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.vkGetPhysicalDeviceSurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceFormats2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceFormatsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfacePresentModesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkGetPhysicalDeviceWaylandPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkGetPhysicalDeviceWin32PresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkGetPhysicalDeviceXcbPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkGetPhysicalDeviceXlibPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkGetRandROutputDisplayEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display.vkReleaseDisplayEXT'+type VkPhysicalDevice = Ptr VkPhysicalDevice_T+-- | Dummy data to tag the 'Ptr' with+data VkDevice_T+-- | VkDevice - Opaque handle to a device object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImage2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR',+-- 'Graphics.Vulkan.Core10.CommandBuffer.vkAllocateCommandBuffers',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkAllocateDescriptorSets',+-- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory',+-- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindBufferMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindBufferMemory2KHR',+-- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindImageMemory',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindImageMemory2KHR',+-- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.vkCreateBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.vkCreateCommandPool',+-- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',+-- 'Graphics.Vulkan.Core10.Event.vkCreateEvent',+-- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',+-- 'Graphics.Vulkan.Core10.Pass.vkCreateFramebuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',+-- 'Graphics.Vulkan.Core10.Image.vkCreateImage',+-- 'Graphics.Vulkan.Core10.ImageView.vkCreateImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateObjectTableNVX',+-- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.vkCreateQueryPool',+-- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',+-- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',+-- 'Graphics.Vulkan.Core10.Shader.vkCreateShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkCreateValidationCacheEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkDebugMarkerSetObjectNameEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkDebugMarkerSetObjectTagEXT',+-- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.vkDestroyBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.vkDestroyCommandPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.vkDestroyDevice',+-- 'Graphics.Vulkan.Core10.Event.vkDestroyEvent',+-- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',+-- 'Graphics.Vulkan.Core10.Pass.vkDestroyFramebuffer',+-- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',+-- 'Graphics.Vulkan.Core10.ImageView.vkDestroyImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyObjectTableNVX',+-- 'Graphics.Vulkan.Core10.Pipeline.vkDestroyPipeline',+-- 'Graphics.Vulkan.Core10.PipelineCache.vkDestroyPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.vkDestroyQueryPool',+-- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',+-- 'Graphics.Vulkan.Core10.Sampler.vkDestroySampler',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore',+-- 'Graphics.Vulkan.Core10.Shader.vkDestroyShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkDestroySwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkDestroyValidationCacheEXT',+-- 'Graphics.Vulkan.Core10.Queue.vkDeviceWaitIdle',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkDisplayPowerControlEXT',+-- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges',+-- 'Graphics.Vulkan.Core10.CommandBuffer.vkFreeCommandBuffers',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkFreeDescriptorSets',+-- 'Graphics.Vulkan.Core10.Memory.vkFreeMemory',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID',+-- 'Graphics.Vulkan.Core10.MemoryManagement.vkGetBufferMemoryRequirements',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeatures',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupPresentCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupSurfacePresentModesKHR',+-- 'Graphics.Vulkan.Core10.Memory.vkGetDeviceMemoryCommitment',+-- 'vkGetDeviceProcAddr', 'Graphics.Vulkan.Core10.Queue.vkGetDeviceQueue',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.vkGetDeviceQueue2',+-- 'Graphics.Vulkan.Core10.Event.vkGetEventStatus',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.vkGetFenceFdKHR',+-- 'Graphics.Vulkan.Core10.Fence.vkGetFenceStatus',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.vkGetFenceWin32HandleKHR',+-- 'Graphics.Vulkan.Core10.MemoryManagement.vkGetImageMemoryRequirements',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetImageSparseMemoryRequirements',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetMemoryAndroidHardwareBufferANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetPastPresentationTimingGOOGLE',+-- 'Graphics.Vulkan.Core10.PipelineCache.vkGetPipelineCacheData',+-- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetRefreshCycleDurationGOOGLE',+-- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.vkGetSemaphoreFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.vkGetSemaphoreWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkGetSwapchainCounterEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetSwapchainImagesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.vkGetSwapchainStatusKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkGetValidationCacheDataEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.vkImportFenceFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.vkImportFenceWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.vkImportSemaphoreFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.vkImportSemaphoreWin32HandleKHR',+-- 'Graphics.Vulkan.Core10.Memory.vkInvalidateMappedMemoryRanges',+-- 'Graphics.Vulkan.Core10.Memory.vkMapMemory',+-- 'Graphics.Vulkan.Core10.PipelineCache.vkMergePipelineCaches',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkMergeValidationCachesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkRegisterObjectsNVX',+-- 'Graphics.Vulkan.Core10.CommandPool.vkResetCommandPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkResetDescriptorPool',+-- 'Graphics.Vulkan.Core10.Event.vkResetEvent',+-- 'Graphics.Vulkan.Core10.Fence.vkResetFences',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSetDebugUtilsObjectNameEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSetDebugUtilsObjectTagEXT',+-- 'Graphics.Vulkan.Core10.Event.vkSetEvent',+-- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.vkSetHdrMetadataEXT',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1.vkTrimCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.vkTrimCommandPoolKHR',+-- 'Graphics.Vulkan.Core10.Memory.vkUnmapMemory',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkUnregisterObjectsNVX',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets',+-- 'Graphics.Vulkan.Core10.Fence.vkWaitForFences'+type VkDevice = Ptr VkDevice_T+-- | vkCreateInstance - Create a new Vulkan instance+--+-- = Parameters+--+-- - @pCreateInfo@ points to an instance of 'VkInstanceCreateInfo'+-- controlling creation of the instance.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- - @pInstance@ points a @VkInstance@ handle 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-extensions-dependencies)+-- for each extension in the+-- 'VkInstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also+-- be present in that list.+--+-- == Valid Usage (Implicit)+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- @VkInstanceCreateInfo@ structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - @pInstance@ /must/ be a valid pointer to a @VkInstance@ handle+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_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+--+-- 'VkAllocationCallbacks', 'VkInstance', 'VkInstanceCreateInfo'+foreign import ccall "vkCreateInstance" vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult+-- | vkDestroyInstance - Destroy an instance of Vulkan+--+-- = Parameters+--+-- - @instance@ is the handle of the instance to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- == Valid Usage+--+-- - All child objects created using @instance@ /must/ have been+-- destroyed prior to destroying @instance@+--+-- - If @VkAllocationCallbacks@ were provided when @instance@ was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no @VkAllocationCallbacks@ were provided when @instance@ was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - If @instance@ is not @NULL@, @instance@ /must/ be a valid+-- @VkInstance@ handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- == Host Synchronization+--+-- - Host access to @instance@ /must/ be externally synchronized+--+-- = See Also+--+-- 'VkAllocationCallbacks', 'VkInstance'+foreign import ccall "vkDestroyInstance" vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible+-- to a Vulkan instance+--+-- = Parameters+--+-- - @instance@ is a handle to a Vulkan instance previously created with+-- 'vkCreateInstance'.+--+-- - @pPhysicalDeviceCount@ is a pointer to an integer related to the+-- number of physical devices available or queried, as described below.+--+-- - @pPhysicalDevices@ is either @NULL@ or a pointer to an array of+-- @VkPhysicalDevice@ handles.+--+-- = 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)+--+-- - @instance@ /must/ be a valid @VkInstance@ handle+--+-- - @pPhysicalDeviceCount@ /must/ be a valid pointer to a @uint32_t@+-- value+--+-- - If the value referenced by @pPhysicalDeviceCount@ is not @0@, and+-- @pPhysicalDevices@ is not @NULL@, @pPhysicalDevices@ /must/ be a+-- valid pointer to an array of @pPhysicalDeviceCount@+-- @VkPhysicalDevice@ handles+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- - @VK_INCOMPLETE@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- - @VK_ERROR_INITIALIZATION_FAILED@+--+-- = See Also+--+-- 'VkInstance', 'VkPhysicalDevice'+foreign import ccall "vkEnumeratePhysicalDevices" vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult+-- | 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)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pName@ /must/ be a null-terminated UTF-8 string+--+-- = See Also+--+-- 'PFN_vkVoidFunction', 'VkDevice'+foreign import ccall "vkGetDeviceProcAddr" vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction+-- | vkGetInstanceProcAddr - Return a function pointer for a command+--+-- = Parameters+--+-- - @instance@ is the instance that the function pointer will be+-- compatible with, or @NULL@ for commands not dependent on any+-- instance.+--+-- - @pName@ is 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.Core10.ExtensionDiscovery.vkEnumerateInstanceExtensionProperties' | fp |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | 'Graphics.Vulkan.Core10.LayerDiscovery.vkEnumerateInstanceLayerProperties' | fp |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | 'vkCreateInstance' | fp |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | * (any @pName@ not covered above) | @NULL@ |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | instance | core Vulkan command | fp1 |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | instance | enabled instance extension commands for @instance@ | fp1 |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | instance | available device extension2 commands for @instance@ | fp1 |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++-- | instance | * (any @pName@ not covered above) | @NULL@ |+-- +-----------------------+------------------------------------------------------------------------------------+-----------------------++--+-- vkGetInstanceProcAddr behavior+--+-- [1]+-- The returned function pointer /must/ only be called with a+-- dispatchable object (the first parameter) that is @instance@ or a+-- child of @instance@, e.g. 'VkInstance', 'VkPhysicalDevice',+-- 'VkDevice', 'Graphics.Vulkan.Core10.Queue.VkQueue', or+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'.+--+-- [2]+-- An “available device extension” is a device extension supported by+-- any physical device enumerated by @instance@.+--+-- == Valid Usage (Implicit)+--+-- - If @instance@ is not @NULL@, @instance@ /must/ be a valid+-- @VkInstance@ handle+--+-- - @pName@ /must/ be a null-terminated UTF-8 string+--+-- = See Also+--+-- 'PFN_vkVoidFunction', 'VkInstance'+foreign import ccall "vkGetInstanceProcAddr" vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction+-- | vkGetPhysicalDeviceProperties - Returns properties of a physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the handle to the physical device whose+-- properties will be queried.+--+-- - @pProperties@ points to an instance of the+-- 'VkPhysicalDeviceProperties' structure, that will be filled with+-- returned information.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pProperties@ /must/ be a valid pointer to a+-- @VkPhysicalDeviceProperties@ structure+--+-- = See Also+--+-- 'VkPhysicalDevice', 'VkPhysicalDeviceProperties'+foreign import ccall "vkGetPhysicalDeviceProperties" vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()+-- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the+-- queues of the specified physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the handle to the physical device whose+-- properties will be queried.+--+-- - @pQueueFamilyPropertyCount@ is a pointer to an integer related to+-- the number of queue families available or queried, as described+-- below.+--+-- - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array+-- of 'VkQueueFamilyProperties' structures.+--+-- = 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)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,+-- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@+-- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@+-- @VkQueueFamilyProperties@ structures+--+-- = See Also+--+-- 'VkPhysicalDevice', 'VkQueueFamilyProperties'+foreign import ccall "vkGetPhysicalDeviceQueueFamilyProperties" vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()+-- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the+-- specified physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the handle to the device to query.+--+-- - @pMemoryProperties@ points to an instance of+-- @VkPhysicalDeviceMemoryProperties@ structure in which the properties+-- are returned.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pMemoryProperties@ /must/ be a valid pointer to a+-- @VkPhysicalDeviceMemoryProperties@ structure+--+-- = See Also+--+-- 'VkPhysicalDevice', 'VkPhysicalDeviceMemoryProperties'+foreign import ccall "vkGetPhysicalDeviceMemoryProperties" vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()+-- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- supported features.+--+-- - @pFeatures@ is a pointer to a 'VkPhysicalDeviceFeatures' structure+-- in which the physical device features are returned. For each+-- feature, a value of @VK_TRUE@ specifies that the feature is+-- supported on this physical device, and @VK_FALSE@ specifies that the+-- feature is not supported.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pFeatures@ /must/ be a valid pointer to a+-- @VkPhysicalDeviceFeatures@ structure+--+-- = See Also+--+-- 'VkPhysicalDevice', 'VkPhysicalDeviceFeatures'+foreign import ccall "vkGetPhysicalDeviceFeatures" vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()+-- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format+-- capabilities+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- format properties.+--+-- - @format@ is the format whose properties are queried.+--+-- - @pFormatProperties@ is a pointer to a 'VkFormatProperties' structure+-- in which physical device properties for @format@ are returned.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- - @pFormatProperties@ /must/ be a valid pointer to a+-- @VkFormatProperties@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties',+-- 'VkPhysicalDevice'+foreign import ccall "vkGetPhysicalDeviceFormatProperties" vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()+-- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image+-- format capabilities+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- image capabilities.+--+-- - @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value+-- specifying the image format, corresponding to+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@format@.+--+-- - @type@ is a 'VkImageType' value specifying the image type,+-- corresponding to+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@imageType@.+--+-- - @tiling@ is a 'VkImageTiling' value specifying the image tiling,+-- corresponding to+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@tiling@.+--+-- - @usage@ is a bitmask of 'VkImageUsageFlagBits' specifying the+-- intended usage of the image, corresponding to+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@usage@.+--+-- - @flags@ is a bitmask of 'VkImageCreateFlagBits' specifying+-- additional parameters of the image, corresponding to+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@.+--+-- - @pImageFormatProperties@ points to an instance of the+-- 'VkImageFormatProperties' structure in which capabilities are+-- returned.+--+-- = Description+--+-- The @format@, @type@, @tiling@, @usage@, and @flags@ parameters+-- correspond to parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Image.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)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- - @type@ /must/ be a valid 'VkImageType' value+--+-- - @tiling@ /must/ be a valid 'VkImageTiling' value+--+-- - @usage@ /must/ be a valid combination of 'VkImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - @flags@ /must/ be a valid combination of 'VkImageCreateFlagBits'+-- values+--+-- - @pImageFormatProperties@ /must/ be a valid pointer to a+-- @VkImageFormatProperties@ structure+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- - @VK_ERROR_FORMAT_NOT_SUPPORTED@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkImageCreateFlags',+-- 'VkImageFormatProperties', 'VkImageTiling', 'VkImageType',+-- 'VkImageUsageFlags', 'VkPhysicalDevice'+foreign import ccall "vkGetPhysicalDeviceImageFormatProperties" vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult+-- | VkExtent3D - Structure specifying a three-dimensional extent+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferImageCopy',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageCopy',+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',+-- 'VkImageFormatProperties',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageResolve',+-- 'VkQueueFamilyProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryBind'+data VkExtent3D = VkExtent3D+ { -- | @width@ is the width of the extent.+ vkWidth :: Word32+ , -- | @height@ is the height of the extent.+ vkHeight :: Word32+ , -- | @depth@ is the depth of the extent.+ vkDepth :: Word32+ }+ deriving (Eq, Show)++instance Storable VkExtent3D where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek ptr = VkExtent3D <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent3D))+ *> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent3D))+ *> poke (ptr `plusPtr` 8) (vkDepth (poked :: VkExtent3D))+-- | 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](https://pcisig.com/membership/member-companies), 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vulkan-styleguide)+-- 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](https://pcisig.com/) with a [PCI device+-- ID](https://pcisig.com/), 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',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',+-- 'VkPhysicalDeviceSparseProperties', 'VkPhysicalDeviceType',+-- 'vkGetPhysicalDeviceProperties'+data VkPhysicalDeviceProperties = VkPhysicalDeviceProperties+ { -- | @apiVersion@ is the version of Vulkan supported by the device, encoded+ -- as described in the [API Version Numbers and+ -- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)+ -- section.+ vkApiVersion :: Word32+ , -- | @driverVersion@ is the vendor-specified version of the driver.+ vkDriverVersion :: Word32+ , -- | @vendorID@ is a unique identifier for the /vendor/ (see below) of the+ -- physical device.+ vkVendorID :: Word32+ , -- | @deviceID@ is a unique identifier for the physical device among devices+ -- available from the vendor.+ vkDeviceID :: Word32+ , -- | @deviceType@ is a 'VkPhysicalDeviceType' specifying the type of device.+ vkDeviceType :: VkPhysicalDeviceType+ , -- | @deviceName@ is a null-terminated UTF-8 string containing the name of+ -- the device.+ vkDeviceName :: Vector VK_MAX_PHYSICAL_DEVICE_NAME_SIZE CChar+ , -- | @pipelineCacheUUID@ is an array of size @VK_UUID_SIZE@, containing 8-bit+ -- values that represent a universally unique identifier for the device.+ vkPipelineCacheUUID :: Vector VK_UUID_SIZE Word8+ , -- | @limits@ is the 'VkPhysicalDeviceLimits' structure which specifies+ -- device-specific limits of the physical device. See+ -- [Limits](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits)+ -- for details.+ vkLimits :: VkPhysicalDeviceLimits+ , -- | @sparseProperties@ is the 'VkPhysicalDeviceSparseProperties' structure+ -- which specifies various sparse related properties of the physical+ -- device. See [Sparse+ -- Properties](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-physicalprops)+ -- for details.+ vkSparseProperties :: VkPhysicalDeviceSparseProperties+ }+ deriving (Eq, Show)++instance Storable VkPhysicalDeviceProperties where+ sizeOf ~_ = 824+ alignment ~_ = 8+ peek ptr = VkPhysicalDeviceProperties <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 276)+ <*> peek (ptr `plusPtr` 296)+ <*> peek (ptr `plusPtr` 800)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkApiVersion (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 4) (vkDriverVersion (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 8) (vkVendorID (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 12) (vkDeviceID (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 16) (vkDeviceType (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 20) (vkDeviceName (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 276) (vkPipelineCacheUUID (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 296) (vkLimits (poked :: VkPhysicalDeviceProperties))+ *> poke (ptr `plusPtr` 800) (vkSparseProperties (poked :: VkPhysicalDeviceProperties))+-- | VkApplicationInfo - Structure specifying application info+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_APPLICATION_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - If @pApplicationName@ is not @NULL@, @pApplicationName@ /must/ be a+-- null-terminated UTF-8 string+--+-- - If @pEngineName@ is not @NULL@, @pEngineName@ /must/ be a+-- null-terminated UTF-8 string+--+-- = See Also+--+-- 'VkInstanceCreateInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkApplicationInfo = VkApplicationInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @pApplicationName@ is @NULL@ or is a pointer to a null-terminated UTF-8+ -- string containing the name of the application.+ vkPApplicationName :: Ptr CChar+ , -- | @applicationVersion@ is an unsigned integer variable containing the+ -- developer-supplied version number of the application.+ vkApplicationVersion :: Word32+ , -- | @pEngineName@ is @NULL@ or is a pointer to a null-terminated UTF-8+ -- string containing the name of the engine (if any) used to create the+ -- application.+ vkPEngineName :: Ptr CChar+ , -- | @engineVersion@ is an unsigned integer variable containing the+ -- developer-supplied version number of the engine used to create the+ -- application.+ vkEngineVersion :: Word32+ , -- | @apiVersion@ is the version of the Vulkan API against which the+ -- application expects to run, encoded as described in the [API Version+ -- Numbers and+ -- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)+ -- section. If @apiVersion@ is 0 the implementation /must/ ignore it,+ -- otherwise if the implementation does not support the requested+ -- @apiVersion@, or an effective substitute for @apiVersion@, it /must/+ -- return @VK_ERROR_INCOMPATIBLE_DRIVER@. The patch version number+ -- specified in @apiVersion@ is ignored when creating an instance object.+ -- Only the major and minor versions of the instance /must/ match those+ -- requested in @apiVersion@.+ vkApiVersion :: Word32+ }+ deriving (Eq, Show)++instance Storable VkApplicationInfo where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek ptr = VkApplicationInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 44)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkApplicationInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkApplicationInfo))+ *> poke (ptr `plusPtr` 16) (vkPApplicationName (poked :: VkApplicationInfo))+ *> poke (ptr `plusPtr` 24) (vkApplicationVersion (poked :: VkApplicationInfo))+ *> poke (ptr `plusPtr` 32) (vkPEngineName (poked :: VkApplicationInfo))+ *> poke (ptr `plusPtr` 40) (vkEngineVersion (poked :: VkApplicationInfo))+ *> poke (ptr `plusPtr` 44) (vkApiVersion (poked :: VkApplicationInfo))+-- | VkAllocationCallbacks - Structure containing callback function pointers+-- for memory allocation+--+-- == Valid Usage+--+-- - @pfnAllocation@ /must/ be a valid pointer to a valid user-defined+-- 'PFN_vkAllocationFunction'+--+-- - @pfnReallocation@ /must/ be a valid pointer to a valid user-defined+-- 'PFN_vkReallocationFunction'+--+-- - @pfnFree@ /must/ be a valid pointer to a valid user-defined+-- 'PFN_vkFreeFunction'+--+-- - If either of @pfnInternalAllocation@ or @pfnInternalFree@ is not+-- @NULL@, both /must/ be valid callbacks+--+-- = See Also+--+-- 'PFN_vkAllocationFunction', 'PFN_vkFreeFunction',+-- 'PFN_vkInternalAllocationNotification',+-- 'PFN_vkInternalFreeNotification', 'PFN_vkReallocationFunction',+-- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory',+-- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',+-- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.vkCreateBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.vkCreateCommandPool',+-- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkCreateDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCreateDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayModeKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',+-- 'Graphics.Vulkan.Core10.Event.vkCreateEvent',+-- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',+-- 'Graphics.Vulkan.Core10.Pass.vkCreateFramebuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',+-- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',+-- 'Graphics.Vulkan.Core10.Image.vkCreateImage',+-- 'Graphics.Vulkan.Core10.ImageView.vkCreateImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateIndirectCommandsLayoutNVX',+-- 'vkCreateInstance',+-- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateObjectTableNVX',+-- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.vkCreateQueryPool',+-- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',+-- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',+-- 'Graphics.Vulkan.Core10.Shader.vkCreateShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkCreateValidationCacheEXT',+-- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',+-- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.vkDestroyBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.vkDestroyCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDestroyDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkDestroyDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.vkDestroyDevice',+-- 'Graphics.Vulkan.Core10.Event.vkDestroyEvent',+-- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',+-- 'Graphics.Vulkan.Core10.Pass.vkDestroyFramebuffer',+-- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',+-- 'Graphics.Vulkan.Core10.ImageView.vkDestroyImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyIndirectCommandsLayoutNVX',+-- 'vkDestroyInstance',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyObjectTableNVX',+-- 'Graphics.Vulkan.Core10.Pipeline.vkDestroyPipeline',+-- 'Graphics.Vulkan.Core10.PipelineCache.vkDestroyPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.vkDestroyQueryPool',+-- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',+-- 'Graphics.Vulkan.Core10.Sampler.vkDestroySampler',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore',+-- 'Graphics.Vulkan.Core10.Shader.vkDestroyShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkDestroySurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkDestroySwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkDestroyValidationCacheEXT',+-- 'Graphics.Vulkan.Core10.Memory.vkFreeMemory',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT'+data VkAllocationCallbacks = VkAllocationCallbacks+ { -- | @pUserData@ is a value to be interpreted by the implementation of the+ -- callbacks. When any of the callbacks in @VkAllocationCallbacks@ are+ -- called, the Vulkan implementation will pass this value as the first+ -- parameter to the callback. This value /can/ vary each time an allocator+ -- is passed into a command, even when the same object takes an allocator+ -- in multiple commands.+ vkPUserData :: Ptr ()+ , -- | @pfnAllocation@ is a pointer to an application-defined memory allocation+ -- function of type 'PFN_vkAllocationFunction'.+ vkPfnAllocation :: PFN_vkAllocationFunction+ , -- | @pfnReallocation@ is a pointer to an application-defined memory+ -- reallocation function of type 'PFN_vkReallocationFunction'.+ vkPfnReallocation :: PFN_vkReallocationFunction+ , -- | @pfnFree@ is a pointer to an application-defined memory free function of+ -- type 'PFN_vkFreeFunction'.+ vkPfnFree :: PFN_vkFreeFunction+ , -- | @pfnInternalAllocation@ is a pointer to an application-defined function+ -- that is called by the implementation when the implementation makes+ -- internal allocations, and it is of type+ -- 'PFN_vkInternalAllocationNotification'.+ vkPfnInternalAllocation :: PFN_vkInternalAllocationNotification+ , -- | @pfnInternalFree@ is a pointer to an application-defined function that+ -- is called by the implementation when the implementation frees internal+ -- allocations, and it is of type 'PFN_vkInternalFreeNotification'.+ vkPfnInternalFree :: PFN_vkInternalFreeNotification+ }+ deriving (Eq, Show)++instance Storable VkAllocationCallbacks where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek ptr = VkAllocationCallbacks <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkPUserData (poked :: VkAllocationCallbacks))+ *> poke (ptr `plusPtr` 8) (vkPfnAllocation (poked :: VkAllocationCallbacks))+ *> poke (ptr `plusPtr` 16) (vkPfnReallocation (poked :: VkAllocationCallbacks))+ *> poke (ptr `plusPtr` 24) (vkPfnFree (poked :: VkAllocationCallbacks))+ *> poke (ptr `plusPtr` 32) (vkPfnInternalAllocation (poked :: VkAllocationCallbacks))+ *> poke (ptr `plusPtr` 40) (vkPfnInternalFree (poked :: VkAllocationCallbacks))+-- | VkInstanceCreateInfo - Structure specifying parameters of a newly+-- created instance+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportCallbackCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsMessengerCreateInfoEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_flags.VkValidationFlagsEXT'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- - @flags@ /must/ be @0@+--+-- - If @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a+-- valid pointer to a valid @VkApplicationInfo@ structure+--+-- - If @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a+-- valid pointer to an array of @enabledLayerCount@ null-terminated+-- UTF-8 strings+--+-- - If @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@+-- /must/ be a valid pointer to an array of @enabledExtensionCount@+-- null-terminated UTF-8 strings+--+-- = See Also+--+-- 'VkApplicationInfo', 'VkInstanceCreateFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateInstance'+data VkInstanceCreateInfo = VkInstanceCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkInstanceCreateFlags+ , -- | @pApplicationInfo@ is @NULL@ or a pointer to an instance of+ -- @VkApplicationInfo@. If not @NULL@, this information helps+ -- implementations recognize behavior inherent to classes of applications.+ -- 'VkApplicationInfo' is defined in detail below.+ vkPApplicationInfo :: Ptr VkApplicationInfo+ , -- | @enabledLayerCount@ is the number of global layers to enable.+ vkEnabledLayerCount :: Word32+ , -- | @ppEnabledLayerNames@ is a pointer to an array of @enabledLayerCount@+ -- null-terminated UTF-8 strings containing the names of layers to enable+ -- for the created instance. See the+ -- [Layers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-layers)+ -- section for further details.+ vkPPEnabledLayerNames :: Ptr (Ptr CChar)+ , -- | @enabledExtensionCount@ is the number of global extensions to enable.+ vkEnabledExtensionCount :: Word32+ , -- | @ppEnabledExtensionNames@ is a pointer to an array of+ -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the+ -- names of extensions to enable.+ vkPPEnabledExtensionNames :: Ptr (Ptr CChar)+ }+ deriving (Eq, Show)++instance Storable VkInstanceCreateInfo where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek ptr = VkInstanceCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 48)+ <*> peek (ptr `plusPtr` 56)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkPApplicationInfo (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkEnabledLayerCount (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkPPEnabledLayerNames (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 48) (vkEnabledExtensionCount (poked :: VkInstanceCreateInfo))+ *> poke (ptr `plusPtr` 56) (vkPPEnabledExtensionNames (poked :: VkInstanceCreateInfo))+-- | 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@, and @z@ members of a+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'+-- parameter /must/ always be zero.+--+-- - The @width@, @height@, and @depth@ members of a 'VkExtent3D'+-- parameter /must/ always match the width, height, and depth of+-- the image subresource corresponding to the parameter,+-- respectively.+--+-- - (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@, and @z@ of a+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'+-- parameter /must/ be integer multiples of Ax, Ay, and Az,+-- respectively.+--+-- - @width@ of a 'VkExtent3D' parameter /must/ be an integer+-- multiple of Ax, or else @x@ + @width@ /must/ equal the width of+-- the image subresource corresponding to the parameter.+--+-- - @height@ of a 'VkExtent3D' parameter /must/ be an integer+-- multiple of Ay, or else @y@ + @height@ /must/ equal the height+-- of the image subresource corresponding to the parameter.+--+-- - @depth@ of a 'VkExtent3D' parameter /must/ be an integer+-- multiple of Az, or else @z@ + @depth@ /must/ 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device)+-- section describes memory properties queried from the physical device.+--+-- For physical device feature queries see the+-- [Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features)+-- chapter.+--+-- = See Also+--+-- 'VkExtent3D',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkQueueFamilyProperties2',+-- 'VkQueueFlags', 'vkGetPhysicalDeviceQueueFamilyProperties'+data VkQueueFamilyProperties = VkQueueFamilyProperties+ { -- | @queueFlags@ is a bitmask of 'VkQueueFlagBits' indicating capabilities+ -- of the queues in this queue family.+ vkQueueFlags :: VkQueueFlags+ , -- | @queueCount@ is the unsigned integer count of queues in this queue+ -- family.+ vkQueueCount :: Word32+ , -- | @timestampValidBits@ is the unsigned integer count of meaningful bits in+ -- the timestamps written via @vkCmdWriteTimestamp@. The valid range for+ -- the count is 36..64 bits, or a value of 0, indicating no support for+ -- timestamps. Bits outside the valid range are guaranteed to be zeros.+ vkTimestampValidBits :: Word32+ , -- | @minImageTransferGranularity@ is the minimum granularity supported for+ -- image transfer operations on the queues in this queue family.+ vkMinImageTransferGranularity :: VkExtent3D+ }+ deriving (Eq, Show)++instance Storable VkQueueFamilyProperties where+ sizeOf ~_ = 24+ alignment ~_ = 4+ peek ptr = VkQueueFamilyProperties <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkQueueFlags (poked :: VkQueueFamilyProperties))+ *> poke (ptr `plusPtr` 4) (vkQueueCount (poked :: VkQueueFamilyProperties))+ *> poke (ptr `plusPtr` 8) (vkTimestampValidBits (poked :: VkQueueFamilyProperties))+ *> poke (ptr `plusPtr` 12) (vkMinImageTransferGranularity (poked :: VkQueueFamilyProperties))+-- | 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_BIT@+--+-- - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@+--+-- - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@+--+-- - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@+--+-- - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@+--+-- - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@+--+-- - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ |+-- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@+--+-- - @VK_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 @propertyFlags@ member+-- of __X__ is a strict subset of the set of bit flags returned in the+-- @propertyFlags@ member of __Y__.+--+-- - or the @propertyFlags@ members 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-bitmask-list)+-- 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',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceMemoryProperties2',+-- 'vkGetPhysicalDeviceMemoryProperties'+data VkPhysicalDeviceMemoryProperties = VkPhysicalDeviceMemoryProperties+ { -- | @memoryTypeCount@ is the number of valid elements in the @memoryTypes@+ -- array.+ vkMemoryTypeCount :: Word32+ , -- | @memoryTypes@ is an array of 'VkMemoryType' structures describing the+ -- /memory types/ that /can/ be used to access memory allocated from the+ -- heaps specified by @memoryHeaps@.+ vkMemoryTypes :: Vector VK_MAX_MEMORY_TYPES VkMemoryType+ , -- | @memoryHeapCount@ is the number of valid elements in the @memoryHeaps@+ -- array.+ vkMemoryHeapCount :: Word32+ , -- | @memoryHeaps@ is an array of 'VkMemoryHeap' structures describing the+ -- /memory heaps/ from which memory /can/ be allocated.+ vkMemoryHeaps :: Vector VK_MAX_MEMORY_HEAPS VkMemoryHeap+ }+ deriving (Eq, Show)++instance Storable VkPhysicalDeviceMemoryProperties where+ sizeOf ~_ = 520+ alignment ~_ = 8+ peek ptr = VkPhysicalDeviceMemoryProperties <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 260)+ <*> peek (ptr `plusPtr` 264)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkMemoryTypeCount (poked :: VkPhysicalDeviceMemoryProperties))+ *> poke (ptr `plusPtr` 4) (vkMemoryTypes (poked :: VkPhysicalDeviceMemoryProperties))+ *> poke (ptr `plusPtr` 260) (vkMemoryHeapCount (poked :: VkPhysicalDeviceMemoryProperties))+ *> poke (ptr `plusPtr` 264) (vkMemoryHeaps (poked :: VkPhysicalDeviceMemoryProperties))+-- | VkMemoryType - Structure specifying memory type+--+-- = See Also+--+-- 'VkMemoryPropertyFlags', 'VkPhysicalDeviceMemoryProperties'+data VkMemoryType = VkMemoryType+ { -- | @propertyFlags@ is a bitmask of 'VkMemoryPropertyFlagBits' of properties+ -- for this memory type.+ vkPropertyFlags :: VkMemoryPropertyFlags+ , -- | @heapIndex@ describes which memory heap this memory type corresponds to,+ -- and /must/ be less than @memoryHeapCount@ from the+ -- 'VkPhysicalDeviceMemoryProperties' structure.+ vkHeapIndex :: Word32+ }+ deriving (Eq, Show)++instance Storable VkMemoryType where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek ptr = VkMemoryType <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkPropertyFlags (poked :: VkMemoryType))+ *> poke (ptr `plusPtr` 4) (vkHeapIndex (poked :: VkMemoryType))+-- | VkMemoryHeap - Structure specifying a memory heap+--+-- = See Also+--+-- @VkDeviceSize@, 'VkMemoryHeapFlags', 'VkPhysicalDeviceMemoryProperties'+data VkMemoryHeap = VkMemoryHeap+ { -- | @size@ is the total memory size in bytes in the heap.+ vkSize :: VkDeviceSize+ , -- | @flags@ is a bitmask of 'VkMemoryHeapFlagBits' specifying attribute+ -- flags for the heap.+ vkFlags :: VkMemoryHeapFlags+ }+ deriving (Eq, Show)++instance Storable VkMemoryHeap where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek ptr = VkMemoryHeap <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSize (poked :: VkMemoryHeap))+ *> poke (ptr `plusPtr` 8) (vkFlags (poked :: VkMemoryHeap))+-- | 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',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkFormatProperties2',+-- 'vkGetPhysicalDeviceFormatProperties'+data VkFormatProperties = VkFormatProperties+ { -- | @linearTilingFeatures@ is a bitmask of 'VkFormatFeatureFlagBits'+ -- specifying features supported by images created with a @tiling@+ -- parameter of @VK_IMAGE_TILING_LINEAR@.+ vkLinearTilingFeatures :: VkFormatFeatureFlags+ , -- | @optimalTilingFeatures@ is a bitmask of 'VkFormatFeatureFlagBits'+ -- specifying features supported by images created with a @tiling@+ -- parameter of @VK_IMAGE_TILING_OPTIMAL@.+ vkOptimalTilingFeatures :: VkFormatFeatureFlags+ , -- | @bufferFeatures@ is a bitmask of 'VkFormatFeatureFlagBits' specifying+ -- features supported by buffers.+ vkBufferFeatures :: VkFormatFeatureFlags+ }+ deriving (Eq, Show)++instance Storable VkFormatProperties where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek ptr = VkFormatProperties <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkLinearTilingFeatures (poked :: VkFormatProperties))+ *> poke (ptr `plusPtr` 4) (vkOptimalTilingFeatures (poked :: VkFormatProperties))+ *> poke (ptr `plusPtr` 8) (vkBufferFeatures (poked :: VkFormatProperties))+-- | VkImageFormatProperties - Structure specifying a image format properties+--+-- = Members+--+-- - @maxExtent@ are the maximum image dimensions. See the [Allowed+-- Extent+-- Values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-extentperimagetype)+-- section below for how these values are constrained by @type@.+--+-- - @maxMipLevels@ is the maximum number of mipmap levels.+-- @maxMipLevels@ /must/ be equal to ⌈log2(max(@width@, @height@,+-- @depth@))⌉ + 1, where @width@, @height@, and @depth@ are taken from+-- the corresponding members of @maxExtent@, except when one of the+-- following conditions is true, in which case it /may/ instead be @1@:+--+-- - @vkGetPhysicalDeviceImageFormatProperties@::@tiling@ was+-- @VK_IMAGE_TILING_LINEAR@+--+-- - the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2'::@pNext@+-- chain included an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'+-- with a handle type included in the @handleTypes@ member for+-- which mipmap image support is not required+--+-- - @maxArrayLayers@ is the maximum number of array layers.+-- @maxArrayLayers@ /must/ either be equal to 1 or be greater than or+-- equal to the @maxImageArrayLayers@ member of+-- 'VkPhysicalDeviceLimits'. A value of 1 is valid only if @tiling@ is+-- @VK_IMAGE_TILING_LINEAR@ or if @type@ is @VK_IMAGE_TYPE_3D@.+--+-- - @sampleCounts@ is a bitmask of 'VkSampleCountFlagBits' specifying+-- all the supported sample counts for this image as described+-- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-supported-sample-counts).+--+-- - @maxResourceSize@ is 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. @maxResourceSize@ /must/ 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 'Graphics.Vulkan.Core10.Image.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 'Graphics.Vulkan.Core10.Image.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',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2',+-- 'VkSampleCountFlags', 'vkGetPhysicalDeviceImageFormatProperties'+data VkImageFormatProperties = VkImageFormatProperties+ { -- No documentation found for Nested "VkImageFormatProperties" "maxExtent"+ vkMaxExtent :: VkExtent3D+ , -- No documentation found for Nested "VkImageFormatProperties" "maxMipLevels"+ vkMaxMipLevels :: Word32+ , -- No documentation found for Nested "VkImageFormatProperties" "maxArrayLayers"+ vkMaxArrayLayers :: Word32+ , -- No documentation found for Nested "VkImageFormatProperties" "sampleCounts"+ vkSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkImageFormatProperties" "maxResourceSize"+ vkMaxResourceSize :: VkDeviceSize+ }+ deriving (Eq, Show)++instance Storable VkImageFormatProperties where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek ptr = VkImageFormatProperties <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkMaxExtent (poked :: VkImageFormatProperties))+ *> poke (ptr `plusPtr` 12) (vkMaxMipLevels (poked :: VkImageFormatProperties))+ *> poke (ptr `plusPtr` 16) (vkMaxArrayLayers (poked :: VkImageFormatProperties))+ *> poke (ptr `plusPtr` 20) (vkSampleCounts (poked :: VkImageFormatProperties))+ *> poke (ptr `plusPtr` 24) (vkMaxResourceSize (poked :: VkImageFormatProperties))+-- | 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+--+-- - @robustBufferAccess@ specifies that accesses to buffers are+-- bounds-checked against the range of the buffer descriptor (as+-- determined by @VkDescriptorBufferInfo@::@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 @OpImageTexelPointer@ and 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 @OpImageTexelPointer@ and 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 to @OpConstantNull@ are 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 @OpLoad@ instruction 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.+--+-- - 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@, if @bindingStride@ == 0; or+--+-- - (@vertexBufferRangeSize@ - (@vertexBufferRangeSize@ %+-- @bindingStride@))+--+-- where @vertexBufferRangeSize@ is the byte size of the memory+-- range bound to the vertex buffer binding and @bindingStride@ is+-- 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 @robustBufferAccess@ is not enabled, out of bounds accesses+-- /may/ corrupt any memory within the process and cause undefined+-- behavior up to and including application termination.+--+-- - @fullDrawIndexUint32@ specifies the full 32-bit range of indices is+-- supported for indexed draw calls when using a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' of+-- @VK_INDEX_TYPE_UINT32@. @maxDrawIndexedIndexValue@ is the maximum+-- index value that /may/ be used (aside from the primitive restart+-- index, which is always 232-1 when the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' is+-- @VK_INDEX_TYPE_UINT32@). If this feature is supported,+-- @maxDrawIndexedIndexValue@ /must/ be 232-1; otherwise it /must/ be+-- no smaller than 224-1. See+-- [maxDrawIndexedIndexValue](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxDrawIndexedIndexValue).+--+-- - @imageCubeArray@ specifies whether image views with a+-- 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of+-- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ /can/ be created, and that the+-- corresponding @SampledCubeArray@ and @ImageCubeArray@ SPIR-V+-- capabilities /can/ be used in shader code.+--+-- - @independentBlend@ specifies whether the+-- @VkPipelineColorBlendAttachmentState@ settings are controlled+-- independently per-attachment. If this feature is not enabled, the+-- @VkPipelineColorBlendAttachmentState@ settings for all color+-- attachments /must/ be identical. Otherwise, a different+-- @VkPipelineColorBlendAttachmentState@ /can/ be provided for each+-- bound color attachment.+--+-- - @geometryShader@ specifies whether geometry shaders are supported.+-- If this feature is not enabled, the @VK_SHADER_STAGE_GEOMETRY_BIT@+-- and @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ enum values /must/ not+-- be used. This also specifies whether shader modules /can/ declare+-- the @Geometry@ capability.+--+-- - @tessellationShader@ specifies whether tessellation control and+-- evaluation shaders are supported. If this feature is not enabled,+-- the @VK_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@, and+-- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@ enum+-- values /must/ not be used. This also specifies whether shader+-- modules /can/ declare the @Tessellation@ capability.+--+-- - @sampleRateShading@ specifies whether [Sample+-- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading)+-- and multisample interpolation are supported. If this feature is not+-- enabled, the @sampleShadingEnable@ member of the+-- @VkPipelineMultisampleStateCreateInfo@ structure /must/ be set to+-- @VK_FALSE@ and the @minSampleShading@ member is ignored. This also+-- specifies whether shader modules /can/ declare the+-- @SampleRateShading@ capability.+--+-- - @dualSrcBlend@ specifies whether blend operations which take two+-- sources are supported. If this feature is not enabled, the+-- @VK_BLEND_FACTOR_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_SRC1_ALPHA@, and+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ enum values /must/ not be+-- used as source or destination blending factors. See+-- [{html_spec_relative}#framebuffer-dsb](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-dsb).+--+-- - @logicOp@ specifies whether logic operations are supported. If this+-- feature is not enabled, the @logicOpEnable@ member of the+-- @VkPipelineColorBlendStateCreateInfo@ structure /must/ be set to+-- @VK_FALSE@, and the @logicOp@ member is ignored.+--+-- - @multiDrawIndirect@ specifies whether multiple draw indirect is+-- supported. If this feature is not enabled, the @drawCount@ parameter+-- to the @vkCmdDrawIndirect@ and @vkCmdDrawIndexedIndirect@ commands+-- /must/ be 0 or 1. The @maxDrawIndirectCount@ member of the+-- @VkPhysicalDeviceLimits@ structure /must/ also be 1 if this feature+-- is not supported. See+-- [maxDrawIndirectCount](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxDrawIndirectCount).+--+-- - @drawIndirectFirstInstance@ specifies whether indirect draw calls+-- support the @firstInstance@ parameter. If this feature is not+-- enabled, the @firstInstance@ member of all @VkDrawIndirectCommand@+-- and @VkDrawIndexedIndirectCommand@ structures that are provided to+-- the @vkCmdDrawIndirect@ and @vkCmdDrawIndexedIndirect@ commands+-- /must/ be 0.+--+-- - @depthClamp@ specifies whether depth clamping is supported. If this+-- feature is not enabled, the @depthClampEnable@ member of the+-- @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set to+-- @VK_FALSE@. Otherwise, setting @depthClampEnable@ to @VK_TRUE@ will+-- enable depth clamping.+--+-- - @depthBiasClamp@ specifies whether depth bias clamping is supported.+-- If this feature is not enabled, the @depthBiasClamp@ member of the+-- @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set to+-- 0.0 unless the @VK_DYNAMIC_STATE_DEPTH_BIAS@ dynamic state is+-- enabled, and the @depthBiasClamp@ parameter to @vkCmdSetDepthBias@+-- /must/ be set to 0.0.+--+-- - @fillModeNonSolid@ specifies whether point and wireframe fill modes+-- are supported. If this feature is not enabled, the+-- @VK_POLYGON_MODE_POINT@ and @VK_POLYGON_MODE_LINE@ enum values+-- /must/ not be used.+--+-- - @depthBounds@ specifies whether depth bounds tests are supported. If+-- this feature is not enabled, the @depthBoundsTestEnable@ member of+-- the @VkPipelineDepthStencilStateCreateInfo@ structure /must/ be set+-- to @VK_FALSE@. When @depthBoundsTestEnable@ is set to @VK_FALSE@,+-- the @minDepthBounds@ and @maxDepthBounds@ members of the+-- @VkPipelineDepthStencilStateCreateInfo@ structure are ignored.+--+-- - @wideLines@ specifies whether lines with width other than 1.0 are+-- supported. If this feature is not enabled, the @lineWidth@ member of+-- the @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set+-- to 1.0 unless the @VK_DYNAMIC_STATE_LINE_WIDTH@ dynamic state is+-- enabled, and the @lineWidth@ parameter to @vkCmdSetLineWidth@ /must/+-- be set to 1.0. When this feature is supported, the range and+-- granularity of supported line widths are indicated by the+-- @lineWidthRange@ and @lineWidthGranularity@ members of the+-- @VkPhysicalDeviceLimits@ structure, respectively.+--+-- - @largePoints@ specifies 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 the @pointSizeRange@ and+-- @pointSizeGranularity@ members of the @VkPhysicalDeviceLimits@+-- structure, respectively.+--+-- - @alphaToOne@ specifies 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 the @alphaToOneEnable@ member of the+-- @VkPipelineMultisampleStateCreateInfo@ structure /must/ be set to+-- @VK_FALSE@. Otherwise setting @alphaToOneEnable@ to @VK_TRUE@ will+-- enable alpha-to-one behavior.+--+-- - @multiViewport@ specifies whether more than one viewport is+-- supported. If this feature is not enabled, the @viewportCount@ and+-- @scissorCount@ members of the @VkPipelineViewportStateCreateInfo@+-- structure /must/ be set to 1. Similarly, the @viewportCount@+-- parameter to the @vkCmdSetViewport@ command and the @scissorCount@+-- parameter to the @vkCmdSetScissor@ command /must/ be 1, and the+-- @firstViewport@ parameter to the @vkCmdSetViewport@ command and the+-- @firstScissor@ parameter to the @vkCmdSetScissor@ command /must/ be+-- 0.+--+-- - @samplerAnisotropy@ specifies whether anisotropic filtering is+-- supported. If this feature is not enabled, the @anisotropyEnable@+-- member of the @VkSamplerCreateInfo@ structure /must/ be @VK_FALSE@.+--+-- - @textureCompressionETC2@ specifies whether all of the ETC2 and EAC+-- compressed texture formats are supported. If this feature is+-- enabled, then the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,+-- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/+-- be supported in @optimalTilingFeatures@ for 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@+--+-- 'vkGetPhysicalDeviceFormatProperties' and+-- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check+-- for additional supported properties of individual formats.+--+-- - @textureCompressionASTC_LDR@ specifies whether all of the ASTC LDR+-- compressed texture formats are supported. If this feature is+-- enabled, then the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,+-- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/+-- be supported in @optimalTilingFeatures@ for 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@+--+-- 'vkGetPhysicalDeviceFormatProperties' and+-- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check+-- for additional supported properties of individual formats.+--+-- - @textureCompressionBC@ specifies whether all of the BC compressed+-- texture formats are supported. If this feature is enabled, then the+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,+-- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/+-- be supported in @optimalTilingFeatures@ for 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@+--+-- 'vkGetPhysicalDeviceFormatProperties' and+-- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check+-- for additional supported properties of individual formats.+--+-- - @occlusionQueryPrecise@ specifies whether occlusion queries+-- returning actual sample counts are supported. Occlusion queries are+-- created in a @VkQueryPool@ by specifying the @queryType@ of+-- @VK_QUERY_TYPE_OCCLUSION@ in the @VkQueryPoolCreateInfo@ structure+-- which is passed to @vkCreateQueryPool@. If this feature is enabled,+-- queries of this type /can/ enable @VK_QUERY_CONTROL_PRECISE_BIT@ in+-- the @flags@ parameter to @vkCmdBeginQuery@. 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 and @VK_QUERY_CONTROL_PRECISE_BIT@ is+-- set, occlusion queries will report the actual number of samples+-- passed.+--+-- - @pipelineStatisticsQuery@ specifies whether the pipeline statistics+-- queries are supported. If this feature is not enabled, queries of+-- type @VK_QUERY_TYPE_PIPELINE_STATISTICS@ /cannot/ be created, and+-- none of the+-- 'Graphics.Vulkan.Core10.Query.VkQueryPipelineStatisticFlagBits' bits+-- /can/ be set in the @pipelineStatistics@ member of the+-- @VkQueryPoolCreateInfo@ structure.+--+-- - @vertexPipelineStoresAndAtomics@ specifies 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 the @NonWriteable@ decoration (or the @readonly@+-- memory qualifier in GLSL).+--+-- - @fragmentStoresAndAtomics@ specifies 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 the @NonWriteable@+-- decoration (or the @readonly@ memory qualifier in GLSL).+--+-- - @shaderTessellationAndGeometryPointSize@ specifies whether the+-- @PointSize@ built-in decoration is available in the tessellation+-- control, tessellation evaluation, and geometry shader stages. If+-- this feature is not enabled, members decorated with the @PointSize@+-- built-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 the @TessellationPointSize@ capability for tessellation+-- control and evaluation shaders, or if the shader modules /can/+-- declare the @GeometryPointSize@ capability for geometry shaders. An+-- implementation supporting this feature /must/ also support one or+-- both of the+-- [@tessellationShader@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- or+-- [@geometryShader@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- features.+--+-- - @shaderImageGatherExtended@ specifies whether the extended set of+-- image gather instructions are available in shader code. If this+-- feature is not enabled, the @OpImage@*@Gather@ instructions do not+-- support the @Offset@ and @ConstOffsets@ operands. This also+-- specifies whether shader modules /can/ declare the+-- @ImageGatherExtended@ capability.+--+-- - @shaderStorageImageExtendedFormats@ specifies whether the extended+-- storage image formats are available in shader code. If this feature+-- is not enabled, the formats requiring the+-- @StorageImageExtendedFormats@ capability are not supported for+-- storage images. This also specifies whether shader modules /can/+-- declare the @StorageImageExtendedFormats@ capability.+--+-- - @shaderStorageImageMultisample@ specifies whether multisampled+-- storage images are supported. If this feature is not enabled, images+-- that are created with a @usage@ that includes+-- @VK_IMAGE_USAGE_STORAGE_BIT@ /must/ be created with @samples@ equal+-- to @VK_SAMPLE_COUNT_1_BIT@. This also specifies whether shader+-- modules /can/ declare the @StorageImageMultisample@ capability.+--+-- - @shaderStorageImageReadWithoutFormat@ specifies whether storage+-- images require a format qualifier to be specified when reading from+-- storage images. If this feature is not enabled, the @OpImageRead@+-- instruction /must/ not have an @OpTypeImage@ of @Unknown@. This also+-- specifies whether shader modules /can/ declare the+-- @StorageImageReadWithoutFormat@ capability.+--+-- - @shaderStorageImageWriteWithoutFormat@ specifies whether storage+-- images require a format qualifier to be specified when writing to+-- storage images. If this feature is not enabled, the @OpImageWrite@+-- instruction /must/ not have an @OpTypeImage@ of @Unknown@. This also+-- specifies whether shader modules /can/ declare the+-- @StorageImageWriteWithoutFormat@ capability.+--+-- - @shaderUniformBufferArrayDynamicIndexing@ specifies 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 of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ /must/ be indexed only+-- by constant integral expressions when aggregated into arrays in+-- shader code. This also specifies whether shader modules /can/+-- declare the @UniformBufferArrayDynamicIndexing@ capability.+--+-- - @shaderSampledImageArrayDynamicIndexing@ specifies 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 of @VK_DESCRIPTOR_TYPE_SAMPLER@,+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or+-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ be indexed only by+-- constant integral expressions when aggregated into arrays in shader+-- code. This also specifies whether shader modules /can/ declare the+-- @SampledImageArrayDynamicIndexing@ capability.+--+-- - @shaderStorageBufferArrayDynamicIndexing@ specifies 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 of+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ be indexed only+-- by constant integral expressions when aggregated into arrays in+-- shader code. This also specifies whether shader modules /can/+-- declare the @StorageBufferArrayDynamicIndexing@ capability.+--+-- - @shaderStorageImageArrayDynamicIndexing@ specifies 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 of+-- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ be indexed only by+-- constant integral expressions when aggregated into arrays in shader+-- code. This also specifies whether shader modules /can/ declare the+-- @StorageImageArrayDynamicIndexing@ capability.+--+-- - @shaderClipDistance@ specifies whether clip distances are supported+-- in shader code. If this feature is not enabled, any members+-- decorated with the @ClipDistance@ built-in decoration /must/ not be+-- read from or written to in shader modules. This also specifies+-- whether shader modules /can/ declare the @ClipDistance@ capability.+--+-- - @shaderCullDistance@ specifies whether cull distances are supported+-- in shader code. If this feature is not enabled, any members+-- decorated with the @CullDistance@ built-in decoration /must/ not be+-- read from or written to in shader modules. This also specifies+-- whether shader modules /can/ declare the @CullDistance@ capability.+--+-- - @shaderFloat64@ specifies 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 the @Float64@+-- capability.+--+-- - @shaderInt64@ specifies 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 the @Int64@+-- capability.+--+-- - @shaderInt16@ specifies 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 the @Int16@+-- capability.+--+-- - @shaderResourceResidency@ specifies whether image operations that+-- return resource residency information are supported in shader code.+-- If this feature is not enabled, the @OpImageSparse@* instructions+-- /must/ not be used in shader code. This also specifies whether+-- shader modules /can/ declare the @SparseResidency@ capability. The+-- feature requires at least one of the @sparseResidency*@ features to+-- be supported.+--+-- - @shaderResourceMinLod@ specifies whether image operations that+-- specify the minimum resource LOD are supported in shader code. If+-- this feature is not enabled, the @MinLod@ image operand /must/ not+-- be used in shader code. This also specifies whether shader modules+-- /can/ declare the @MinLod@ capability.+--+-- - @sparseBinding@ specifies 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 the @vkBindBufferMemory@ and+-- @vkBindImageMemory@ commands. In this case, buffers and images+-- /must/ not be created with @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ and+-- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ set in the @flags@ member of+-- the @VkBufferCreateInfo@ and @VkImageCreateInfo@ structures,+-- respectively. Otherwise resource memory /can/ be managed as+-- described in [Sparse Resource+-- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures).+--+-- - @sparseResidencyBuffer@ specifies whether the device /can/ access+-- partially resident buffers. If this feature is not enabled, buffers+-- /must/ not be created with @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@+-- set in the @flags@ member of the @VkBufferCreateInfo@ structure.+--+-- - @sparseResidencyImage2D@ specifies whether the device /can/ access+-- partially resident 2D images with 1 sample per pixel. If this+-- feature is not enabled, images with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_1_BIT@+-- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@+-- set in the @flags@ member of the @VkImageCreateInfo@ structure.+--+-- - @sparseResidencyImage3D@ specifies whether the device /can/ access+-- partially resident 3D images. If this feature is not enabled, images+-- with an @imageType@ of @VK_IMAGE_TYPE_3D@ /must/ not be created with+-- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ set in the @flags@ member of+-- the @VkImageCreateInfo@ structure.+--+-- - @sparseResidency2Samples@ specifies whether the physical device+-- /can/ access partially resident 2D images with 2 samples per pixel.+-- If this feature is not enabled, images with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_2_BIT@+-- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@+-- set in the @flags@ member of the @VkImageCreateInfo@ structure.+--+-- - @sparseResidency4Samples@ specifies whether the physical device+-- /can/ access partially resident 2D images with 4 samples per pixel.+-- If this feature is not enabled, images with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_4_BIT@+-- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@+-- set in the @flags@ member of the @VkImageCreateInfo@ structure.+--+-- - @sparseResidency8Samples@ specifies whether the physical device+-- /can/ access partially resident 2D images with 8 samples per pixel.+-- If this feature is not enabled, images with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_8_BIT@+-- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@+-- set in the @flags@ member of the @VkImageCreateInfo@ structure.+--+-- - @sparseResidency16Samples@ specifies whether the physical device+-- /can/ access partially resident 2D images with 16 samples per pixel.+-- If this feature is not enabled, images with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_16_BIT@+-- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@+-- set in the @flags@ member of the @VkImageCreateInfo@ structure.+--+-- - @sparseResidencyAliased@ specifies whether the physical device /can/+-- correctly access data aliased into multiple locations. If this+-- feature is not enabled, the @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@+-- and @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ enum values /must/ not be+-- used in @flags@ members of the @VkBufferCreateInfo@ and+-- @VkImageCreateInfo@ structures, respectively.+--+-- - @variableMultisampleRate@ specifies whether all pipelines that will+-- be bound to a command buffer during a subpass with no attachments+-- /must/ have the same value for+-- @VkPipelineMultisampleStateCreateInfo@::@rasterizationSamples@. If+-- set to @VK_TRUE@, the implementation supports variable multisample+-- rates in a subpass with no attachments. If set to @VK_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.+--+-- - @inheritedQueries@ specifies whether a secondary command buffer+-- /may/ be executed while a query is active.+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',+-- 'vkGetPhysicalDeviceFeatures'+data VkPhysicalDeviceFeatures = VkPhysicalDeviceFeatures+ { -- No documentation found for Nested "VkPhysicalDeviceFeatures" "robustBufferAccess"+ vkRobustBufferAccess :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fullDrawIndexUint32"+ vkFullDrawIndexUint32 :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "imageCubeArray"+ vkImageCubeArray :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "independentBlend"+ vkIndependentBlend :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "geometryShader"+ vkGeometryShader :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "tessellationShader"+ vkTessellationShader :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sampleRateShading"+ vkSampleRateShading :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "dualSrcBlend"+ vkDualSrcBlend :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "logicOp"+ vkLogicOp :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "multiDrawIndirect"+ vkMultiDrawIndirect :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "drawIndirectFirstInstance"+ vkDrawIndirectFirstInstance :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthClamp"+ vkDepthClamp :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthBiasClamp"+ vkDepthBiasClamp :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fillModeNonSolid"+ vkFillModeNonSolid :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthBounds"+ vkDepthBounds :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "wideLines"+ vkWideLines :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "largePoints"+ vkLargePoints :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "alphaToOne"+ vkAlphaToOne :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "multiViewport"+ vkMultiViewport :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "samplerAnisotropy"+ vkSamplerAnisotropy :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionETC2"+ vkTextureCompressionETC2 :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionASTC_LDR"+ vkTextureCompressionASTC_LDR :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionBC"+ vkTextureCompressionBC :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "occlusionQueryPrecise"+ vkOcclusionQueryPrecise :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "pipelineStatisticsQuery"+ vkPipelineStatisticsQuery :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vertexPipelineStoresAndAtomics"+ vkVertexPipelineStoresAndAtomics :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fragmentStoresAndAtomics"+ vkFragmentStoresAndAtomics :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderTessellationAndGeometryPointSize"+ vkShaderTessellationAndGeometryPointSize :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderImageGatherExtended"+ vkShaderImageGatherExtended :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageExtendedFormats"+ vkShaderStorageImageExtendedFormats :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageMultisample"+ vkShaderStorageImageMultisample :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageReadWithoutFormat"+ vkShaderStorageImageReadWithoutFormat :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageWriteWithoutFormat"+ vkShaderStorageImageWriteWithoutFormat :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderUniformBufferArrayDynamicIndexing"+ vkShaderUniformBufferArrayDynamicIndexing :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderSampledImageArrayDynamicIndexing"+ vkShaderSampledImageArrayDynamicIndexing :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageBufferArrayDynamicIndexing"+ vkShaderStorageBufferArrayDynamicIndexing :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageArrayDynamicIndexing"+ vkShaderStorageImageArrayDynamicIndexing :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderClipDistance"+ vkShaderClipDistance :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderCullDistance"+ vkShaderCullDistance :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderFloat64"+ vkShaderFloat64 :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderInt64"+ vkShaderInt64 :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderInt16"+ vkShaderInt16 :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderResourceResidency"+ vkShaderResourceResidency :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderResourceMinLod"+ vkShaderResourceMinLod :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseBinding"+ vkSparseBinding :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyBuffer"+ vkSparseResidencyBuffer :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyImage2D"+ vkSparseResidencyImage2D :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyImage3D"+ vkSparseResidencyImage3D :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency2Samples"+ vkSparseResidency2Samples :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency4Samples"+ vkSparseResidency4Samples :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency8Samples"+ vkSparseResidency8Samples :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency16Samples"+ vkSparseResidency16Samples :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyAliased"+ vkSparseResidencyAliased :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "variableMultisampleRate"+ vkVariableMultisampleRate :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "inheritedQueries"+ vkInheritedQueries :: VkBool32+ }+ deriving (Eq, Show)++instance Storable VkPhysicalDeviceFeatures where+ sizeOf ~_ = 220+ alignment ~_ = 4+ peek ptr = VkPhysicalDeviceFeatures <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 36)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 44)+ <*> peek (ptr `plusPtr` 48)+ <*> peek (ptr `plusPtr` 52)+ <*> peek (ptr `plusPtr` 56)+ <*> peek (ptr `plusPtr` 60)+ <*> peek (ptr `plusPtr` 64)+ <*> peek (ptr `plusPtr` 68)+ <*> peek (ptr `plusPtr` 72)+ <*> peek (ptr `plusPtr` 76)+ <*> peek (ptr `plusPtr` 80)+ <*> peek (ptr `plusPtr` 84)+ <*> peek (ptr `plusPtr` 88)+ <*> peek (ptr `plusPtr` 92)+ <*> peek (ptr `plusPtr` 96)+ <*> peek (ptr `plusPtr` 100)+ <*> peek (ptr `plusPtr` 104)+ <*> peek (ptr `plusPtr` 108)+ <*> peek (ptr `plusPtr` 112)+ <*> peek (ptr `plusPtr` 116)+ <*> peek (ptr `plusPtr` 120)+ <*> peek (ptr `plusPtr` 124)+ <*> peek (ptr `plusPtr` 128)+ <*> peek (ptr `plusPtr` 132)+ <*> peek (ptr `plusPtr` 136)+ <*> peek (ptr `plusPtr` 140)+ <*> peek (ptr `plusPtr` 144)+ <*> peek (ptr `plusPtr` 148)+ <*> peek (ptr `plusPtr` 152)+ <*> peek (ptr `plusPtr` 156)+ <*> peek (ptr `plusPtr` 160)+ <*> peek (ptr `plusPtr` 164)+ <*> peek (ptr `plusPtr` 168)+ <*> peek (ptr `plusPtr` 172)+ <*> peek (ptr `plusPtr` 176)+ <*> peek (ptr `plusPtr` 180)+ <*> peek (ptr `plusPtr` 184)+ <*> peek (ptr `plusPtr` 188)+ <*> peek (ptr `plusPtr` 192)+ <*> peek (ptr `plusPtr` 196)+ <*> peek (ptr `plusPtr` 200)+ <*> peek (ptr `plusPtr` 204)+ <*> peek (ptr `plusPtr` 208)+ <*> peek (ptr `plusPtr` 212)+ <*> peek (ptr `plusPtr` 216)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkRobustBufferAccess (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 4) (vkFullDrawIndexUint32 (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 8) (vkImageCubeArray (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 12) (vkIndependentBlend (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 16) (vkGeometryShader (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 20) (vkTessellationShader (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 24) (vkSampleRateShading (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 28) (vkDualSrcBlend (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 32) (vkLogicOp (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 36) (vkMultiDrawIndirect (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 40) (vkDrawIndirectFirstInstance (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 44) (vkDepthClamp (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 52) (vkFillModeNonSolid (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 56) (vkDepthBounds (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 60) (vkWideLines (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 64) (vkLargePoints (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 68) (vkAlphaToOne (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 72) (vkMultiViewport (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 76) (vkSamplerAnisotropy (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 80) (vkTextureCompressionETC2 (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 84) (vkTextureCompressionASTC_LDR (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 88) (vkTextureCompressionBC (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 92) (vkOcclusionQueryPrecise (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 96) (vkPipelineStatisticsQuery (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 100) (vkVertexPipelineStoresAndAtomics (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 104) (vkFragmentStoresAndAtomics (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 108) (vkShaderTessellationAndGeometryPointSize (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 112) (vkShaderImageGatherExtended (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 116) (vkShaderStorageImageExtendedFormats (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 120) (vkShaderStorageImageMultisample (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 124) (vkShaderStorageImageReadWithoutFormat (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 128) (vkShaderStorageImageWriteWithoutFormat (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 132) (vkShaderUniformBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 136) (vkShaderSampledImageArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 140) (vkShaderStorageBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 144) (vkShaderStorageImageArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 148) (vkShaderClipDistance (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 152) (vkShaderCullDistance (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 156) (vkShaderFloat64 (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 160) (vkShaderInt64 (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 164) (vkShaderInt16 (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 168) (vkShaderResourceResidency (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 172) (vkShaderResourceMinLod (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 176) (vkSparseBinding (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 180) (vkSparseResidencyBuffer (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 184) (vkSparseResidencyImage2D (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 188) (vkSparseResidencyImage3D (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 192) (vkSparseResidency2Samples (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 196) (vkSparseResidency4Samples (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 200) (vkSparseResidency8Samples (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 204) (vkSparseResidency16Samples (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 208) (vkSparseResidencyAliased (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 212) (vkVariableMultisampleRate (poked :: VkPhysicalDeviceFeatures))+ *> poke (ptr `plusPtr` 216) (vkInheritedQueries (poked :: VkPhysicalDeviceFeatures))+-- | VkPhysicalDeviceSparseProperties - Structure specifying physical device+-- sparse memory properties+--+-- = See Also+--+-- @VkBool32@, 'VkPhysicalDeviceProperties'+data VkPhysicalDeviceSparseProperties = VkPhysicalDeviceSparseProperties+ { -- | @residencyStandard2DBlockShape@ is @VK_TRUE@ if the physical device will+ -- access all single-sample 2D sparse resources using the standard sparse+ -- image block shapes (based on image format), as described in the+ -- [Standard Sparse Image Block Shapes (Single+ -- Sample)](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle)+ -- table. If this property is not supported the value returned in the+ -- @imageGranularity@ member of the @VkSparseImageFormatProperties@+ -- structure for single-sample 2D images is not /required/ to match the+ -- standard sparse image block dimensions listed in the table.+ vkResidencyStandard2DBlockShape :: VkBool32+ , -- | @residencyStandard2DMultisampleBlockShape@ is @VK_TRUE@ if the physical+ -- device will access all multisample 2D sparse resources using the+ -- standard sparse image block shapes (based on image format), as described+ -- in the [Standard Sparse Image Block Shapes+ -- (MSAA)](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa)+ -- table. If this property is not supported, the value returned in the+ -- @imageGranularity@ member of the @VkSparseImageFormatProperties@+ -- structure for multisample 2D images is not /required/ to match the+ -- standard sparse image block dimensions listed in the table.+ vkResidencyStandard2DMultisampleBlockShape :: VkBool32+ , -- | @residencyStandard3DBlockShape@ is @VK_TRUE@ if the physical device will+ -- access all 3D sparse resources using the standard sparse image block+ -- shapes (based on image format), as described in the [Standard Sparse+ -- Image Block Shapes (Single+ -- Sample)](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle)+ -- table. If this property is not supported, the value returned in the+ -- @imageGranularity@ member of the @VkSparseImageFormatProperties@+ -- structure for 3D images is not /required/ to match the standard sparse+ -- image block dimensions listed in the table.+ vkResidencyStandard3DBlockShape :: VkBool32+ , -- | @residencyAlignedMipSize@ is @VK_TRUE@ if images with mip level+ -- dimensions that are not integer multiples of the corresponding+ -- dimensions of the sparse image block /may/ be placed in the mip tail. If+ -- this property is not reported, only mip levels with dimensions smaller+ -- than the @imageGranularity@ member of the+ -- @VkSparseImageFormatProperties@ structure will be placed in the mip+ -- tail. If this property is reported the implementation is allowed to+ -- return @VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT@ in the @flags@+ -- member of @VkSparseImageFormatProperties@, indicating that mip level+ -- dimensions that are not integer multiples of the corresponding+ -- dimensions of the sparse image block will be placed in the mip tail.+ vkResidencyAlignedMipSize :: VkBool32+ , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/+ -- consistently access non-resident regions of a resource. If this property+ -- is @VK_TRUE@, access to non-resident regions of resources will be+ -- guaranteed to return values as if the resource were populated with 0;+ -- writes to non-resident regions will be discarded.+ vkResidencyNonResidentStrict :: VkBool32+ }+ deriving (Eq, Show)++instance Storable VkPhysicalDeviceSparseProperties where+ sizeOf ~_ = 20+ alignment ~_ = 4+ peek ptr = VkPhysicalDeviceSparseProperties <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkResidencyStandard2DBlockShape (poked :: VkPhysicalDeviceSparseProperties))+ *> poke (ptr `plusPtr` 4) (vkResidencyStandard2DMultisampleBlockShape (poked :: VkPhysicalDeviceSparseProperties))+ *> poke (ptr `plusPtr` 8) (vkResidencyStandard3DBlockShape (poked :: VkPhysicalDeviceSparseProperties))+ *> poke (ptr `plusPtr` 12) (vkResidencyAlignedMipSize (poked :: VkPhysicalDeviceSparseProperties))+ *> poke (ptr `plusPtr` 16) (vkResidencyNonResidentStrict (poked :: VkPhysicalDeviceSparseProperties))+-- | VkPhysicalDeviceLimits - Structure reporting implementation-dependent+-- physical device limits+--+-- = Members+--+-- - @maxImageDimension1D@ is the maximum dimension (@width@) supported+-- for all images created with an @imageType@ of @VK_IMAGE_TYPE_1D@.+--+-- - @maxImageDimension2D@ is the maximum dimension (@width@ or @height@)+-- supported for all images created with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and without @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@+-- set in @flags@.+--+-- - @maxImageDimension3D@ is the maximum dimension (@width@, @height@,+-- or @depth@) supported for all images created with an @imageType@ of+-- @VK_IMAGE_TYPE_3D@.+--+-- - @maxImageDimensionCube@ is the maximum dimension (@width@ or+-- @height@) supported for all images created with an @imageType@ of+-- @VK_IMAGE_TYPE_2D@ and with @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@+-- set in @flags@.+--+-- - @maxImageArrayLayers@ is the maximum number of layers+-- (@arrayLayers@) for an image.+--+-- - @maxTexelBufferElements@ is the maximum number of addressable texels+-- for a buffer view created on a buffer which was created with the+-- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or+-- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set in the @usage@ member+-- of the @VkBufferCreateInfo@ structure.+--+-- - @maxUniformBufferRange@ is the maximum value that /can/ be specified+-- in the @range@ member of any+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo'+-- structures passed to a call to+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets' for+-- descriptors of type @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@.+--+-- - @maxStorageBufferRange@ is the maximum value that /can/ be specified+-- in the @range@ member of any+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo'+-- structures passed to a call to+-- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets' for+-- descriptors of type @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@.+--+-- - @maxPushConstantsSize@ is the maximum size, in bytes, of the pool of+-- push constant memory. For each of the push constant ranges indicated+-- by the @pPushConstantRanges@ member of the+-- @VkPipelineLayoutCreateInfo@ structure, (@offset@ + @size@) /must/+-- be less than or equal to this limit.+--+-- - @maxMemoryAllocationCount@ is the maximum number of device memory+-- allocations, as created by+-- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory', which /can/+-- simultaneously exist.+--+-- - @maxSamplerAllocationCount@ is the maximum number of sampler+-- objects, as created by+-- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler', which /can/+-- simultaneously exist on a device.+--+-- - @bufferImageGranularity@ is the granularity, in bytes, at which+-- buffer or linear image resources, and optimal image resources /can/+-- be bound to adjacent offsets in the same @VkDeviceMemory@ object+-- without aliasing. See [Buffer-Image+-- Granularity](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-bufferimagegranularity)+-- for more details.+--+-- - @sparseAddressSpaceSize@ is 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.+--+-- - @maxBoundDescriptorSets@ is the maximum number of descriptor sets+-- that /can/ be simultaneously used by a pipeline. All @DescriptorSet@+-- decorations in shader modules /must/ have a value less than+-- @maxBoundDescriptorSets@. See+-- [{html_spec_relative}#descriptorsets-sets](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sets).+--+-- - @maxPerStageDescriptorSamplers@ is the maximum number of samplers+-- that /can/ be accessible to a single shader stage in a pipeline+-- layout. Descriptors with a type of @VK_DESCRIPTOR_TYPE_SAMPLER@ or+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. A descriptor is accessible to a+-- shader stage when the @stageFlags@ member of the+-- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader+-- stage set. See+-- [{html_spec_relative}#descriptorsets-sampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampler)+-- and+-- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler).+--+-- - @maxPerStageDescriptorUniformBuffers@ is the maximum number of+-- uniform buffers that /can/ be accessible to a single shader stage in+-- a pipeline layout. Descriptors with a type of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. A descriptor is accessible to a+-- shader stage when the @stageFlags@ member of the+-- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader+-- stage set. See+-- [{html_spec_relative}#descriptorsets-uniformbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer)+-- and+-- [{html_spec_relative}#descriptorsets-uniformbufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).+--+-- - @maxPerStageDescriptorStorageBuffers@ is the maximum number of+-- storage buffers that /can/ be accessible to a single shader stage in+-- a pipeline layout. Descriptors with a type of+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. A descriptor is accessible to a+-- pipeline shader stage when the @stageFlags@ member of the+-- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader+-- stage set. See+-- [{html_spec_relative}#descriptorsets-storagebuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer)+-- and+-- [{html_spec_relative}#descriptorsets-storagebufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).+--+-- - @maxPerStageDescriptorSampledImages@ is the maximum number of+-- sampled images that /can/ be accessible to a single shader stage in+-- a pipeline layout. Descriptors with a type of+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,+-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ count against this limit.+-- Only descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. A descriptor is accessible to a+-- pipeline shader stage when the @stageFlags@ member of the+-- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader+-- stage set. See+-- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler),+-- [{html_spec_relative}#descriptorsets-sampledimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage),+-- and+-- [{html_spec_relative}#descriptorsets-uniformtexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer).+--+-- - @maxPerStageDescriptorStorageImages@ is the maximum number of+-- storage images that /can/ be accessible to a single shader stage in+-- a pipeline layout. Descriptors with a type of+-- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or+-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ count against this limit.+-- Only descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. A descriptor is accessible to a+-- pipeline shader stage when the @stageFlags@ member of the+-- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader+-- stage set. See+-- [{html_spec_relative}#descriptorsets-storageimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage),+-- and+-- [{html_spec_relative}#descriptorsets-storagetexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer).+--+-- - @maxPerStageDescriptorInputAttachments@ is the maximum number of+-- input attachments that /can/ be accessible to a single shader stage+-- in a pipeline layout. Descriptors with a type of+-- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. Only+-- descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. A descriptor is accessible to a+-- pipeline shader stage when the @stageFlags@ member of the+-- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader+-- stage set. These are only supported for the fragment stage. See+-- [{html_spec_relative}#descriptorsets-inputattachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-inputattachment).+--+-- - @maxPerStageResources@ is the maximum number of resources that /can/+-- be accessible to a single shader stage in a pipeline layout.+-- Descriptors with a type of+-- @VK_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@, or+-- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. Only+-- descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. For the fragment shader stage the+-- framebuffer color attachments also count against this limit.+--+-- - @maxDescriptorSetSamplers@ is 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 of @VK_DESCRIPTOR_TYPE_SAMPLER@ or+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. See+-- [{html_spec_relative}#descriptorsets-sampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampler)+-- and+-- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler).+--+-- - @maxDescriptorSetUniformBuffers@ is 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 of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. See+-- [{html_spec_relative}#descriptorsets-uniformbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer)+-- and+-- [{html_spec_relative}#descriptorsets-uniformbufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).+--+-- - @maxDescriptorSetUniformBuffersDynamic@ is 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 of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. See+-- [{html_spec_relative}#descriptorsets-uniformbufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).+--+-- - @maxDescriptorSetStorageBuffers@ is 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 of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. See+-- [{html_spec_relative}#descriptorsets-storagebuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer)+-- and+-- [{html_spec_relative}#descriptorsets-storagebufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).+--+-- - @maxDescriptorSetStorageBuffersDynamic@ is 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 of+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this+-- limit. Only descriptors in descriptor set layouts created without+-- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- bit set count against this limit. See+-- [{html_spec_relative}#descriptorsets-storagebufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).+--+-- - @maxDescriptorSetSampledImages@ is 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 of+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,+-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ count against this limit.+-- Only descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. See+-- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler),+-- [{html_spec_relative}#descriptorsets-sampledimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage),+-- and+-- [{html_spec_relative}#descriptorsets-uniformtexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer).+--+-- - @maxDescriptorSetStorageImages@ is 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 of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or+-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ count against this limit.+-- Only descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. See+-- [{html_spec_relative}#descriptorsets-storageimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage),+-- and+-- [{html_spec_relative}#descriptorsets-storagetexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer).+--+-- - @maxDescriptorSetInputAttachments@ is 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 of+-- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. Only+-- descriptors in descriptor set layouts created without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set count against this limit. See+-- [{html_spec_relative}#descriptorsets-inputattachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-inputattachment).+--+-- - @maxVertexInputAttributes@ is the maximum number of vertex input+-- attributes that /can/ be specified for a graphics pipeline. These+-- are described in the array of @VkVertexInputAttributeDescription@+-- structures that are provided at graphics pipeline creation time via+-- the @pVertexAttributeDescriptions@ member of the+-- @VkPipelineVertexInputStateCreateInfo@ structure. See+-- [{html_spec_relative}#fxvertex-attrib](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-attrib)+-- and+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).+--+-- - @maxVertexInputBindings@ is the maximum number of vertex buffers+-- that /can/ be specified for providing vertex attributes to a+-- graphics pipeline. These are described in the array of+-- @VkVertexInputBindingDescription@ structures that are provided at+-- graphics pipeline creation time via the @pVertexBindingDescriptions@+-- member of the @VkPipelineVertexInputStateCreateInfo@ structure. The+-- @binding@ member of @VkVertexInputBindingDescription@ /must/ be less+-- than this limit. See+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).+--+-- - @maxVertexInputAttributeOffset@ is the maximum vertex input+-- attribute offset that /can/ be added to the vertex input binding+-- stride. The @offset@ member of the+-- @VkVertexInputAttributeDescription@ structure /must/ be less than or+-- equal to this limit. See+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).+--+-- - @maxVertexInputBindingStride@ is the maximum vertex input binding+-- stride that /can/ be specified in a vertex input binding. The+-- @stride@ member of the @VkVertexInputBindingDescription@ structure+-- /must/ be less than or equal to this limit. See+-- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).+--+-- - @maxVertexOutputComponents@ is the maximum number of components of+-- output variables which /can/ be output by a vertex shader. See+-- [{html_spec_relative}#shaders-vertex](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-vertex).+--+-- - @maxTessellationGenerationLevel@ is the maximum tessellation+-- generation level supported by the fixed-function tessellation+-- primitive generator. See+-- [{html_spec_relative}#tessellation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#tessellation).+--+-- - @maxTessellationPatchSize@ is the maximum patch size, in vertices,+-- of patches that /can/ be processed by the tessellation control+-- shader and tessellation primitive generator. The+-- @patchControlPoints@ member of the+-- @VkPipelineTessellationStateCreateInfo@ structure specified at+-- pipeline creation time and the value provided in the+-- @OutputVertices@ execution mode of shader modules /must/ be less+-- than or equal to this limit. See+-- [{html_spec_relative}#tessellation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#tessellation).+--+-- - @maxTessellationControlPerVertexInputComponents@ is the maximum+-- number of components of input variables which /can/ be provided as+-- per-vertex inputs to the tessellation control shader stage.+--+-- - @maxTessellationControlPerVertexOutputComponents@ is the maximum+-- number of components of per-vertex output variables which /can/ be+-- output from the tessellation control shader stage.+--+-- - @maxTessellationControlPerPatchOutputComponents@ is the maximum+-- number of components of per-patch output variables which /can/ be+-- output from the tessellation control shader stage.+--+-- - @maxTessellationControlTotalOutputComponents@ is the maximum total+-- number of components of per-vertex and per-patch output variables+-- which /can/ be output from the tessellation control shader stage.+--+-- - @maxTessellationEvaluationInputComponents@ is the maximum number of+-- components of input variables which /can/ be provided as per-vertex+-- inputs to the tessellation evaluation shader stage.+--+-- - @maxTessellationEvaluationOutputComponents@ is the maximum number of+-- components of per-vertex output variables which /can/ be output from+-- the tessellation evaluation shader stage.+--+-- - @maxGeometryShaderInvocations@ is the maximum invocation count+-- supported for instanced geometry shaders. The value provided in the+-- @Invocations@ execution mode of shader modules /must/ be less than+-- or equal to this limit. See+-- [{html_spec_relative}#geometry](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#geometry).+--+-- - @maxGeometryInputComponents@ is the maximum number of components of+-- input variables which /can/ be provided as inputs to the geometry+-- shader stage.+--+-- - @maxGeometryOutputComponents@ is the maximum number of components of+-- output variables which /can/ be output from the geometry shader+-- stage.+--+-- - @maxGeometryOutputVertices@ is the maximum number of vertices which+-- /can/ be emitted by any geometry shader.+--+-- - @maxGeometryTotalOutputComponents@ is the maximum total number of+-- components of output, across all emitted vertices, which /can/ be+-- output from the geometry shader stage.+--+-- - @maxFragmentInputComponents@ is the maximum number of components of+-- input variables which /can/ be provided as inputs to the fragment+-- shader stage.+--+-- - @maxFragmentOutputAttachments@ is the maximum number of output+-- attachments which /can/ be written to by the fragment shader stage.+--+-- - @maxFragmentDualSrcAttachments@ is 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-dsb)+-- and+-- [dualSrcBlend](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend).+--+-- - @maxFragmentCombinedOutputResources@ is the total number of storage+-- buffers, storage images, and output buffers which /can/ be used in+-- the fragment shader stage.+--+-- - @maxComputeSharedMemorySize@ is the maximum total storage size, in+-- bytes, of all variables declared with the @WorkgroupLocal@ storage+-- class in shader modules (or with the @shared@ storage 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#dispatch).+--+-- - @maxComputeWorkGroupInvocations@ is 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 the @LocalSize@ execution+-- mode in shader modules and by the object decorated by the+-- @WorkgroupSize@ decoration /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.+-- The @x@, @y@, and @z@ sizes specified by the @LocalSize@ execution+-- mode and by the object decorated by the @WorkgroupSize@ decoration+-- in shader modules /must/ be less than or equal to the corresponding+-- limit.+--+-- - @subPixelPrecisionBits@ is the number of bits of subpixel precision+-- in framebuffer coordinates xf and yf. See+-- [{html_spec_relative}#primsrast](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast).+--+-- - @subTexelPrecisionBits@ is the number of bits of precision in the+-- division along an axis of an image used for minification and+-- magnification filters. 2@subTexelPrecisionBits@ is 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.+--+-- - @mipmapPrecisionBits@ is 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.+-- 2@mipmapPrecisionBits@ is 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).+--+-- - @maxDrawIndexedIndexValue@ is 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-fullDrawIndexUint32).+--+-- - @maxDrawIndirectCount@ is the maximum draw count that is supported+-- for indirect draw calls. See+-- [multiDrawIndirect](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiDrawIndirect).+--+-- - @maxSamplerLodBias@ is the maximum absolute sampler LOD bias. The+-- sum of the @mipLodBias@ member of the @VkSamplerCreateInfo@+-- structure and the @Bias@ operand of image sampling operations in+-- shader modules (or 0 if no @Bias@ operand is provided to an image+-- sampling operation) are clamped to the range+-- [-@maxSamplerLodBias@,+@maxSamplerLodBias@]. See+-- [{html_spec_relative}#samplers-mipLodBias](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-mipLodBias).+--+-- - @maxSamplerAnisotropy@ is the maximum degree of sampler anisotropy.+-- The maximum degree of anisotropic filtering used for an image+-- sampling operation is the minimum of the @maxAnisotropy@ member of+-- the @VkSamplerCreateInfo@ structure and this limit. See+-- [{html_spec_relative}#samplers-maxAnisotropy](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-maxAnisotropy).+--+-- - @maxViewports@ is the maximum number of active viewports. The+-- @viewportCount@ member of the @VkPipelineViewportStateCreateInfo@+-- structure 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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-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], where @size@ =+-- max(@maxViewportDimensions@[0], @maxViewportDimensions@[1]). See+-- [Controlling the+-- Viewport](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-viewport).+--+-- __Note__+--+-- The intent of the @viewportBoundsRange@ limit 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.+--+-- - @viewportSubPixelBits@ is 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.+--+-- - @minMemoryMapAlignment@ is the minimum /required/ alignment, in+-- bytes, of host visible memory allocations within the host address+-- space. When mapping a memory allocation with+-- 'Graphics.Vulkan.Core10.Memory.vkMapMemory', subtracting @offset@+-- bytes from the returned pointer will always produce an integer+-- multiple of this limit. See+-- [{html_spec_relative}#memory-device-hostaccess](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-hostaccess).+--+-- - @minTexelBufferOffsetAlignment@ is the minimum /required/ alignment,+-- in bytes, for the @offset@ member of the @VkBufferViewCreateInfo@+-- structure for texel buffers. When a buffer view is created for a+-- buffer which was created with+-- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or+-- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set in the @usage@ member+-- of the @VkBufferCreateInfo@ structure, the @offset@ /must/ be an+-- integer multiple of this limit.+--+-- - @minUniformBufferOffsetAlignment@ is the minimum /required/+-- alignment, in bytes, for the @offset@ member of the+-- @VkDescriptorBufferInfo@ structure for uniform buffers. When a+-- descriptor of type @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ is updated, the @offset@+-- /must/ be an integer multiple of this limit. Similarly, dynamic+-- offsets for uniform buffers /must/ be multiples of this limit.+--+-- - @minStorageBufferOffsetAlignment@ is the minimum /required/+-- alignment, in bytes, for the @offset@ member of the+-- @VkDescriptorBufferInfo@ structure for storage buffers. When a+-- descriptor of type @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ is updated, the @offset@+-- /must/ be an integer multiple of this limit. Similarly, dynamic+-- offsets for storage buffers /must/ be multiples of this limit.+--+-- - @minTexelOffset@ is the minimum offset value for the @ConstOffset@+-- image operand of any of the @OpImageSample@* or @OpImageFetch@*+-- image instructions.+--+-- - @maxTexelOffset@ is the maximum offset value for the @ConstOffset@+-- image operand of any of the @OpImageSample@* or @OpImageFetch@*+-- image instructions.+--+-- - @minTexelGatherOffset@ is the minimum offset value for the @Offset@+-- or @ConstOffsets@ image operands of any of the @OpImage@*@Gather@+-- image instructions.+--+-- - @maxTexelGatherOffset@ is the maximum offset value for the @Offset@+-- or @ConstOffsets@ image operands of any of the @OpImage@*@Gather@+-- image instructions.+--+-- - @minInterpolationOffset@ is the minimum negative offset value for+-- the @offset@ operand of the @InterpolateAtOffset@ extended+-- instruction.+--+-- - @maxInterpolationOffset@ is the maximum positive offset value for+-- the @offset@ operand of the @InterpolateAtOffset@ extended+-- instruction.+--+-- - @subPixelInterpolationOffsetBits@ is the number of subpixel+-- fractional bits that the @x@ and @y@ offsets to the+-- @InterpolateAtOffset@ extended instruction /may/ be rounded to as+-- fixed-point values.+--+-- - @maxFramebufferWidth@ is the maximum width for a framebuffer. The+-- @width@ member of the @VkFramebufferCreateInfo@ structure /must/ be+-- less than or equal to this limit.+--+-- - @maxFramebufferHeight@ is the maximum height for a framebuffer. The+-- @height@ member of the @VkFramebufferCreateInfo@ structure /must/ be+-- less than or equal to this limit.+--+-- - @maxFramebufferLayers@ is the maximum layer count for a layered+-- framebuffer. The @layers@ member of the @VkFramebufferCreateInfo@+-- structure /must/ be less than or equal to this limit.+--+-- - @framebufferColorSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating 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.+--+-- - @framebufferDepthSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the supported depth sample counts+-- for all framebuffer depth\/stencil attachments, when the format+-- includes a depth component.+--+-- - @framebufferStencilSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the supported stencil sample+-- counts for all framebuffer depth\/stencil attachments, when the+-- format includes a stencil component.+--+-- - @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the supported sample counts for a+-- framebuffer with no attachments.+--+-- - @maxColorAttachments@ is the maximum number of color attachments+-- that /can/ be used by a subpass in a render pass. The+-- @colorAttachmentCount@ member of the @VkSubpassDescription@+-- structure /must/ be less than or equal to this limit.+--+-- - @sampledImageColorSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the sample counts supported for+-- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@+-- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and a non-integer color+-- format.+--+-- - @sampledImageIntegerSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the sample counts supported for+-- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@+-- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and an integer color+-- format.+--+-- - @sampledImageDepthSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the sample counts supported for+-- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@+-- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and a depth format.+--+-- - @sampledImageStencilSampleCounts@ is a bitmask1 of+-- 'VkSampleCountFlagBits' indicating the sample supported for all 2D+-- images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@ containing+-- @VK_IMAGE_USAGE_SAMPLED_BIT@, and a stencil format.+--+-- - @storageImageSampleCounts@ is a bitmask1 of 'VkSampleCountFlagBits'+-- indicating the sample counts supported for all 2D images created+-- with @VK_IMAGE_TILING_OPTIMAL@, and @usage@ containing+-- @VK_IMAGE_USAGE_STORAGE_BIT@.+--+-- - @maxSampleMaskWords@ is the maximum number of array elements of a+-- variable decorated with the @SampleMask@ built-in decoration.+--+-- - @timestampComputeAndGraphics@ specifies support for timestamps on+-- all graphics and compute queues. If this limit is set to @VK_TRUE@,+-- all queues that advertise the @VK_QUEUE_GRAPHICS_BIT@ or+-- @VK_QUEUE_COMPUTE_BIT@ in the+-- @VkQueueFamilyProperties@::@queueFlags@ support+-- @VkQueueFamilyProperties@::@timestampValidBits@ of at least 36. See+-- [Timestamp+-- Queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-timestamps).+--+-- - @timestampPeriod@ is the number of nanoseconds /required/ for a+-- timestamp query to be incremented by 1. See [Timestamp+-- Queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-timestamps).+--+-- - @maxClipDistances@ is the maximum number of clip distances that+-- /can/ be used in a single shader stage. The size of any array+-- declared with the @ClipDistance@ built-in decoration in a shader+-- module /must/ be less than or equal to this limit.+--+-- - @maxCullDistances@ is the maximum number of cull distances that+-- /can/ be used in a single shader stage. The size of any array+-- declared with the @CullDistance@ built-in decoration in a shader+-- module /must/ be less than or equal to this limit.+--+-- - @maxCombinedClipAndCullDistances@ is 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 the+-- @ClipDistance@ and @CullDistance@ built-in decoration used by a+-- single shader stage in a shader module /must/ be less than or equal+-- to this limit.+--+-- - @discreteQueuePriorities@ is the number of discrete priorities that+-- /can/ be assigned to a queue based on the value of each member of+-- @VkDeviceQueueCreateInfo@::@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](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-priority).+--+-- - @pointSizeRange@[2] is the range [@minimum@,@maximum@] of supported+-- sizes for points. Values written to variables decorated with the+-- @PointSize@ built-in decoration are clamped to this range.+--+-- - @lineWidthRange@[2] is the range [@minimum@,@maximum@] of supported+-- widths for lines. Values specified by the @lineWidth@ member of the+-- @VkPipelineRasterizationStateCreateInfo@ or the @lineWidth@+-- parameter to @vkCmdSetLineWidth@ are clamped to this range.+--+-- - @pointSizeGranularity@ is the granularity of supported point sizes.+-- Not all point sizes in the range defined by @pointSizeRange@ are+-- supported. This limit specifies the granularity (or increment)+-- between successive supported point sizes.+--+-- - @lineWidthGranularity@ is the granularity of supported line widths.+-- Not all line widths in the range defined by @lineWidthRange@ are+-- supported. This limit specifies the granularity (or increment)+-- between successive supported line widths.+--+-- - @strictLines@ specifies whether lines are rasterized according to+-- the preferred method of rasterization. If set to @VK_FALSE@, lines+-- /may/ be rasterized under a relaxed set of rules. If set to+-- @VK_TRUE@, lines are rasterized as per the strict definition. See+-- [Basic Line Segment+-- Rasterization](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-lines-basic).+--+-- - @standardSampleLocations@ specifies whether rasterization uses the+-- standard sample locations as documented in+-- [Multisampling](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-multisampling).+-- If set to @VK_TRUE@, the implementation uses the documented sample+-- locations. If set to @VK_FALSE@, the implementation /may/ use+-- different sample locations.+--+-- - @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset+-- alignment in bytes for @vkCmdCopyBufferToImage@ and+-- @vkCmdCopyImageToBuffer@. The per texel alignment requirements are+-- enforced, but applications /should/ use the optimal alignment for+-- optimal performance and power use.+--+-- - @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch+-- alignment in bytes for @vkCmdCopyBufferToImage@ and+-- @vkCmdCopyImageToBuffer@. 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.+--+-- - @nonCoherentAtomSize@ is the size and alignment in bytes that bounds+-- concurrent access to [host-mapped device+-- memory](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-hostaccess).+--+-- - 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@+-- is the maximum number of active discard rectangles. This limit can+-- be queried by setting the @pNext@ pointer from a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'+-- object to an instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT'+-- and using @vkGetPhysicalDeviceProperties2@ to fill out the members.+--+-- - 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties'::@pointClippingBehavior@+-- defines the clipping behavior of points. This limit can be queried+-- by setting the @pNext@ pointer from a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'+-- object to an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties'+-- and using @vkGetPhysicalDeviceProperties2@ to fill out the members.+--+-- - @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@::@maxVertexAttribDivisor@+-- is 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 the @pNext@ pointer from a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'+-- object to an instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT'+-- and using @vkGetPhysicalDeviceProperties2@ to 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 using+-- 'vkGetPhysicalDeviceImageFormatProperties' as described in+-- [Supported Sample+-- Counts](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-supported-sample-counts).+--+-- = See Also+--+-- @VkBool32@, @VkDeviceSize@, 'VkPhysicalDeviceProperties',+-- 'VkSampleCountFlags'+data VkPhysicalDeviceLimits = VkPhysicalDeviceLimits+ { -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimension1D"+ vkMaxImageDimension1D :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimension2D"+ vkMaxImageDimension2D :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimension3D"+ vkMaxImageDimension3D :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimensionCube"+ vkMaxImageDimensionCube :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageArrayLayers"+ vkMaxImageArrayLayers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTexelBufferElements"+ vkMaxTexelBufferElements :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxUniformBufferRange"+ vkMaxUniformBufferRange :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxStorageBufferRange"+ vkMaxStorageBufferRange :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPushConstantsSize"+ vkMaxPushConstantsSize :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxMemoryAllocationCount"+ vkMaxMemoryAllocationCount :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSamplerAllocationCount"+ vkMaxSamplerAllocationCount :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "bufferImageGranularity"+ vkBufferImageGranularity :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sparseAddressSpaceSize"+ vkSparseAddressSpaceSize :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxBoundDescriptorSets"+ vkMaxBoundDescriptorSets :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorSamplers"+ vkMaxPerStageDescriptorSamplers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorUniformBuffers"+ vkMaxPerStageDescriptorUniformBuffers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorStorageBuffers"+ vkMaxPerStageDescriptorStorageBuffers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorSampledImages"+ vkMaxPerStageDescriptorSampledImages :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorStorageImages"+ vkMaxPerStageDescriptorStorageImages :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorInputAttachments"+ vkMaxPerStageDescriptorInputAttachments :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageResources"+ vkMaxPerStageResources :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetSamplers"+ vkMaxDescriptorSetSamplers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetUniformBuffers"+ vkMaxDescriptorSetUniformBuffers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetUniformBuffersDynamic"+ vkMaxDescriptorSetUniformBuffersDynamic :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetStorageBuffers"+ vkMaxDescriptorSetStorageBuffers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetStorageBuffersDynamic"+ vkMaxDescriptorSetStorageBuffersDynamic :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetSampledImages"+ vkMaxDescriptorSetSampledImages :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetStorageImages"+ vkMaxDescriptorSetStorageImages :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetInputAttachments"+ vkMaxDescriptorSetInputAttachments :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputAttributes"+ vkMaxVertexInputAttributes :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputBindings"+ vkMaxVertexInputBindings :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputAttributeOffset"+ vkMaxVertexInputAttributeOffset :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputBindingStride"+ vkMaxVertexInputBindingStride :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexOutputComponents"+ vkMaxVertexOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationGenerationLevel"+ vkMaxTessellationGenerationLevel :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationPatchSize"+ vkMaxTessellationPatchSize :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlPerVertexInputComponents"+ vkMaxTessellationControlPerVertexInputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlPerVertexOutputComponents"+ vkMaxTessellationControlPerVertexOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlPerPatchOutputComponents"+ vkMaxTessellationControlPerPatchOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlTotalOutputComponents"+ vkMaxTessellationControlTotalOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationEvaluationInputComponents"+ vkMaxTessellationEvaluationInputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationEvaluationOutputComponents"+ vkMaxTessellationEvaluationOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryShaderInvocations"+ vkMaxGeometryShaderInvocations :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryInputComponents"+ vkMaxGeometryInputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryOutputComponents"+ vkMaxGeometryOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryOutputVertices"+ vkMaxGeometryOutputVertices :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryTotalOutputComponents"+ vkMaxGeometryTotalOutputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentInputComponents"+ vkMaxFragmentInputComponents :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentOutputAttachments"+ vkMaxFragmentOutputAttachments :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentDualSrcAttachments"+ vkMaxFragmentDualSrcAttachments :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentCombinedOutputResources"+ vkMaxFragmentCombinedOutputResources :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeSharedMemorySize"+ vkMaxComputeSharedMemorySize :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeWorkGroupCount"+ vkMaxComputeWorkGroupCount :: Vector 3 Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeWorkGroupInvocations"+ vkMaxComputeWorkGroupInvocations :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeWorkGroupSize"+ vkMaxComputeWorkGroupSize :: Vector 3 Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "subPixelPrecisionBits"+ vkSubPixelPrecisionBits :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "subTexelPrecisionBits"+ vkSubTexelPrecisionBits :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "mipmapPrecisionBits"+ vkMipmapPrecisionBits :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDrawIndexedIndexValue"+ vkMaxDrawIndexedIndexValue :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDrawIndirectCount"+ vkMaxDrawIndirectCount :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSamplerLodBias"+ vkMaxSamplerLodBias :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSamplerAnisotropy"+ vkMaxSamplerAnisotropy :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxViewports"+ vkMaxViewports :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxViewportDimensions"+ vkMaxViewportDimensions :: Vector 2 Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "viewportBoundsRange"+ vkViewportBoundsRange :: Vector 2 CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "viewportSubPixelBits"+ vkViewportSubPixelBits :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minMemoryMapAlignment"+ vkMinMemoryMapAlignment :: CSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minTexelBufferOffsetAlignment"+ vkMinTexelBufferOffsetAlignment :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minUniformBufferOffsetAlignment"+ vkMinUniformBufferOffsetAlignment :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minStorageBufferOffsetAlignment"+ vkMinStorageBufferOffsetAlignment :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minTexelOffset"+ vkMinTexelOffset :: Int32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTexelOffset"+ vkMaxTexelOffset :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minTexelGatherOffset"+ vkMinTexelGatherOffset :: Int32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTexelGatherOffset"+ vkMaxTexelGatherOffset :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minInterpolationOffset"+ vkMinInterpolationOffset :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxInterpolationOffset"+ vkMaxInterpolationOffset :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "subPixelInterpolationOffsetBits"+ vkSubPixelInterpolationOffsetBits :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFramebufferWidth"+ vkMaxFramebufferWidth :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFramebufferHeight"+ vkMaxFramebufferHeight :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFramebufferLayers"+ vkMaxFramebufferLayers :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferColorSampleCounts"+ vkFramebufferColorSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferDepthSampleCounts"+ vkFramebufferDepthSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferStencilSampleCounts"+ vkFramebufferStencilSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferNoAttachmentsSampleCounts"+ vkFramebufferNoAttachmentsSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxColorAttachments"+ vkMaxColorAttachments :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageColorSampleCounts"+ vkSampledImageColorSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageIntegerSampleCounts"+ vkSampledImageIntegerSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageDepthSampleCounts"+ vkSampledImageDepthSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageStencilSampleCounts"+ vkSampledImageStencilSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "storageImageSampleCounts"+ vkStorageImageSampleCounts :: VkSampleCountFlags+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSampleMaskWords"+ vkMaxSampleMaskWords :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "timestampComputeAndGraphics"+ vkTimestampComputeAndGraphics :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "timestampPeriod"+ vkTimestampPeriod :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxClipDistances"+ vkMaxClipDistances :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxCullDistances"+ vkMaxCullDistances :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxCombinedClipAndCullDistances"+ vkMaxCombinedClipAndCullDistances :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "discreteQueuePriorities"+ vkDiscreteQueuePriorities :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "pointSizeRange"+ vkPointSizeRange :: Vector 2 CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "lineWidthRange"+ vkLineWidthRange :: Vector 2 CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "pointSizeGranularity"+ vkPointSizeGranularity :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "lineWidthGranularity"+ vkLineWidthGranularity :: CFloat+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "strictLines"+ vkStrictLines :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "standardSampleLocations"+ vkStandardSampleLocations :: VkBool32+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "optimalBufferCopyOffsetAlignment"+ vkOptimalBufferCopyOffsetAlignment :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "optimalBufferCopyRowPitchAlignment"+ vkOptimalBufferCopyRowPitchAlignment :: VkDeviceSize+ , -- No documentation found for Nested "VkPhysicalDeviceLimits" "nonCoherentAtomSize"+ vkNonCoherentAtomSize :: VkDeviceSize+ }+ deriving (Eq, Show)++instance Storable VkPhysicalDeviceLimits where+ sizeOf ~_ = 504+ alignment ~_ = 8+ peek ptr = VkPhysicalDeviceLimits <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 36)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 48)+ <*> peek (ptr `plusPtr` 56)+ <*> peek (ptr `plusPtr` 64)+ <*> peek (ptr `plusPtr` 68)+ <*> peek (ptr `plusPtr` 72)+ <*> peek (ptr `plusPtr` 76)+ <*> peek (ptr `plusPtr` 80)+ <*> peek (ptr `plusPtr` 84)+ <*> peek (ptr `plusPtr` 88)+ <*> peek (ptr `plusPtr` 92)+ <*> peek (ptr `plusPtr` 96)+ <*> peek (ptr `plusPtr` 100)+ <*> peek (ptr `plusPtr` 104)+ <*> peek (ptr `plusPtr` 108)+ <*> peek (ptr `plusPtr` 112)+ <*> peek (ptr `plusPtr` 116)+ <*> peek (ptr `plusPtr` 120)+ <*> peek (ptr `plusPtr` 124)+ <*> peek (ptr `plusPtr` 128)+ <*> peek (ptr `plusPtr` 132)+ <*> peek (ptr `plusPtr` 136)+ <*> peek (ptr `plusPtr` 140)+ <*> peek (ptr `plusPtr` 144)+ <*> peek (ptr `plusPtr` 148)+ <*> peek (ptr `plusPtr` 152)+ <*> peek (ptr `plusPtr` 156)+ <*> peek (ptr `plusPtr` 160)+ <*> peek (ptr `plusPtr` 164)+ <*> peek (ptr `plusPtr` 168)+ <*> peek (ptr `plusPtr` 172)+ <*> peek (ptr `plusPtr` 176)+ <*> peek (ptr `plusPtr` 180)+ <*> peek (ptr `plusPtr` 184)+ <*> peek (ptr `plusPtr` 188)+ <*> peek (ptr `plusPtr` 192)+ <*> peek (ptr `plusPtr` 196)+ <*> peek (ptr `plusPtr` 200)+ <*> peek (ptr `plusPtr` 204)+ <*> peek (ptr `plusPtr` 208)+ <*> peek (ptr `plusPtr` 212)+ <*> peek (ptr `plusPtr` 216)+ <*> peek (ptr `plusPtr` 220)+ <*> peek (ptr `plusPtr` 232)+ <*> peek (ptr `plusPtr` 236)+ <*> peek (ptr `plusPtr` 248)+ <*> peek (ptr `plusPtr` 252)+ <*> peek (ptr `plusPtr` 256)+ <*> peek (ptr `plusPtr` 260)+ <*> peek (ptr `plusPtr` 264)+ <*> peek (ptr `plusPtr` 268)+ <*> peek (ptr `plusPtr` 272)+ <*> peek (ptr `plusPtr` 276)+ <*> peek (ptr `plusPtr` 280)+ <*> peek (ptr `plusPtr` 288)+ <*> peek (ptr `plusPtr` 296)+ <*> peek (ptr `plusPtr` 304)+ <*> peek (ptr `plusPtr` 312)+ <*> peek (ptr `plusPtr` 320)+ <*> peek (ptr `plusPtr` 328)+ <*> peek (ptr `plusPtr` 336)+ <*> peek (ptr `plusPtr` 340)+ <*> peek (ptr `plusPtr` 344)+ <*> peek (ptr `plusPtr` 348)+ <*> peek (ptr `plusPtr` 352)+ <*> peek (ptr `plusPtr` 356)+ <*> peek (ptr `plusPtr` 360)+ <*> peek (ptr `plusPtr` 364)+ <*> peek (ptr `plusPtr` 368)+ <*> peek (ptr `plusPtr` 372)+ <*> peek (ptr `plusPtr` 376)+ <*> peek (ptr `plusPtr` 380)+ <*> peek (ptr `plusPtr` 384)+ <*> peek (ptr `plusPtr` 388)+ <*> peek (ptr `plusPtr` 392)+ <*> peek (ptr `plusPtr` 396)+ <*> peek (ptr `plusPtr` 400)+ <*> peek (ptr `plusPtr` 404)+ <*> peek (ptr `plusPtr` 408)+ <*> peek (ptr `plusPtr` 412)+ <*> peek (ptr `plusPtr` 416)+ <*> peek (ptr `plusPtr` 420)+ <*> peek (ptr `plusPtr` 424)+ <*> peek (ptr `plusPtr` 428)+ <*> peek (ptr `plusPtr` 432)+ <*> peek (ptr `plusPtr` 436)+ <*> peek (ptr `plusPtr` 440)+ <*> peek (ptr `plusPtr` 444)+ <*> peek (ptr `plusPtr` 452)+ <*> peek (ptr `plusPtr` 460)+ <*> peek (ptr `plusPtr` 464)+ <*> peek (ptr `plusPtr` 468)+ <*> peek (ptr `plusPtr` 472)+ <*> peek (ptr `plusPtr` 480)+ <*> peek (ptr `plusPtr` 488)+ <*> peek (ptr `plusPtr` 496)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkMaxImageDimension1D (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 4) (vkMaxImageDimension2D (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 8) (vkMaxImageDimension3D (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 12) (vkMaxImageDimensionCube (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 16) (vkMaxImageArrayLayers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 20) (vkMaxTexelBufferElements (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 24) (vkMaxUniformBufferRange (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 28) (vkMaxStorageBufferRange (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 32) (vkMaxPushConstantsSize (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 36) (vkMaxMemoryAllocationCount (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 40) (vkMaxSamplerAllocationCount (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 48) (vkBufferImageGranularity (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 56) (vkSparseAddressSpaceSize (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 64) (vkMaxBoundDescriptorSets (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 68) (vkMaxPerStageDescriptorSamplers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 72) (vkMaxPerStageDescriptorUniformBuffers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 76) (vkMaxPerStageDescriptorStorageBuffers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 80) (vkMaxPerStageDescriptorSampledImages (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 84) (vkMaxPerStageDescriptorStorageImages (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 88) (vkMaxPerStageDescriptorInputAttachments (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 92) (vkMaxPerStageResources (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 96) (vkMaxDescriptorSetSamplers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 100) (vkMaxDescriptorSetUniformBuffers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 104) (vkMaxDescriptorSetUniformBuffersDynamic (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 108) (vkMaxDescriptorSetStorageBuffers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 112) (vkMaxDescriptorSetStorageBuffersDynamic (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 116) (vkMaxDescriptorSetSampledImages (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 120) (vkMaxDescriptorSetStorageImages (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 124) (vkMaxDescriptorSetInputAttachments (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 128) (vkMaxVertexInputAttributes (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 132) (vkMaxVertexInputBindings (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 136) (vkMaxVertexInputAttributeOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 140) (vkMaxVertexInputBindingStride (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 144) (vkMaxVertexOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 148) (vkMaxTessellationGenerationLevel (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 152) (vkMaxTessellationPatchSize (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 156) (vkMaxTessellationControlPerVertexInputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 160) (vkMaxTessellationControlPerVertexOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 164) (vkMaxTessellationControlPerPatchOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 168) (vkMaxTessellationControlTotalOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 172) (vkMaxTessellationEvaluationInputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 176) (vkMaxTessellationEvaluationOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 180) (vkMaxGeometryShaderInvocations (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 184) (vkMaxGeometryInputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 188) (vkMaxGeometryOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 192) (vkMaxGeometryOutputVertices (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 196) (vkMaxGeometryTotalOutputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 200) (vkMaxFragmentInputComponents (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 204) (vkMaxFragmentOutputAttachments (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 208) (vkMaxFragmentDualSrcAttachments (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 212) (vkMaxFragmentCombinedOutputResources (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 216) (vkMaxComputeSharedMemorySize (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 220) (vkMaxComputeWorkGroupCount (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 232) (vkMaxComputeWorkGroupInvocations (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 236) (vkMaxComputeWorkGroupSize (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 248) (vkSubPixelPrecisionBits (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 252) (vkSubTexelPrecisionBits (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 256) (vkMipmapPrecisionBits (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 260) (vkMaxDrawIndexedIndexValue (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 264) (vkMaxDrawIndirectCount (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 268) (vkMaxSamplerLodBias (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 272) (vkMaxSamplerAnisotropy (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 276) (vkMaxViewports (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 280) (vkMaxViewportDimensions (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 288) (vkViewportBoundsRange (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 296) (vkViewportSubPixelBits (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 304) (vkMinMemoryMapAlignment (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 312) (vkMinTexelBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 320) (vkMinUniformBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 328) (vkMinStorageBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 336) (vkMinTexelOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 340) (vkMaxTexelOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 344) (vkMinTexelGatherOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 348) (vkMaxTexelGatherOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 352) (vkMinInterpolationOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 356) (vkMaxInterpolationOffset (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 360) (vkSubPixelInterpolationOffsetBits (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 364) (vkMaxFramebufferWidth (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 368) (vkMaxFramebufferHeight (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 372) (vkMaxFramebufferLayers (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 376) (vkFramebufferColorSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 380) (vkFramebufferDepthSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 384) (vkFramebufferStencilSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 388) (vkFramebufferNoAttachmentsSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 392) (vkMaxColorAttachments (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 396) (vkSampledImageColorSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 400) (vkSampledImageIntegerSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 404) (vkSampledImageDepthSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 408) (vkSampledImageStencilSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 412) (vkStorageImageSampleCounts (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 416) (vkMaxSampleMaskWords (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 420) (vkTimestampComputeAndGraphics (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 424) (vkTimestampPeriod (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 428) (vkMaxClipDistances (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 432) (vkMaxCullDistances (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 436) (vkMaxCombinedClipAndCullDistances (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 440) (vkDiscreteQueuePriorities (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 444) (vkPointSizeRange (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 452) (vkLineWidthRange (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 460) (vkPointSizeGranularity (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 464) (vkLineWidthGranularity (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 468) (vkStrictLines (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 472) (vkStandardSampleLocations (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 480) (vkOptimalBufferCopyOffsetAlignment (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 488) (vkOptimalBufferCopyRowPitchAlignment (poked :: VkPhysicalDeviceLimits))+ *> poke (ptr `plusPtr` 496) (vkNonCoherentAtomSize (poked :: VkPhysicalDeviceLimits))+-- | VkQueueFlags - Bitmask of VkQueueFlagBits+--+-- = Description+--+-- @VkQueueFlags@ is a bitmask type for setting a mask of zero or more+-- 'VkQueueFlagBits'.+--+-- = See Also+--+-- 'VkQueueFamilyProperties', 'VkQueueFlagBits'+type VkQueueFlags = VkQueueFlagBits+-- | VkMemoryPropertyFlags - Bitmask of VkMemoryPropertyFlagBits+--+-- = Description+--+-- @VkMemoryPropertyFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkMemoryPropertyFlagBits'.+--+-- = See Also+--+-- 'VkMemoryPropertyFlagBits', 'VkMemoryType'+type VkMemoryPropertyFlags = VkMemoryPropertyFlagBits+-- | VkMemoryHeapFlags - Bitmask of VkMemoryHeapFlagBits+--+-- = Description+--+-- @VkMemoryHeapFlags@ is a bitmask type for setting a mask of zero or more+-- 'VkMemoryHeapFlagBits'.+--+-- = See Also+--+-- 'VkMemoryHeap', 'VkMemoryHeapFlagBits'+type VkMemoryHeapFlags = VkMemoryHeapFlagBits+-- | VkImageUsageFlags - Bitmask of VkImageUsageFlagBits+--+-- = Description+--+-- @VkImageUsageFlags@ is a bitmask type for setting a mask of zero or more+-- 'VkImageUsageFlagBits'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',+-- 'VkImageUsageFlagBits',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'vkGetPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'+type VkImageUsageFlags = VkImageUsageFlagBits+-- | VkImageCreateFlags - Bitmask of VkImageCreateFlagBits+--+-- = Description+--+-- @VkImageCreateFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkImageCreateFlagBits'.+--+-- = See Also+--+-- 'VkImageCreateFlagBits',+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'vkGetPhysicalDeviceImageFormatProperties'+type VkImageCreateFlags = VkImageCreateFlagBits+-- | VkFormatFeatureFlags - Bitmask of VkFormatFeatureFlagBits+--+-- = Description+--+-- @VkFormatFeatureFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkFormatFeatureFlagBits'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',+-- 'VkFormatFeatureFlagBits', 'VkFormatProperties'+type VkFormatFeatureFlags = VkFormatFeatureFlagBits+-- | VkSampleCountFlags - Bitmask of VkSampleCountFlagBits+--+-- = Description+--+-- @VkSampleCountFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkSampleCountFlagBits'.+--+-- = See Also+--+-- 'VkImageFormatProperties', 'VkPhysicalDeviceLimits',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',+-- 'VkSampleCountFlagBits'+type VkSampleCountFlags = VkSampleCountFlagBits+-- | VkDeviceSize - Vulkan device memory size and offsets+--+-- = See Also -- -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferPropertiesANDROID', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo',
src/Graphics/Vulkan/Core10/Event.hs view
@@ -66,13 +66,11 @@ -- | VkEventCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkEventCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkEventCreateInfo' newtype VkEventCreateFlags = VkEventCreateFlags VkFlags@@ -97,11 +95,7 @@ data VkEvent_T -- | VkEvent - Opaque handle to a event object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetEvent', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetEvent',@@ -112,7 +106,6 @@ -- | vkCreateEvent - Create a new event object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the event. --@@ -121,13 +114,14 @@ -- created. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pEvent@ points to a handle in which the resulting event object is -- returned. -- -- = Description--- #_description# -- -- When created, the event object is in the unsignaled state. --@@ -145,16 +139,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent',@@ -163,17 +156,15 @@ -- | vkDestroyEvent - Destroy an event object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the event. -- -- - @event@ is the handle of the event to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -204,7 +195,6 @@ -- - Host access to @event@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'@@ -212,34 +202,33 @@ -- | vkGetEventStatus - Retrieve the status of an event object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the event. -- -- - @event@ is the handle of the event to query. -- -- = Description--- #_description# -- -- Upon success, @vkGetEventStatus@ returns the state of the event object -- with the following return codes: ----- > +-----------------------------------+-----------------------------------+--- > | Status | Meaning |--- > +===================================+===================================+--- > | @VK_EVENT_SET@ | The event specified by @event@ is |--- > | | signaled. |--- > +-----------------------------------+-----------------------------------+--- > | @VK_EVENT_RESET@ | The event specified by @event@ is |--- > | | unsignaled. |--- > +-----------------------------------+-----------------------------------+--- >--- > Event Object Status Codes+-- +-----------------------------------+-----------------------------------++-- | Status | Meaning |+-- +===================================+===================================++-- | @VK_EVENT_SET@ | The event specified by @event@ is |+-- | | signaled. |+-- +-----------------------------------+-----------------------------------++-- | @VK_EVENT_RESET@ | The event specified by @event@ is |+-- | | unsignaled. |+-- +-----------------------------------+-----------------------------------+ --+-- Event Object Status Codes+-- -- If a @vkCmdSetEvent@ or @vkCmdResetEvent@ command is in a command buffer--- that is in the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>, then the--- value returned by this command /may/ immediately be out of date.+-- that is in the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- then the value returned by this command /may/ immediately be out of+-- date. -- -- The state of an event /can/ be updated by the host. The state of the -- event is immediately changed, and subsequent calls to @vkGetEventStatus@@@ -257,12 +246,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_EVENT_SET@ -- -- - @VK_EVENT_RESET@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -270,21 +259,18 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent' foreign import ccall "vkGetEventStatus" vkGetEventStatus :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult -- | vkSetEvent - Set an event to signaled state -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the event. -- -- - @event@ is the event to set. -- -- = Description--- #_description# -- -- When 'vkSetEvent' is executed on the host, it defines an /event signal -- operation/ which sets the event to the signaled state.@@ -308,30 +294,27 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent' foreign import ccall "vkSetEvent" vkSetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult -- | vkResetEvent - Reset an event to non-signaled state -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the event. -- -- - @event@ is the event to reset. -- -- = Description--- #_description# -- -- When 'vkResetEvent' is executed on the host, it defines an /event -- unsignal operation/ which resets the event to the unsignaled state.@@ -360,25 +343,21 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent' foreign import ccall "vkResetEvent" vkResetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult -- | VkEventCreateInfo - Structure specifying parameters of a newly created -- event ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EVENT_CREATE_INFO@@@ -388,16 +367,15 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkEventCreateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateEvent' data VkEventCreateInfo = VkEventCreateInfo- { -- No documentation found for Nested "VkEventCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkEventCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkEventCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkEventCreateFlags } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs view
@@ -52,7 +52,6 @@ -- of global extension properties -- -- = Parameters--- #_parameters# -- -- - @pLayerName@ is either @NULL@ or a pointer to a null-terminated -- UTF-8 string naming the layer to retrieve extensions from.@@ -64,7 +63,6 @@ -- 'VkExtensionProperties' structures. -- -- = Description--- #_description# -- -- When @pLayerName@ parameter is @NULL@, only extensions provided by the -- Vulkan implementation or by implicitly enabled layers are returned. When@@ -102,12 +100,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -115,7 +113,6 @@ -- - @VK_ERROR_LAYER_NOT_PRESENT@ -- -- = See Also--- #_see_also# -- -- 'VkExtensionProperties' foreign import ccall "vkEnumerateInstanceExtensionProperties" vkEnumerateInstanceExtensionProperties :: ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult@@ -123,7 +120,6 @@ -- physical device extensions -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be queried. --@@ -140,7 +136,6 @@ -- 'VkExtensionProperties' structures. -- -- = Description--- #_description# -- -- When @pLayerName@ parameter is @NULL@, only extensions provided by the -- Vulkan implementation or by implicitly enabled layers are returned. When@@ -162,12 +157,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -175,25 +170,22 @@ -- - @VK_ERROR_LAYER_NOT_PRESENT@ -- -- = See Also--- #_see_also# -- -- 'VkExtensionProperties', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkEnumerateDeviceExtensionProperties" vkEnumerateDeviceExtensionProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult -- | VkExtensionProperties - Structure specifying a extension properties ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'vkEnumerateDeviceExtensionProperties', -- 'vkEnumerateInstanceExtensionProperties' data VkExtensionProperties = VkExtensionProperties- { -- No documentation found for Nested "VkExtensionProperties" "vkExtensionName"+ { -- | @extensionName@ is a null-terminated string specifying the name of the+ -- extension. vkExtensionName :: Vector VK_MAX_EXTENSION_NAME_SIZE CChar- , -- No documentation found for Nested "VkExtensionProperties" "vkSpecVersion"+ , -- | @specVersion@ is the version of this extension. It is an integer,+ -- incremented with backward compatible changes. vkSpecVersion :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/Fence.hs view
@@ -76,7 +76,6 @@ -- a fence -- -- = See Also--- #_see_also# -- -- 'VkFenceCreateFlags' newtype VkFenceCreateFlagBits = VkFenceCreateFlagBits VkFlags@@ -104,7 +103,6 @@ -- | vkCreateFence - Create a new fence object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the fence. --@@ -113,14 +111,13 @@ -- created. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pFence@ points to a handle in which the resulting fence object is -- returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -135,16 +132,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -153,21 +149,20 @@ -- | vkDestroyFence - Destroy a fence object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the fence. -- -- - @fence@ is the handle of the fence to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage ----- - All <{html_spec_relative}#devsandqueues-submission queue submission>+-- - All [queue+-- submission](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission) -- commands that refer to @fence@ /must/ have completed execution -- -- - If @VkAllocationCallbacks@ were provided when @fence@ was created, a@@ -194,7 +189,6 @@ -- - Host access to @fence@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -203,7 +197,6 @@ -- | vkResetFences - Resets one or more fence objects -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the fences. --@@ -212,8 +205,13 @@ -- - @pFences@ is a pointer to an array of fence handles to reset. -- -- = Description--- #_description# --+-- If any member of @pFences@ currently has its [payload+-- imported](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing)+-- with temporary permanence, that fence’s prior permanent payload is first+-- restored. The remaining operations described therefore operate on the+-- restored payload.+-- -- When 'vkResetFences' is executed on the host, it defines a /fence -- unsignal operation/ for each fence, which resets the fence to the -- unsignaled state.@@ -246,16 +244,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Queue.VkFence'@@ -263,40 +260,36 @@ -- | vkGetFenceStatus - Return the status of a fence -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the fence. -- -- - @fence@ is the handle of the fence to query. -- -- = Description--- #_description# -- -- Upon success, @vkGetFenceStatus@ returns the status of the fence object, -- with the following return codes: ----- > +-----------------------------------+-----------------------------------+--- > | Status | Meaning |--- > +===================================+===================================+--- > | @VK_SUCCESS@ | The fence specified by @fence@ is |--- > | | signaled. |--- > +-----------------------------------+-----------------------------------+--- > | @VK_NOT_READY@ | The fence specified by @fence@ is |--- > | | unsignaled. |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ERROR_DEVICE_LOST@ | The device has been lost. See |--- > | | <{html_spec_relative}#devsandqueu |--- > | | es-lost-device Lost Device>. |--- > +-----------------------------------+-----------------------------------+--- >--- > Fence Object Status Codes+-- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------++-- | Status | Meaning |+-- +===================================+===================================================================================================================++-- | @VK_SUCCESS@ | The fence specified by @fence@ is signaled. |+-- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------++-- | @VK_NOT_READY@ | The fence specified by @fence@ is unsignaled. |+-- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------++-- | @VK_ERROR_DEVICE_LOST@ | The device has been lost. See [Lost |+-- | | Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device). |+-- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------+ ----- If a <{html_spec_relative}#devsandqueues-submission queue submission>+-- Fence Object Status Codes+--+-- If a [queue+-- submission](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission) -- command is pending execution, then the value returned by this command -- /may/ immediately be out of date. ----- If the device has been lost (see--- <{html_spec_relative}#devsandqueues-lost-device Lost Device>),+-- If the device has been lost (see [Lost+-- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device)), -- @vkGetFenceStatus@ /may/ return any of the above status codes. If the -- device has been lost and @vkGetFenceStatus@ is called repeatedly, it -- will eventually return either @VK_SUCCESS@ or @VK_ERROR_DEVICE_LOST@.@@ -312,12 +305,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_NOT_READY@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -325,7 +318,6 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Queue.VkFence'@@ -333,7 +325,6 @@ -- | vkWaitForFences - Wait for one or more fences to become signaled -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the fences. --@@ -353,7 +344,6 @@ -- the requested period. -- -- = Description--- #_description# -- -- If the condition is satisfied when @vkWaitForFences@ is called, then -- @vkWaitForFences@ returns immediately. If the condition is not satisfied@@ -371,10 +361,10 @@ -- satisfied before @timeout@ nanoseconds has expired, @vkWaitForFences@ -- returns @VK_SUCCESS@. ----- If device loss occurs (see--- <{html_spec_relative}#devsandqueues-lost-device Lost Device>) before the--- timeout has expired, @vkWaitForFences@ /must/ return in finite time with--- either @VK_SUCCESS@ or @VK_ERROR_DEVICE_LOST@.+-- If device loss occurs (see [Lost+-- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device))+-- before the timeout has expired, @vkWaitForFences@ /must/ return in+-- finite time with either @VK_SUCCESS@ or @VK_ERROR_DEVICE_LOST@. -- -- __Note__ --@@ -398,12 +388,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_TIMEOUT@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -411,7 +401,6 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Queue.VkFence'@@ -419,9 +408,6 @@ -- | VkFenceCreateInfo - Structure specifying parameters of a newly created -- fence ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_FENCE_CREATE_INFO@@@ -439,16 +425,16 @@ -- values -- -- = See Also--- #_see_also# -- -- 'VkFenceCreateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateFence' data VkFenceCreateInfo = VkFenceCreateInfo- { -- No documentation found for Nested "VkFenceCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkFenceCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkFenceCreateInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkFenceCreateFlagBits' specifying the initial+ -- state and behavior of the fence. vkFlags :: VkFenceCreateFlags } deriving (Eq, Show)@@ -465,13 +451,11 @@ -- | VkFenceCreateFlags - Bitmask of VkFenceCreateFlagBits -- -- = Description--- #_description# -- -- @VkFenceCreateFlags@ is a bitmask type for setting a mask of zero or -- more 'VkFenceCreateFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkFenceCreateFlagBits', 'VkFenceCreateInfo' type VkFenceCreateFlags = VkFenceCreateFlagBits
src/Graphics/Vulkan/Core10/Image.hs view
@@ -91,7 +91,6 @@ -- | VkImageLayout - Layout of image and image subresources -- -- = Description--- #_description# -- -- The type(s) of device access supported by each layout are: --@@ -139,6 +138,36 @@ -- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /can/ be used as input -- attachments. --+-- - @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@: /must/+-- only be used as a depth\/stencil attachment in a @VkFramebuffer@,+-- where the depth aspect is read-only, and\/or as a read-only image in+-- a shader (which /can/ be read as a sampled image, combined+-- image\/sampler and\/or input attachment) where only the depth aspect+-- is accessed. This layout is valid only for image subresources of+-- images created with the+-- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ usage bit enabled.+-- Only image subresources of images created with+-- @VK_IMAGE_USAGE_SAMPLED_BIT@ /can/ be used as a sampled image or+-- combined image\/sampler in a shader. Similarly, only image+-- subresources of images created with+-- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /can/ be used as input+-- attachments.+--+-- - @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@: /must/+-- only be used as a depth\/stencil attachment in a @VkFramebuffer@,+-- where the stencil aspect is read-only, and\/or as a read-only image+-- in a shader (which /can/ be read as a sampled image, combined+-- image\/sampler and\/or input attachment) where only the stencil+-- aspect is accessed. This layout is valid only for image subresources+-- of images created with the+-- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ usage bit enabled.+-- Only image subresources of images created with+-- @VK_IMAGE_USAGE_SAMPLED_BIT@ /can/ be used as a sampled image or+-- combined image\/sampler in a shader. Similarly, only image+-- subresources of images created with+-- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /can/ be used as input+-- attachments.+-- -- - @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ /must/ only be used as a -- read-only image in a shader (which /can/ be read as a sampled image, -- combined image\/sampler and\/or input attachment). This layout is@@ -148,7 +177,7 @@ -- -- - @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ /must/ only be used as a -- source image of a transfer command (see the definition of--- <{html_spec_relative}#synchronization-pipeline-stages-transfer VK_PIPELINE_STAGE_TRANSFER_BIT>).+-- [@VK_PIPELINE_STAGE_TRANSFER_BIT@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer)). -- This layout is valid only for image subresources of images created -- with the @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage bit enabled. --@@ -157,6 +186,17 @@ -- for image subresources of images created with the -- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage bit enabled. --+-- - @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ /must/ only be used for presenting+-- a presentable image for display. A swapchain’s image /must/ be+-- transitioned to this layout before calling+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR', and+-- /must/ be transitioned away from this layout after calling+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR'.+--+-- - @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@ is valid only for shared+-- presentable images, and /must/ be used for any usage the image+-- supports.+-- -- The layout of each image subresource is not a state of the image -- subresource itself, but is rather a property of how the data in memory -- is organized, and thus for each mechanism of accessing an image in the@@ -164,13 +204,15 @@ -- indicates which image layout the image subresource(s) are considered to -- be in when the image will be accessed. For transfer commands, this is a -- parameter to the command (see--- <{html_spec_relative}#clears {html_spec_relative}#clears> and--- <{html_spec_relative}#copies {html_spec_relative}#copies>). For use as a--- framebuffer attachment, this is a member in the substructures of the--- @VkRenderPassCreateInfo@ (see--- <{html_spec_relative}#renderpass Render Pass>). For use in a descriptor--- set, this is a member in the @VkDescriptorImageInfo@ structure (see--- <{html_spec_relative}#descriptorsets-updates {html_spec_relative}#descriptorsets-updates>).+-- [{html_spec_relative}#clears](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears)+-- and+-- [{html_spec_relative}#copies](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)).+-- For use as a framebuffer attachment, this is a member in the+-- substructures of the @VkRenderPassCreateInfo@ (see [Render+-- Pass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)).+-- For use in a descriptor set, this is a member in the+-- @VkDescriptorImageInfo@ structure (see+-- [{html_spec_relative}#descriptorsets-updates](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates)). -- At the time that any command buffer command accessing an image executes -- on any queue, the layouts of the image subresources that are accessed -- /must/ all match the layout specified via the API controlling those@@ -184,8 +226,31 @@ -- /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or -- @VK_IMAGE_LAYOUT_PREINITIALIZED@. --+-- The image layout of each image subresource of a depth\/stencil image+-- created with @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@+-- is dependent on the last sample locations used to render to the image+-- subresource as a depth\/stencil attachment, thus applications /must/+-- provide the same sample locations that were last used to render to the+-- given image subresource whenever a layout transition of the image+-- subresource happens, otherwise the contents of the depth aspect of the+-- image subresource become undefined.+--+-- In addition, depth reads from a depth\/stencil attachment referring to+-- an image subresource range of a depth\/stencil image created with+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ using+-- different sample locations than what have been last used to perform+-- depth writes to the image subresources of the same image subresource+-- range produce undefined results.+--+-- Similarly, depth writes to a depth\/stencil attachment referring to an+-- image subresource range of a depth\/stencil image created with+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ using+-- different sample locations than what have been last used to perform+-- depth writes to the image subresources of the same image subresource+-- range make the contents of the depth aspect of those image subresources+-- undefined.+-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription', -- 'Graphics.Vulkan.Core10.Pass.VkAttachmentReference',@@ -280,7 +345,6 @@ -- | vkCreateImage - Create a new image object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the image. --@@ -288,14 +352,13 @@ -- structure containing parameters to be used to create the image. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pImage@ points to a @VkImage@ handle in which the resulting image -- object is returned. ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the @flags@ member of @pCreateInfo@ includes@@ -318,16 +381,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -336,17 +398,15 @@ -- | vkDestroyImage - Destroy an image object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the image. -- -- - @image@ is the image to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -377,7 +437,6 @@ -- - Host access to @image@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -387,7 +446,6 @@ -- subresource -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the image. --@@ -401,10 +459,17 @@ -- layout is returned. -- -- = Description--- #_description# --+-- If the 'Graphics.Vulkan.Core10.Core.VkFormat' of @image@ is a+-- [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- @vkGetImageSubresourceLayout@ describes one plane of the image.+-- -- 'vkGetImageSubresourceLayout' is invariant for the lifetime of a single--- image.+-- image. However, the subresource layout of images in Android hardware+-- buffer external memory isn’t known until the image has been bound to+-- memory, so calling @vkGetImageSubresourceLayout@ for such an image+-- before it has been bound will result in undefined behavior. -- -- == Valid Usage --@@ -422,6 +487,21 @@ -- @arrayLayers@ specified in 'VkImageCreateInfo' when @image@ was -- created --+-- - If the @format@ of @image@ is a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- with two planes, the @aspectMask@ member of @pSubresource@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@+--+-- - If the @format@ of @image@ is a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- with three planes, the @aspectMask@ member of @pSubresource@ /must/+-- be @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@ or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@+--+-- - If @image@ was created with the+-- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID+-- external memory handle type, then @image@ /must/ be bound to memory.+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -438,7 +518,6 @@ -- @device@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',@@ -449,7 +528,6 @@ -- created image object -- -- = Description--- #_description# -- -- Images created with @tiling@ equal to @VK_IMAGE_TILING_LINEAR@ have -- further restrictions on their limits and capabilities compared to images@@ -474,14 +552,15 @@ -- those listed above. -- -- To query an implementation’s specific capabilities for a given--- combination of @format@, @imageType@, @tiling@, @usage@, and @flags@,--- call--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties'.+-- combination of @format@, @imageType@, @tiling@, @usage@,+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'::@handleTypes@+-- and @flags@, call+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'. -- The return value specifies whether that combination of image settings is -- supported. On success, the @VkImageFormatProperties@ output parameter -- specifies the set of valid @samples@ bits and the limits for @extent@, -- @mipLevels@, @arrayLayers@, and @maxResourceSize@. Even if--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties'.+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'. -- returns success and the parameters to vkCreateImage are all within the -- returned limits, @vkCreateImage@ /must/ fail and return -- @VK_ERROR_OUT_OF_DEVICE_MEMORY@ if the resulting size of the image would@@ -490,12 +569,27 @@ -- To determine the set of valid @usage@ bits for a given format, call -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'. --+-- __Note__+--+-- For images created without @VK_IMAGE_CREATE_EXTENDED_USAGE_BIT@ a+-- @usage@ bit is valid if it is supported for the format the image is+-- created with.+--+-- For images created with @VK_IMAGE_CREATE_EXTENDED_USAGE_BIT@ a @usage@+-- bit is valid if it is supported for at least one of the formats a+-- @VkImageView@ created from the image /can/ have (see [Image+-- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views)+-- for more detail).+-- -- == Valid Usage ----- - The combination of @format@, @imageType@, @tiling@, @usage@, and--- @flags@ /must/ be supported, as indicated by a @VK_SUCCESS@ return--- value from @vkGetPhysicalDeviceImageFormatProperties@ invoked with--- the same values passed to the corresponding parameters.+-- - If the @pNext@ chain doesn’t contain an instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID',+-- or if @format@ is not VK_FORMAT_UNDEFINED, the combination of+-- @format@, @imageType@, @tiling@, @usage@, and @flags@ /must/ be+-- supported, as indicated by a @VK_SUCCESS@ return value from+-- @vkGetPhysicalDeviceImageFormatProperties@ invoked with the same+-- values passed to the corresponding parameters. -- -- - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@, -- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of@@ -506,8 +600,10 @@ -- -- - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@, each element of -- @pQueueFamilyIndices@ /must/ be unique and /must/ be less than--- @pQueueFamilyPropertyCount@ returned by+-- @pQueueFamilyPropertyCount@ returned by either -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2' -- for the @physicalDevice@ that was used to create @device@ -- -- - @format@ /must/ not be @VK_FORMAT_UNDEFINED@@@ -525,6 +621,9 @@ -- - If @flags@ contains @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@, -- @imageType@ /must/ be @VK_IMAGE_TYPE_2D@ --+-- - If @flags@ contains @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@,+-- @imageType@ /must/ be @VK_IMAGE_TYPE_3D@+-- -- - If @imageType@ is @VK_IMAGE_TYPE_1D@, @extent.width@ /must/ be less -- than or equal to @VkPhysicalDeviceLimits@::@maxImageDimension1D@, or -- @VkImageFormatProperties@::@maxExtent.width@ (as returned by@@ -620,55 +719,55 @@ -- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this -- structure ----- - If the--- <{html_spec_relative}#features-features-shaderStorageImageMultisample multisampled storage images>+-- - If the [multisampled storage+-- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-shaderStorageImageMultisample) -- feature is not enabled, and @usage@ contains -- @VK_IMAGE_USAGE_STORAGE_BIT@, @samples@ /must/ be -- @VK_SAMPLE_COUNT_1_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseBinding sparse bindings>+-- - If the [sparse+-- bindings](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseBinding) -- feature is not enabled, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidencyAliased sparse aliased residency>+-- - If the [sparse aliased+-- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyAliased) -- feature is not enabled, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ -- -- - If @imageType@ is @VK_IMAGE_TYPE_1D@, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidencyImage2D sparse residency for 2D images>+-- - If the [sparse residency for 2D+-- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyImage2D) -- feature is not enabled, and @imageType@ is @VK_IMAGE_TYPE_2D@, -- @flags@ /must/ not contain @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidencyImage3D sparse residency for 3D images>+-- - If the [sparse residency for 3D+-- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyImage3D) -- feature is not enabled, and @imageType@ is @VK_IMAGE_TYPE_3D@, -- @flags@ /must/ not contain @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidency2Samples sparse residency for images with 2 samples>+-- - If the [sparse residency for images with 2+-- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency2Samples) -- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and -- @samples@ is @VK_SAMPLE_COUNT_2_BIT@, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidency4Samples sparse residency for images with 4 samples>+-- - If the [sparse residency for images with 4+-- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency4Samples) -- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and -- @samples@ is @VK_SAMPLE_COUNT_4_BIT@, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidency8Samples sparse residency for images with 8 samples>+-- - If the [sparse residency for images with 8+-- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency8Samples) -- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and -- @samples@ is @VK_SAMPLE_COUNT_8_BIT@, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ ----- - If the--- <{html_spec_relative}#features-features-sparseResidency16Samples sparse residency for images with 16 samples>+-- - If the [sparse residency for images with 16+-- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency16Samples) -- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and -- @samples@ is @VK_SAMPLE_COUNT_16_BIT@, @flags@ /must/ not contain -- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@@@ -744,9 +843,137 @@ -- @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ are set, -- @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@ /must/ not also be set --+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',+-- it /must/ not contain an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'.+--+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo',+-- its @handleTypes@ member /must/ only contain bits that are also in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'::@externalMemoryProperties@::@compatibleHandleTypes@,+-- as returned by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'+-- with @format@, @imageType@, @tiling@, @usage@, and @flags@ equal to+-- those in this structure, and with an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'+-- in the @pNext@ chain, with a @handleType@ equal to any one of the+-- handle types specified in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'::@handleTypes@+--+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',+-- its @handleTypes@ member /must/ only contain bits that are also in+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalImageFormatPropertiesNV'::@externalMemoryProperties@::@compatibleHandleTypes@,+-- as returned by+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV'+-- with @format@, @imageType@, @tiling@, @usage@, and @flags@ equal to+-- those in this structure, and with @externalHandleType@ equal to any+-- one of the handle types specified in+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV'::@handleTypes@+--+-- - If the logical device was created with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo'::@physicalDeviceCount@+-- equal to 1, @flags@ /must/ not contain+-- @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@+--+-- - If @flags@ contains+-- @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@, then @mipLevels@+-- /must/ be one, @arrayLayers@ /must/ be one, @imageType@ /must/ be+-- @VK_IMAGE_TYPE_2D@, and @tiling@ /must/ be @VK_IMAGE_TILING_OPTIMAL@+--+-- - If @flags@ contains+-- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@, then @format@+-- /must/ be a [block-compressed image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#appendix-compressedtex-bc),+-- an [ETC compressed image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#appendix-compressedtex-etc2),+-- or an [ASTC compressed image+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#appendix-compressedtex-astc).+--+-- - If @flags@ contains+-- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@, then @flags@+-- /must/ also contain @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@.+-- -- - @initialLayout@ /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@ or -- @VK_IMAGE_LAYOUT_PREINITIALIZED@. --+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV'+-- structure whose @handleTypes@ member is not @0@, @initialLayout@+-- /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@+--+-- - If the image @format@ is one of those listed in+-- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion):+--+-- - @mipLevels@ /must/ be 1+--+-- - @samples@ must be @VK_SAMPLE_COUNT_1_BIT@+--+-- - @imageType@ /must/ be @VK_IMAGE_TYPE_2D@+--+-- - @arrayLayers@ /must/ be 1+--+-- - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, @format@ is a+-- /multi-planar/ format, and+-- @VkFormatProperties@::@optimalTilingFeatures@ (as returned by+-- @vkGetPhysicalDeviceFormatProperties@ with the same value of+-- @format@) does not include @VK_FORMAT_FEATURE_DISJOINT_BIT@, @flags@+-- /must/ not contain @VK_IMAGE_CREATE_DISJOINT_BIT@+--+-- - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, @format@ is a+-- /multi-planar/ format, and+-- @VkFormatProperties@::@linearTilingFeatures@ (as returned by+-- @vkGetPhysicalDeviceFormatProperties@ with the same value of+-- @format@) does not include @VK_FORMAT_FEATURE_DISJOINT_BIT@, @flags@+-- /must/ not contain @VK_IMAGE_CREATE_DISJOINT_BIT@+--+-- - If @format@ is not a /multi-planar/ format, and @flags@ does not+-- include @VK_IMAGE_CREATE_ALIAS_BIT@, @flags@ /must/ not contain+-- @VK_IMAGE_CREATE_DISJOINT_BIT@+--+-- - If @flags@ contains+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ @format@+-- /must/ be a depth or depth\/stencil format+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'+-- structure whose @handleTypes@ member includes+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@:+--+-- - @imageType@ /must/ be @VK_IMAGE_TYPE_2D@+--+-- - @mipLevels@ /must/ either be @1@ or equal to+-- ⌊log2(max(@extent.width@, @extent.height@, @extent.depth@))⌋ ++-- 1.+--+-- - If @format@ is not @VK_FORMAT_UNDEFINED@, then @format@,+-- @imageType@, @tiling@, @usage@, @flags@, @mipLevels@, and+-- @samples@ /must/ be supported with+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@+-- external memory handle types according to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'+--+-- - If @format@ is @VK_FORMAT_UNDEFINED@, then the @pNext@ chain+-- /must/ include a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'+-- structure whose @externalFormat@ member is not @0@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'+-- structure whose @externalFormat@ member is not @0@:+--+-- - @format@ /must/ be @VK_FORMAT_UNDEFINED@+--+-- - @flags@ /must/ not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT+--+-- - @usage@ /must/ not include any usages except+-- @VK_IMAGE_USAGE_SAMPLED_BIT@+--+-- - @tiling@ /must/ be @VK_IMAGE_TILING_OPTIMAL@+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO@@@ -793,7 +1020,6 @@ -- - @initialLayout@ /must/ be a valid 'VkImageLayout' value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D', -- 'Graphics.Vulkan.Core10.Core.VkFormat',@@ -806,35 +1032,58 @@ -- 'Graphics.Vulkan.Core10.Buffer.VkSharingMode', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateImage' data VkImageCreateInfo = VkImageCreateInfo- { -- No documentation found for Nested "VkImageCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageCreateInfo" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'+ -- describing additional parameters of the image. vkFlags :: VkImageCreateFlags- , -- No documentation found for Nested "VkImageCreateInfo" "vkImageType"+ , -- | @imageType@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value+ -- specifying the basic dimensionality of the image. Layers in array+ -- textures do not count as a dimension for the purposes of the image type. vkImageType :: VkImageType- , -- No documentation found for Nested "VkImageCreateInfo" "vkFormat"+ , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' describing the+ -- format and type of the data elements that will be contained in the+ -- image. vkFormat :: VkFormat- , -- No documentation found for Nested "VkImageCreateInfo" "vkExtent"+ , -- | @extent@ is a 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D'+ -- describing the number of data elements in each dimension of the base+ -- level. vkExtent :: VkExtent3D- , -- No documentation found for Nested "VkImageCreateInfo" "vkMipLevels"+ , -- | @mipLevels@ describes the number of levels of detail available for+ -- minified sampling of the image. vkMipLevels :: Word32- , -- No documentation found for Nested "VkImageCreateInfo" "vkArrayLayers"+ , -- | @arrayLayers@ is the number of layers in the image. vkArrayLayers :: Word32- , -- No documentation found for Nested "VkImageCreateInfo" "vkSamples"+ , -- | @samples@ is the number of sub-data element samples in the image as+ -- defined in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'. See+ -- [Multisampling](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-multisampling). vkSamples :: VkSampleCountFlagBits- , -- No documentation found for Nested "VkImageCreateInfo" "vkTiling"+ , -- | @tiling@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value+ -- specifying the tiling arrangement of the data elements in memory. vkTiling :: VkImageTiling- , -- No documentation found for Nested "VkImageCreateInfo" "vkUsage"+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+ -- describing the intended usage of the image. vkUsage :: VkImageUsageFlags- , -- No documentation found for Nested "VkImageCreateInfo" "vkSharingMode"+ , -- | @sharingMode@ is a 'Graphics.Vulkan.Core10.Buffer.VkSharingMode' value+ -- specifying the sharing mode of the image when it will be accessed by+ -- multiple queue families. vkSharingMode :: VkSharingMode- , -- No documentation found for Nested "VkImageCreateInfo" "vkQueueFamilyIndexCount"+ , -- | @queueFamilyIndexCount@ is the number of entries in the+ -- @pQueueFamilyIndices@ array. vkQueueFamilyIndexCount :: Word32- , -- No documentation found for Nested "VkImageCreateInfo" "vkPQueueFamilyIndices"+ , -- | @pQueueFamilyIndices@ is a list of queue families that will access this+ -- image (ignored if @sharingMode@ is not @VK_SHARING_MODE_CONCURRENT@). vkPQueueFamilyIndices :: Ptr Word32- , -- No documentation found for Nested "VkImageCreateInfo" "vkInitialLayout"+ , -- | @initialLayout@ is a 'VkImageLayout' value specifying the initial+ -- 'VkImageLayout' of all image subresources of the image. See [Image+ -- Layouts](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-layouts). vkInitialLayout :: VkImageLayout } deriving (Eq, Show)@@ -875,7 +1124,6 @@ -- | VkSubresourceLayout - Structure specifying subresource layout -- -- = Description--- #_description# -- -- For images created with linear tiling, @rowPitch@, @arrayPitch@ and -- @depthPitch@ describe the layout of the image subresource in linear@@ -904,30 +1152,43 @@ -- @arrayPitch@ is undefined for images that were not created as arrays. -- @depthPitch@ is defined only for 3D images. ----- For color formats, the @aspectMask@ member of @VkImageSubresource@--- /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@. For depth\/stencil formats,--- @aspectMask@ /must/ be either @VK_IMAGE_ASPECT_DEPTH_BIT@ or--- @VK_IMAGE_ASPECT_STENCIL_BIT@. On implementations that store depth and--- stencil aspects separately, querying each of these image subresource--- layouts will return a different @offset@ and @size@ representing the--- region of memory used for that aspect. On implementations that store--- depth and stencil aspects interleaved, the same @offset@ and @size@ are--- returned and represent the interleaved memory allocation.+-- For /single-plane/ color formats, the @aspectMask@ member of+-- @VkImageSubresource@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@. For+-- depth\/stencil formats, @aspectMask@ /must/ be either+-- @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@. On+-- implementations that store depth and stencil aspects separately,+-- querying each of these image subresource layouts will return a different+-- @offset@ and @size@ representing the region of memory used for that+-- aspect. On implementations that store depth and stencil aspects+-- interleaved, the same @offset@ and @size@ are returned and represent the+-- interleaved memory allocation. --+-- For [multi-planar+-- formats](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- the @aspectMask@ member of @VkImageSubresource@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or (for+-- 3-plane formats only) @VK_IMAGE_ASPECT_PLANE_2_BIT@. Querying each of+-- these image subresource layouts will return a different @offset@ and+-- @size@ representing the region of memory used for that plane.+-- -- = See Also--- #_see_also# -- -- @VkDeviceSize@, 'vkGetImageSubresourceLayout' data VkSubresourceLayout = VkSubresourceLayout- { -- No documentation found for Nested "VkSubresourceLayout" "vkOffset"+ { -- | @offset@ is the byte offset from the start of the image where the image+ -- subresource begins. vkOffset :: VkDeviceSize- , -- No documentation found for Nested "VkSubresourceLayout" "vkSize"+ , -- | @size@ is the size in bytes of the image subresource. @size@ includes+ -- any extra memory that is required based on @rowPitch@. vkSize :: VkDeviceSize- , -- No documentation found for Nested "VkSubresourceLayout" "vkRowPitch"+ , -- | @rowPitch@ describes the number of bytes between each row of texels in+ -- an image. vkRowPitch :: VkDeviceSize- , -- No documentation found for Nested "VkSubresourceLayout" "vkArrayPitch"+ , -- | @arrayPitch@ describes the number of bytes between each array layer of+ -- an image. vkArrayPitch :: VkDeviceSize- , -- No documentation found for Nested "VkSubresourceLayout" "vkDepthPitch"+ , -- | @depthPitch@ describes the number of bytes between each slice of 3D+ -- image. vkDepthPitch :: VkDeviceSize } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/ImageView.hs view
@@ -94,7 +94,6 @@ -- | VkComponentSwizzle - Specify how a component is swizzled -- -- = Description--- #_description# -- -- - @VK_COMPONENT_SWIZZLE_IDENTITY@ specifies that the component is set -- to the identity swizzle.@@ -105,8 +104,8 @@ -- - @VK_COMPONENT_SWIZZLE_ONE@ specifies that the component is set to -- either 1 or 1.0, depending on whether the type of the image view -- format is integer or floating-point respectively, as determined by--- the--- <{html_spec_relative}#features-formats-definition Format Definition>+-- the [Format+-- Definition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-definition) -- section for each 'Graphics.Vulkan.Core10.Core.VkFormat'. -- -- - @VK_COMPONENT_SWIZZLE_R@ specifies that the component is set to the@@ -124,22 +123,21 @@ -- Setting the identity swizzle on a component is equivalent to setting the -- identity mapping on that component. That is: ----- > +-----------------------------------+-----------------------------------+--- > | Component | Identity Mapping |--- > +===================================+===================================+--- > | @components.r@ | @VK_COMPONENT_SWIZZLE_R@ |--- > +-----------------------------------+-----------------------------------+--- > | @components.g@ | @VK_COMPONENT_SWIZZLE_G@ |--- > +-----------------------------------+-----------------------------------+--- > | @components.b@ | @VK_COMPONENT_SWIZZLE_B@ |--- > +-----------------------------------+-----------------------------------+--- > | @components.a@ | @VK_COMPONENT_SWIZZLE_A@ |--- > +-----------------------------------+-----------------------------------+--- >--- > Component Mappings Equivalent To @VK_COMPONENT_SWIZZLE_IDENTITY@+-- +-----------------------------------+-----------------------------------++-- | Component | Identity Mapping |+-- +===================================+===================================++-- | @components.r@ | @VK_COMPONENT_SWIZZLE_R@ |+-- +-----------------------------------+-----------------------------------++-- | @components.g@ | @VK_COMPONENT_SWIZZLE_G@ |+-- +-----------------------------------+-----------------------------------++-- | @components.b@ | @VK_COMPONENT_SWIZZLE_B@ |+-- +-----------------------------------+-----------------------------------++-- | @components.a@ | @VK_COMPONENT_SWIZZLE_A@ |+-- +-----------------------------------+-----------------------------------+ --+-- Component Mappings Equivalent To @VK_COMPONENT_SWIZZLE_IDENTITY@+-- -- = See Also--- #_see_also# -- -- 'VkComponentMapping' newtype VkComponentSwizzle = VkComponentSwizzle Int32@@ -203,18 +201,16 @@ -- | VkImageViewType - Image view types -- -- = Description--- #_description# -- -- The exact image view type is partially implicit, based on the image’s -- type and sample count, as well as the view creation parameters as--- described in the--- <{html_spec_relative}#resources-image-views-compatibility image view compatibility table>+-- described in the [image view compatibility+-- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views-compatibility) -- for 'vkCreateImageView'. This table also shows which SPIR-V -- @OpTypeImage@ @Dim@ and @Arrayed@ parameters correspond to each image -- view type. -- -- = See Also--- #_see_also# -- -- 'VkImageViewCreateInfo' newtype VkImageViewType = VkImageViewType Int32@@ -278,13 +274,11 @@ -- | VkImageViewCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkImageViewCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkImageViewCreateInfo' newtype VkImageViewCreateFlags = VkImageViewCreateFlags VkFlags@@ -309,11 +303,7 @@ data VkImageView_T -- | VkImageView - Opaque handle to a image view object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo', -- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',@@ -322,7 +312,6 @@ -- | vkCreateImageView - Create an image view from an existing image -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the image view. --@@ -331,19 +320,24 @@ -- to create the image view. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pView@ points to a @VkImageView@ handle in which the resulting -- image view object is returned. -- -- = Description--- #_description# -- -- Some of the image creation parameters are inherited by the view. In -- particular, image view creation inherits the implicit parameter @usage@ -- specifying the allowed usages of the image view that, by default, takes -- the value of the corresponding @usage@ parameter specified in--- @VkImageCreateInfo@ at image creation time.+-- @VkImageCreateInfo@ at image creation time. This implicit parameter+-- /can/ be overriden by chaining a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo'+-- structure through the @pNext@ member to @VkImageViewCreateInfo@ as+-- described later in this section. -- -- The remaining parameters are contained in the @pCreateInfo@. --@@ -361,16 +355,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImageView',@@ -379,17 +372,15 @@ -- | vkDestroyImageView - Destroy an image view object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the image view. -- -- - @imageView@ is the image view to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -421,16 +412,12 @@ -- - Host access to @imageView@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImageView' foreign import ccall "vkDestroyImageView" vkDestroyImageView :: ("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () -- | VkComponentMapping - Structure specifying a color component mapping ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @r@ /must/ be a valid 'VkComponentSwizzle' value@@ -442,19 +429,22 @@ -- - @a@ /must/ be a valid 'VkComponentSwizzle' value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID', -- 'VkComponentSwizzle', 'VkImageViewCreateInfo', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo' data VkComponentMapping = VkComponentMapping- { -- No documentation found for Nested "VkComponentMapping" "vkR"+ { -- | @r@ is a 'VkComponentSwizzle' specifying the component value placed in+ -- the R component of the output vector. vkR :: VkComponentSwizzle- , -- No documentation found for Nested "VkComponentMapping" "vkG"+ , -- | @g@ is a 'VkComponentSwizzle' specifying the component value placed in+ -- the G component of the output vector. vkG :: VkComponentSwizzle- , -- No documentation found for Nested "VkComponentMapping" "vkB"+ , -- | @b@ is a 'VkComponentSwizzle' specifying the component value placed in+ -- the B component of the output vector. vkB :: VkComponentSwizzle- , -- No documentation found for Nested "VkComponentMapping" "vkA"+ , -- | @a@ is a 'VkComponentSwizzle' specifying the component value placed in+ -- the A component of the output vector. vkA :: VkComponentSwizzle } deriving (Eq, Show)@@ -473,7 +463,6 @@ -- | VkImageSubresourceRange - Structure specifying a image subresource range -- -- = Description--- #_description# -- -- The number of mipmap levels and array layers /must/ be a subset of the -- image subresources in the image. If an application wants to use all mip@@ -494,11 +483,25 @@ -- -- @aspectMask@ /must/ be only @VK_IMAGE_ASPECT_COLOR_BIT@, -- @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@ if @format@--- is a color, depth-only or stencil-only format, respectively. If using a--- depth\/stencil format with both depth and stencil components,+-- is a color, depth-only or stencil-only format, respectively, except if+-- @format@ is a [multi-planar+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion).+-- If using a depth\/stencil format with both depth and stencil components, -- @aspectMask@ /must/ include at least one of @VK_IMAGE_ASPECT_DEPTH_BIT@ -- and @VK_IMAGE_ASPECT_STENCIL_BIT@, and /can/ include both. --+-- When the @VkImageSubresourceRange@ structure is used to select a subset+-- of the slices of a 3D image’s mip level in order to create a 2D or 2D+-- array image view of a 3D image created with+-- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@, @baseArrayLayer@ and+-- @layerCount@ specify the first slice index and the number of slices to+-- include in the created image view. Such an image view /can/ be used as a+-- framebuffer attachment that refers only to the specified range of slices+-- of the selected mip level. However, any layout transitions performed on+-- such an attachment view during a render pass instance still apply to the+-- entire subresource referenced which includes all the slices of the+-- selected mip level.+-- -- When using an imageView of a depth\/stencil image to populate a -- descriptor set (e.g. for sampling in the shader, or for use as an input -- attachment), the @aspectMask@ /must/ only include one bit and selects@@ -512,9 +515,25 @@ -- The @components@ member is of type 'VkComponentMapping', and describes a -- remapping from components of the image to components of the vector -- returned by shader image instructions. This remapping /must/ be identity--- for storage image descriptors, input attachment descriptors, and--- framebuffer attachments.+-- for storage image descriptors, input attachment descriptors, framebuffer+-- attachments, and any @VkImageView@ used with a combined image sampler+-- that enables [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion). --+-- When creating a @VkImageView@, if [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- is enabled in the sampler, the @aspectMask@ of a @subresourceRange@ used+-- by the @VkImageView@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@.+--+-- When creating a @VkImageView@, if sampler Y’CBCR conversion is not+-- enabled in the sampler and the image @format@ is+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- the image /must/ have been created with+-- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@, and the @aspectMask@ of the+-- @VkImageView@’s @subresourceRange@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@ or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@.+-- -- == Valid Usage -- -- - If @levelCount@ is not @VK_REMAINING_MIP_LEVELS@, it /must/ be@@ -523,6 +542,10 @@ -- - If @layerCount@ is not @VK_REMAINING_ARRAY_LAYERS@, it /must/ be -- greater than @0@ --+-- - If @aspectMask@ includes @VK_IMAGE_ASPECT_COLOR_BIT@, then it /must/+-- not include any of @VK_IMAGE_ASPECT_PLANE_0_BIT@,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@, or @VK_IMAGE_ASPECT_PLANE_2_BIT@+-- -- == Valid Usage (Implicit) -- -- - @aspectMask@ /must/ be a valid combination of@@ -532,7 +555,6 @@ -- - @aspectMask@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier',@@ -540,15 +562,19 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearDepthStencilImage' data VkImageSubresourceRange = VkImageSubresourceRange- { -- No documentation found for Nested "VkImageSubresourceRange" "vkAspectMask"+ { -- | @aspectMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'+ -- specifying which aspect(s) of the image are included in the view. vkAspectMask :: VkImageAspectFlags- , -- No documentation found for Nested "VkImageSubresourceRange" "vkBaseMipLevel"+ , -- | @baseMipLevel@ is the first mipmap level accessible to the view. vkBaseMipLevel :: Word32- , -- No documentation found for Nested "VkImageSubresourceRange" "vkLevelCount"+ , -- | @levelCount@ is the number of mipmap levels (starting from+ -- @baseMipLevel@) accessible to the view. vkLevelCount :: Word32- , -- No documentation found for Nested "VkImageSubresourceRange" "vkBaseArrayLayer"+ , -- | @baseArrayLayer@ is the first array layer accessible to the view. vkBaseArrayLayer :: Word32- , -- No documentation found for Nested "VkImageSubresourceRange" "vkLayerCount"+ , -- | @layerCount@ is the number of array layers (starting from+ -- @baseArrayLayer@) accessible to the view. vkLayerCount :: Word32 } deriving (Eq, Show)@@ -570,13 +596,15 @@ -- created image view -- -- = Description--- #_description# -- -- If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@--- flag, @format@ /can/ be different from the image’s format, but if they--- are not equal they /must/ be /compatible/. Image format compatibility is--- defined in the--- <{html_spec_relative}#features-formats-compatibility-classes Format Compatibility Classes>+-- flag, and if the @format@ of the image is not+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),+-- @format@ /can/ be different from the image’s format, but if @image@ was+-- created without the @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@+-- flag and they are not equal they /must/ be /compatible/. Image format+-- compatibility is defined in the [Format Compatibility+-- Classes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatibility-classes) -- section. Views of compatible formats will have the same mapping between -- texel coordinates and memory locations irrespective of the @format@, -- with only the interpretation of the bit pattern changing.@@ -590,128 +618,194 @@ -- read through a view with a floating point format. Similarly, a value -- written through a signed normalized format that has a bit pattern -- exactly equal to -2b /may/ be changed to -2b + 1 as described in--- <{html_spec_relative}#fundamentals-fixedfpconv Conversion from Normalized Fixed-Point to Floating-Point>.+-- [Conversion from Normalized Fixed-Point to+-- Floating-Point](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fixedfpconv). ----- > +---------+------------------------+-----------------------------------+--- > | Dim, | Image parameters | View parameters |--- > | Arrayed | | |--- > | , | | |--- > | MS | | |--- > +=========+========================+===================================+--- > | | @imageType@ = | @baseArrayLayer@ and @layerCount@ |--- > | | ci.@imageType@ | are members of the |--- > | | @width@ = | @subresourceRange@ member. |--- > | | ci.@extent.width@ | |--- > | | @height@ = | |--- > | | ci.@extent.height@ | |--- > | | @depth@ = | |--- > | | ci.@extent.depth@ | |--- > | | @arrayLayers@ = | |--- > | | ci.@arrayLayers@ | |--- > | | @samples@ = | |--- > | | ci.@samples@ | |--- > | | @flags@ = ci.@flags@ | |--- > | | where ci is the | |--- > | | 'Graphics.Vulkan.Core1 | |--- > | | 0.Image.VkImageCreateI | |--- > | | nfo' | |--- > | | used to create | |--- > | | @image@. | |--- > +---------+------------------------+-----------------------------------+--- > | __1D, | @imageType@ = | @viewType@ = |--- > | 0, 0__ | @VK_IMAGE_TYPE_1D@ | @VK_IMAGE_VIEW_TYPE_1D@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ = 1 | @layerCount@ = 1 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 1 | |--- > | | @samples@ = 1 | |--- > +---------+------------------------+-----------------------------------+--- > | __1D, | @imageType@ = | @viewType@ = |--- > | 1, 0__ | @VK_IMAGE_TYPE_1D@ | @VK_IMAGE_VIEW_TYPE_1D_ARRAY@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ = 1 | @layerCount@ ≥ 1 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 1 | |--- > | | @samples@ = 1 | |--- > +---------+------------------------+-----------------------------------+--- > | __2D, | @imageType@ = | @viewType@ = |--- > | 0, 0__ | @VK_IMAGE_TYPE_2D@ | @VK_IMAGE_VIEW_TYPE_2D@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ ≥ 1 | @layerCount@ = 1 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 1 | |--- > | | @samples@ = 1 | |--- > +---------+------------------------+-----------------------------------+--- > | __2D, | @imageType@ = | @viewType@ = |--- > | 1, 0__ | @VK_IMAGE_TYPE_2D@ | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ ≥ 1 | @layerCount@ ≥ 1 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 1 | |--- > | | @samples@ = 1 | |--- > +---------+------------------------+-----------------------------------+--- > | __2D, | @imageType@ = | @viewType@ = |--- > | 0, 1__ | @VK_IMAGE_TYPE_2D@ | @VK_IMAGE_VIEW_TYPE_2D@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ ≥ 1 | @layerCount@ = 1 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 1 | |--- > | | @samples@ > 1 | |--- > +---------+------------------------+-----------------------------------+--- > | __2D, | @imageType@ = | @viewType@ = |--- > | 1, 1__ | @VK_IMAGE_TYPE_2D@ | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ ≥ 1 | @layerCount@ ≥ 1 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 1 | |--- > | | @samples@ > 1 | |--- > +---------+------------------------+-----------------------------------+--- > | __CUBE, | @imageType@ = | @viewType@ = |--- > | 0, 0__ | @VK_IMAGE_TYPE_2D@ | @VK_IMAGE_VIEW_TYPE_CUBE@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ = @width@ | @layerCount@ = 6 |--- > | | @depth@ = 1 | |--- > | | @arrayLayers@ ≥ 6 | |--- > | | @samples@ = 1 | |--- > | | @flags@ includes | |--- > | | @VK_IMAGE_CREATE_CUBE_ | |--- > | | COMPATIBLE_BIT@ | |--- > +---------+------------------------+-----------------------------------+--- > | __CUBE, | @imageType@ = | @viewType@ = |--- > | 1, 0__ | @VK_IMAGE_TYPE_2D@ | @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- > | | @height@ = width | @layerCount@ = 6 × /N/, /N/ ≥ 1 |--- > | | @depth@ = 1 | |--- > | | /N/ ≥ 1 | |--- > | | @arrayLayers@ ≥ 6 × | |--- > | | /N/ | |--- > | | @samples@ = 1 | |--- > | | @flags@ includes | |--- > | | @VK_IMAGE_CREATE_CUBE_ | |--- > | | COMPATIBLE_BIT@ | |--- > +---------+------------------------+-----------------------------------+--- > | __3D, | @imageType@ = | @viewType@ = |--- > | 0, 0__ | @VK_IMAGE_TYPE_3D@ | @VK_IMAGE_VIEW_TYPE_3D@ |--- > | | @width@ ≥ 1 | @baseArrayLayer@ = 0 |--- > | | @height@ ≥ 1 | @layerCount@ = 1 |--- > | | @depth@ ≥ 1 | |--- > | | @arrayLayers@ = 1 | |--- > | | @samples@ = 1 | |--- > +---------+------------------------+-----------------------------------+--- >--- > Image and image view parameter compatibility requirements+-- If @image@ was created with the+-- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, @format@ /must/+-- be /compatible/ with the image’s format as described above, or /must/ be+-- an uncompressed format in which case it /must/ be /size-compatible/ with+-- the image’s format, as defined for [copying data between+-- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-images-format-size-compatibility)+-- In this case the resulting image view’s texel dimensions equal the+-- dimensions of the selected mip level divided by the compressed texel+-- block size and rounded up. --+-- If the image view is to be used with a sampler which supports [sampler+-- Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion),+-- an /identically defined object/ of type+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversion'+-- to that used to create the sampler /must/ be passed to+-- 'vkCreateImageView' in a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo'+-- added to the @pNext@ chain of 'VkImageViewCreateInfo'.+--+-- If the image has a+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- @format@ and @subresourceRange.aspectMask@ is+-- @VK_IMAGE_ASPECT_COLOR_BIT@, @format@ /must/ be identical to the image+-- @format@, and the sampler to be used with the image view /must/ enable+-- [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).+--+-- If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ and+-- the image has a+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- @format@, and if @subresourceRange.aspectMask@ is+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@, @format@ /must/ be+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- with the corresponding plane of the image, and the sampler to be used+-- with the image view /must/ not enable [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).+-- The @width@ and @height@ of the single-plane image view /must/ be+-- derived from the multi-planar image’s dimensions in the manner listed+-- for [plane+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- for the plane.+--+-- Any view of an image plane will have the same mapping between texel+-- coordinates and memory locations as used by the channels of the color+-- aspect, subject to the formulae relating texel coordinates to+-- lower-resolution planes as described in [Chroma+-- Reconstruction](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction).+-- That is, if an R or B plane has a reduced resolution relative to the G+-- plane of the multi-planar image, the image view operates using the+-- (/uplane/, /vplane/) unnormalized coordinates of the reduced-resolution+-- plane, and these coordinates access the same memory locations as the+-- (/ucolor/, /vcolor/) unnormalized coordinates of the color aspect for+-- which chroma reconstruction operations operate on the same (/uplane/,+-- /vplane/) or (/iplane/, /jplane/) coordinates.+--+-- +----------+--------------------------------------------------+-----------------------------------++-- | Dim, | Image parameters | View parameters |+-- | Arrayed, | | |+-- | MS | | |+-- +==========+==================================================+===================================++-- | | @imageType@ = ci.@imageType@ | @baseArrayLayer@, @layerCount@, |+-- | | @width@ = ci.@extent.width@ | and @levelCount@ are members of |+-- | | @height@ = ci.@extent.height@ | the @subresourceRange@ member. |+-- | | @depth@ = ci.@extent.depth@ | |+-- | | @arrayLayers@ = ci.@arrayLayers@ | |+-- | | @samples@ = ci.@samples@ | |+-- | | @flags@ = ci.@flags@ | |+-- | | where ci is the | |+-- | | 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' | |+-- | | used to create @image@. | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __1D, 0, | @imageType@ = @VK_IMAGE_TYPE_1D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_1D@ |+-- | | @height@ = 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ = 1 |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __1D, 1, | @imageType@ = @VK_IMAGE_TYPE_1D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_1D_ARRAY@ |+-- | | @height@ = 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ ≥ 1 |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __2D, 0, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D@ |+-- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ = 1 |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __2D, 1, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |+-- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ ≥ 1 |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __2D, 0, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |+-- | 1__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D@ |+-- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ = 1 |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ > 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __2D, 1, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |+-- | 1__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |+-- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ ≥ 1 |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ > 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __CUBE, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |+-- | 0, 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_CUBE@ |+-- | | @height@ = @width@ | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ = 6 |+-- | | @arrayLayers@ ≥ 6 | |+-- | | @samples@ = 1 | |+-- | | @flags@ includes | |+-- | | @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __CUBE, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |+-- | 1, 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ |+-- | | @height@ = width | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ = 1 | @layerCount@ = 6 × /N/, /N/ ≥ 1 |+-- | | /N/ ≥ 1 | |+-- | | @arrayLayers@ ≥ 6 × /N/ | |+-- | | @samples@ = 1 | |+-- | | @flags@ includes | |+-- | | @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __3D, 0, | @imageType@ = @VK_IMAGE_TYPE_3D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_3D@ |+-- | | @height@ ≥ 1 | @baseArrayLayer@ = 0 |+-- | | @depth@ ≥ 1 | @layerCount@ = 1 |+-- | | @arrayLayers@ = 1 | |+-- | | @samples@ = 1 | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __3D, 0, | @imageType@ = @VK_IMAGE_TYPE_3D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D@ |+-- | | @height@ ≥ 1 | @levelCount@ = 1 |+-- | | @depth@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @arrayLayers@ = 1 | @layerCount@ = 1 |+-- | | @samples@ = 1 | |+-- | | @flags@ includes | |+-- | | @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ | |+-- | | @flags@ does not include | |+-- | | @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@, | |+-- | | @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@, and | |+-- | | @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ | |+-- +----------+--------------------------------------------------+-----------------------------------++-- | __3D, 0, | @imageType@ = @VK_IMAGE_TYPE_3D@ | @viewType@ = |+-- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |+-- | | @height@ ≥ 1 | @levelCount@ = 1 |+-- | | @depth@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @arrayLayers@ = 1 | @layerCount@ ≥ 1 |+-- | | @samples@ = 1 | |+-- | | @flags@ includes | |+-- | | @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ | |+-- | | @flags@ does not include | |+-- | | @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@, | |+-- | | @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@, and | |+-- | | @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ | |+-- +----------+--------------------------------------------------+-----------------------------------++--+-- Image and image view parameter compatibility requirements+-- -- == Valid Usage -- -- - If @image@ was not created with -- @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ then @viewType@ /must/ not be -- @VK_IMAGE_VIEW_TYPE_CUBE@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ ----- - If the--- <{html_spec_relative}#features-features-imageCubeArray image cubemap arrays>+-- - If the [image cubemap+-- arrays](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-imageCubeArray) -- feature is not enabled, @viewType@ /must/ not be -- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ --+-- - If @image@ was created with @VK_IMAGE_TYPE_3D@ but without+-- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set then @viewType@ /must/+-- not be @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@+-- -- - If @image@ was created with @VK_IMAGE_TILING_LINEAR@, @format@ -- /must/ be format that has at least one supported feature bit present -- in the value of @VkFormatProperties@::@linearTilingFeatures@@@ -804,33 +898,114 @@ -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was -- created ----- - @subresourceRange.baseArrayLayer@ /must/ be less than the+-- - If @image@ is not a 3D image created with+-- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, or @viewType@ is not+-- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,+-- @subresourceRange@::@baseArrayLayer@ /must/ be less than the -- @arrayLayers@ specified in -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was -- created ----- - If @subresourceRange.layerCount@ is not @VK_REMAINING_ARRAY_LAYERS@,--- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@--- /must/ be less than or equal to the @arrayLayers@ specified in+-- - If @subresourceRange@::@layerCount@ is not+-- @VK_REMAINING_ARRAY_LAYERS@, @image@ is not a 3D image created with+-- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, or @viewType@ is not+-- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,+-- @subresourceRange@::@layerCount@ /must/ be non-zero and+-- @subresourceRange@::@baseArrayLayer@ ++-- @subresourceRange@::@layerCount@ /must/ be less than or equal to the+-- @arrayLayers@ specified in -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was -- created --+-- - If @image@ is a 3D image created with+-- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, and @viewType@ is+-- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,+-- @subresourceRange@::@baseArrayLayer@ /must/ be less than the+-- @extent.depth@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+--+-- - If @subresourceRange@::@layerCount@ is not+-- @VK_REMAINING_ARRAY_LAYERS@, @image@ is a 3D image created with+-- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, and @viewType@ is+-- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,+-- @subresourceRange@::@layerCount@ /must/ be non-zero and+-- @subresourceRange@::@baseArrayLayer@ ++-- @subresourceRange@::@layerCount@ /must/ be less than or equal to the+-- @extent.depth@ specified in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was+-- created+-- -- - If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ -- flag, @format@ /must/ be compatible with the @format@ used to create--- @image@, as defined in--- <{html_spec_relative}#features-formats-compatibility-classes Format Compatibility Classes>+-- @image@, as defined in [Format Compatibility+-- Classes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatibility-classes) --+-- - If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@+-- flag, but without the+-- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, and if the+-- @format@ of the @image@ is not a+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- format, @format@ /must/ be compatible with the @format@ used to+-- create @image@, as defined in [Format Compatibility+-- Classes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatibility-classes)+--+-- - If @image@ was created with the+-- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, @format@+-- /must/ be compatible with, or /must/ be an uncompressed format that+-- is size-compatible with, the @format@ used to create @image@.+--+-- - If @image@ was created with the+-- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, the+-- @levelCount@ and @layerCount@ members of @subresourceRange@ /must/+-- both be @1@.+--+-- - If a @VkImageFormatListCreateInfoKHR@ structure was included in the+-- @pNext@ chain of the @VkImageCreateInfo@ struct used when creating+-- @image@ and the @viewFormatCount@ field of+-- @VkImageFormatListCreateInfoKHR@ is not zero then @format@ /must/ be+-- one of the formats in+-- @VkImageFormatListCreateInfoKHR@::@pViewFormats@.+--+-- - If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@+-- flag, if the @format@ of the @image@ is a+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- format, and if @subresourceRange.aspectMask@ is one of+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@, then @format@ /must/ be compatible+-- with the 'Graphics.Vulkan.Core10.Core.VkFormat' for the plane of the+-- @image@ @format@ indicated by @subresourceRange.aspectMask@, as+-- defined in+-- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)+-- -- - If @image@ was not created with the--- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ flag, @format@ /must/ be--- identical to the @format@ used to create @image@+-- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ flag, or if the @format@ of the+-- @image@ is a+-- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)+-- format and if @subresourceRange.aspectMask@ is+-- @VK_IMAGE_ASPECT_COLOR_BIT@, @format@ /must/ be identical to the+-- @format@ used to create @image@ -- -- - If @image@ is non-sparse then it /must/ be bound completely and -- contiguously to a single @VkDeviceMemory@ object -- -- - @subresourceRange@ and @viewType@ /must/ be compatible with the--- image, as described in the--- <{html_spec_relative}#resources-image-views-compatibility compatibility table>+-- image, as described in the [compatibility+-- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views-compatibility) --+-- - If @image@ has an [external+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats):+--+-- - @format@ must be @VK_FORMAT_UNDEFINED@+--+-- - The @pNext@ chain must contain an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo'+-- with a @conversion@ object created with the same external format+-- as @image@+--+-- - All members of @components@ must be+-- @VK_COMPONENT_SWIZZLE_IDENTITY@+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO@@@ -859,28 +1034,32 @@ -- structure -- -- = See Also--- #_see_also# -- -- 'VkComponentMapping', 'Graphics.Vulkan.Core10.Core.VkFormat', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', -- 'VkImageSubresourceRange', 'VkImageViewCreateFlags', 'VkImageViewType', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateImageView' data VkImageViewCreateInfo = VkImageViewCreateInfo- { -- No documentation found for Nested "VkImageViewCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkImageViewCreateFlags- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkImage"+ , -- | @image@ is a @VkImage@ on which the view will be created. vkImage :: VkImage- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkViewType"+ , -- | @viewType@ is an 'VkImageViewType' value specifying the type of the+ -- image view. vkViewType :: VkImageViewType- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkFormat"+ , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' describing the+ -- format and type used to interpret data elements in the image. vkFormat :: VkFormat- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkComponents"+ , -- | @components@ is a 'VkComponentMapping' specifies a remapping of color+ -- components (or of depth or stencil components after they have been+ -- converted into color components). vkComponents :: VkComponentMapping- , -- No documentation found for Nested "VkImageViewCreateInfo" "vkSubresourceRange"+ , -- | @subresourceRange@ is a 'VkImageSubresourceRange' selecting the set of+ -- mipmap levels and array layers to be accessible to the view. vkSubresourceRange :: VkImageSubresourceRange } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/LayerDiscovery.hs view
@@ -55,7 +55,6 @@ -- global layer properties -- -- = Parameters--- #_parameters# -- -- - @pPropertyCount@ is a pointer to an integer related to the number of -- layer properties available or queried, as described below.@@ -64,7 +63,6 @@ -- 'VkLayerProperties' structures. -- -- = Description--- #_description# -- -- If @pProperties@ is @NULL@, then the number of layer properties -- available is returned in @pPropertyCount@. Otherwise, @pPropertyCount@@@ -96,18 +94,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkLayerProperties' foreign import ccall "vkEnumerateInstanceLayerProperties" vkEnumerateInstanceLayerProperties :: ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult@@ -115,7 +112,6 @@ -- physical device layers -- -- = Parameters--- #_parameters# -- -- - @pPropertyCount@ is a pointer to an integer related to the number of -- layer properties available or queried.@@ -124,7 +120,6 @@ -- 'VkLayerProperties' structures. -- -- = Description--- #_description# -- -- If @pProperties@ is @NULL@, then the number of layer properties -- available is returned in @pPropertyCount@. Otherwise, @pPropertyCount@@@ -155,39 +150,42 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkLayerProperties', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkEnumerateDeviceLayerProperties" vkEnumerateDeviceLayerProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult -- | VkLayerProperties - Structure specifying layer properties ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'vkEnumerateDeviceLayerProperties', 'vkEnumerateInstanceLayerProperties' data VkLayerProperties = VkLayerProperties- { -- No documentation found for Nested "VkLayerProperties" "vkLayerName"+ { -- | @layerName@ is a null-terminated UTF-8 string specifying the name of the+ -- layer. Use this name in the @ppEnabledLayerNames@ array passed in the+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstanceCreateInfo'+ -- structure to enable this layer for an instance. vkLayerName :: Vector VK_MAX_EXTENSION_NAME_SIZE CChar- , -- No documentation found for Nested "VkLayerProperties" "vkSpecVersion"+ , -- | @specVersion@ is the Vulkan version the layer was written to, encoded as+ -- described in the [API Version Numbers and+ -- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)+ -- section. vkSpecVersion :: Word32- , -- No documentation found for Nested "VkLayerProperties" "vkImplementationVersion"+ , -- | @implementationVersion@ is the version of this layer. It is an integer,+ -- increasing with backward compatible changes. vkImplementationVersion :: Word32- , -- No documentation found for Nested "VkLayerProperties" "vkDescription"+ , -- | @description@ is a null-terminated UTF-8 string providing additional+ -- details that /can/ be used by the application to identify the layer. vkDescription :: Vector VK_MAX_DESCRIPTION_SIZE CChar } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/Memory.hs view
@@ -73,13 +73,11 @@ -- | VkMemoryMapFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkMemoryMapFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'vkMapMemory' newtype VkMemoryMapFlags = VkMemoryMapFlags VkFlags@@ -104,11 +102,7 @@ data VkDeviceMemory_T -- | VkDeviceMemory - Opaque handle to a device memory object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo',@@ -130,7 +124,6 @@ -- | vkAllocateMemory - Allocate device memory -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory. --@@ -141,13 +134,14 @@ -- implementation. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pMemory@ is a pointer to a @VkDeviceMemory@ handle in which -- information about the allocated memory is returned. -- -- = Description--- #_description# -- -- Allocations returned by @vkAllocateMemory@ are guaranteed to meet any -- alignment requirement of the implementation. For example, if an@@ -166,7 +160,7 @@ -- 'vkAllocateMemory' would cause the total number of allocations to exceed -- these limits, such a call will fail and /must/ return -- @VK_ERROR_TOO_MANY_OBJECTS@. The--- <{html_spec_relative}#features-limits-maxMemoryAllocationCount maxMemoryAllocationCount>+-- [@maxMemoryAllocationCount@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxMemoryAllocationCount) -- feature describes the number of allocations that /can/ exist -- simultaneously before encountering these internal limits. --@@ -174,7 +168,9 @@ -- allocation. For example, certain systems /may/ fail to create -- allocations with a size greater than or equal to 4GB. Such a limit is -- implementation-dependent, and if such a failure occurs then the error--- @VK_ERROR_OUT_OF_DEVICE_MEMORY@ /must/ be returned.+-- @VK_ERROR_OUT_OF_DEVICE_MEMORY@ /must/ be returned. This limit is+-- advertised in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkPhysicalDeviceMaintenance3Properties'::@maxMemoryAllocationSize@. -- -- == Valid Usage --@@ -208,10 +204,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -221,7 +217,6 @@ -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -230,17 +225,17 @@ -- | vkFreeMemory - Free device memory -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory. -- -- - @memory@ is the @VkDeviceMemory@ object to be freed. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- = Description--- #_description# -- -- Before freeing a memory object, an application /must/ ensure the memory -- object is no longer in use by the device—for example by command buffers@@ -254,8 +249,8 @@ -- the heap from which it was allocated. -- -- How memory objects are bound to Images and Buffers is described in--- detail in the--- <{html_spec_relative}#resources-association Resource Memory Association>+-- detail in the [Resource Memory+-- Association](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-association) -- section. -- -- If a memory object is mapped at the time it is freed, it is implicitly@@ -264,10 +259,10 @@ -- __Note__ -- -- As described--- <{html_spec_relative}#memory-device-unmap-does-not-flush below>, host--- writes are not implicitly flushed when the memory object is unmapped,--- but the implementation /must/ guarantee that writes that have not been--- flushed do not affect any other memory.+-- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-unmap-does-not-flush),+-- host writes are not implicitly flushed when the memory object is+-- unmapped, but the implementation /must/ guarantee that writes that have+-- not been flushed do not affect any other memory. -- -- == Valid Usage --@@ -293,7 +288,6 @@ -- - Host access to @memory@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkDeviceMemory'@@ -301,7 +295,6 @@ -- | vkMapMemory - Map a memory object into application address space -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory. --@@ -321,7 +314,6 @@ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@minMemoryMapAlignment@. -- -- = Description--- #_description# -- -- It is an application error to call @vkMapMemory@ on a memory object that -- is already mapped.@@ -342,8 +334,8 @@ -- range has completed before the host reads from or writes to that range, -- and that any previously submitted command that reads from that range has -- completed before the host writes to that region (see--- <{html_spec_relative}#synchronization-submission-host-writes here> for--- details on fulfilling such a guarantee). If the device memory was+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-host-writes)+-- for details on fulfilling such a guarantee). If the device memory was -- allocated without the @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ set, these -- guarantees /must/ be made for an extended range: the application /must/ -- round down the start of the range to the nearest multiple of@@ -359,7 +351,8 @@ -- -- It is important for the application developer to become meticulously -- familiar with all of the mechanisms described in the chapter on--- <{html_spec_relative}#synchronization Synchronization and Cache Control>+-- [Synchronization and Cache+-- Control](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization) -- as they are crucial to maintaining memory access ordering. -- -- == Valid Usage@@ -377,6 +370,8 @@ -- - @memory@ /must/ have been created with a memory type that reports -- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ --+-- - @memory@ /must/ not have been allocated with multiple instances.+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -396,10 +391,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -407,7 +402,6 @@ -- - @VK_ERROR_MEMORY_MAP_FAILED@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkDeviceMemory', @VkDeviceSize@, 'VkMemoryMapFlags'@@ -415,15 +409,11 @@ -- | vkUnmapMemory - Unmap a previously mapped memory object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory. -- -- - @memory@ is the memory object to be unmapped. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @memory@ /must/ be currently mapped@@ -442,14 +432,12 @@ -- - Host access to @memory@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkDeviceMemory' foreign import ccall "vkUnmapMemory" vkUnmapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO () -- | vkFlushMappedMemoryRanges - Flush mapped memory ranges -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory ranges. --@@ -459,14 +447,13 @@ -- structures describing the memory ranges to flush. -- -- = Description--- #_description# -- -- @vkFlushMappedMemoryRanges@ guarantees that host writes to the memory -- ranges described by @pMemoryRanges@ /can/ be made available to device--- access, via--- <{html_spec_relative}#synchronization-dependencies-available-and-visible availability operations>--- from the @VK_ACCESS_HOST_WRITE_BIT@--- <{html_spec_relative}#synchronization-access-types access type>.+-- access, via [availability+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible)+-- from the @VK_ACCESS_HOST_WRITE_BIT@ [access+-- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types). -- -- Within each range described by @pMemoryRanges@, each set of -- @nonCoherentAtomSize@ bytes in that range is flushed if any byte in that@@ -499,16 +486,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkMappedMemoryRange'@@ -517,7 +503,6 @@ -- objects -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory ranges. --@@ -527,15 +512,14 @@ -- structures describing the memory ranges to invalidate. -- -- = Description--- #_description# -- -- @vkInvalidateMappedMemoryRanges@ guarantees that device writes to the -- memory ranges described by @pMemoryRanges@, which have been made visible--- to the @VK_ACCESS_HOST_WRITE_BIT@ and @VK_ACCESS_HOST_READ_BIT@--- <{html_spec_relative}#synchronization-access-types access types>, are--- made visible to the host. If a range of non-coherent memory is written--- by the host and then invalidated without first being flushed, its--- contents are undefined.+-- to the @VK_ACCESS_HOST_WRITE_BIT@ and @VK_ACCESS_HOST_READ_BIT@ [access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types),+-- are made visible to the host. If a range of non-coherent memory is+-- written by the host and then invalidated without first being flushed,+-- its contents are undefined. -- -- Within each range described by @pMemoryRanges@, each set of -- @nonCoherentAtomSize@ bytes in that range is invalidated if any byte in@@ -559,16 +543,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkMappedMemoryRange'@@ -577,7 +560,6 @@ -- VkDeviceMemory -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory. --@@ -588,7 +570,6 @@ -- success. -- -- = Description--- #_description# -- -- The implementation /may/ update the commitment at any time, and the -- value returned by this query /may/ be out of date.@@ -615,7 +596,6 @@ -- @device@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkDeviceMemory', @VkDeviceSize@@@ -624,12 +604,203 @@ -- allocation -- -- = Description--- #_description# --+-- An instance of the 'VkMemoryAllocateInfo' structure defines a memory+-- import operation if the @pNext@ chain contains an instance of one of the+-- following structures: *+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR'+-- with non-zero @handleType@ value *+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkImportMemoryFdInfoKHR'+-- with a non-zero @handleType@ value *+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkImportMemoryHostPointerInfoEXT'+-- with a non-zero @handleType@ value *+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkImportAndroidHardwareBufferInfoANDROID'+-- with a non-@NULL@ @buffer@ value+--+-- Importing memory /must/ not modify the content of the memory.+-- Implementations /must/ ensure that importing memory does not enable the+-- importing Vulkan instance to access any memory or resources in other+-- Vulkan instances other than that corresponding to the memory object+-- imported. Implementations /must/ also ensure accessing imported memory+-- which has not been initialized does not allow the importing Vulkan+-- instance to obtain data from the exporting Vulkan instance or+-- vice-versa.+--+-- __Note__+--+-- How exported and imported memory is isolated is left to the+-- implementation, but applications should be aware that such isolation+-- /may/ prevent implementations from placing multiple exportable memory+-- objects in the same physical or virtual page. Hence, applications+-- /should/ avoid creating many small external memory objects whenever+-- possible.+--+-- When performing a memory import operation, it is the responsibility of+-- the application to ensure the external handles meet all valid usage+-- requirements. However, implementations /must/ perform sufficient+-- validation of external handles to ensure that the operation results in a+-- valid memory object which will not cause program termination, device+-- loss, queue stalls, or corruption of other resources when used as+-- allowed according to its allocation parameters. If the external handle+-- provided does not meet these requirements, the implementation /must/+-- fail the memory import operation with the error code+-- @VK_ERROR_INVALID_EXTERNAL_HANDLE@.+-- -- == Valid Usage ----- - @allocationSize@ /must/ be greater than @0@+-- - If the @pNext@ chain contains an instance of+-- @VkExportMemoryAllocateInfo@, and any of the handle types specified+-- in @VkExportMemoryAllocateInfo@::@handleTypes@ require a dedicated+-- allocation, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'+-- in+-- @VkExternalImageFormatProperties@::@externalMemoryProperties@::@externalMemoryFeatures@+-- or+-- @VkExternalBufferProperties@::@externalMemoryProperties@::@externalMemoryFeatures@,+-- the @pNext@ chain must contain an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'+-- with either its @image@ or @buffer@ field set to a value other than+-- @VK_NULL_HANDLE@. --+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo',+-- it /must/ not contain an instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkExportMemoryWin32HandleInfoNV'.+--+-- - If the @pNext@ chain contains an instance of+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR',+-- it /must/ not contain an instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkImportMemoryWin32HandleInfoNV'.+--+-- - If the parameters define an import operation, the external handle+-- specified was created by the Vulkan API, and the external handle+-- type is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR@, then the+-- values of @allocationSize@ and @memoryTypeIndex@ /must/ match those+-- specified when the memory object being imported was created.+--+-- - If the parameters define an import operation and the external handle+-- specified was created by the Vulkan API, the device mask specified+-- by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkMemoryAllocateFlagsInfo'+-- /must/ match that specified when the memory object being imported+-- was allocated.+--+-- - If the parameters define an import operation and the external handle+-- specified was created by the Vulkan API, the list of physical+-- devices that comprise the logical device passed to+-- 'vkAllocateMemory' /must/ match the list of physical devices that+-- comprise the logical device on which the memory was originally+-- allocated.+--+-- - If the parameters define an import operation and the external handle+-- is an NT handle or a global share handle created outside of the+-- Vulkan API, the value of @memoryTypeIndex@ /must/ be one of those+-- returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR'.+--+-- - If the parameters define an import operation, the external handle+-- was created by the Vulkan API, and the external handle type is+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR@ or+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR@, then the+-- values of @allocationSize@ and @memoryTypeIndex@ /must/ match those+-- specified when the memory object being imported was created.+--+-- - If the parameters define an import operation and the external handle+-- type is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@, or+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@,+-- @allocationSize@ /must/ match the size reported in the memory+-- requirements of the @image@ or @buffer@ member of the instance of+-- @VkDedicatedAllocationMemoryAllocateInfoNV@ included in the @pNext@+-- chain.+--+-- - If the parameters define an import operation and the external handle+-- type is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@,+-- @allocationSize@ /must/ match the size specified when creating the+-- Direct3D 12 heap from which the external handle was extracted.+--+-- - If the parameters define an import operation and the external handle+-- is a POSIX file descriptor created outside of the Vulkan API, the+-- value of @memoryTypeIndex@ /must/ be one of those returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR'.+--+-- - If the parameters define an import operation and the external handle+-- is a host pointer, the value of @memoryTypeIndex@ /must/ be one of+-- those returned by+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT'+--+-- - If the parameters define an import operation and the external handle+-- is a host pointer, @allocationSize@ /must/ be an integer multiple of+-- @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@::@minImportedHostPointerAlignment@+--+-- - If the parameters define an import operation and the external handle+-- type is+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BIT_ANDROID@:+--+-- - @allocationSize@ /must/ be the size returned by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID'+-- for the Android hardware buffer+--+-- - If the @pNext@ chain doesn’t contain an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- or @VkMemoryDedicatedAllocateInfo@::@image@ is+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the Android+-- hardware buffer /must/ have a format of+-- @AHARDWAREBUFFER_FORMAT_BLOB@ and a usage that includes+-- @AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER@+--+-- - @memoryTypeIndex@ /must/ be one of those returned by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID'+-- for the Android hardware buffer+--+-- - If the parameters do not define an import operation, and the @pNext@+-- chain contains an instance of @VkExportMemoryAllocateInfo@ with+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@+-- included in its @handleTypes@ member, and the @pNext@ contains an+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- with @image@ not equal to+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', then+-- @allocationSize@ /must/ be @0@, otherwise @allocationSize@ /must/ be+-- greater than @0@.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes an+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- with @image@ that is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE':+--+-- - The Android hardware buffer’s usage /must/ include at least one+-- of @AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT@ or+-- @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@+--+-- - The @image@’s format /must/ be @VK_FORMAT_UNDEFINED@ or the+-- format returned by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID'+-- in+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID'::@format@+-- for the Android hardware buffer.+--+-- - The image’s and Android hardware buffer’s width, height, and+-- array layer dimensions /must/ be the same+--+-- - If the Android hardware buffer’s usage includes+-- @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the image must have+-- ⌊log2(max(@width@, @height@))⌋ + 1 mip levels, otherwise it must+-- have exactly @1@ mip level.+--+-- - Each bit set in the image’s usage /must/ be listed in+-- [AHardwareBuffer Usage+-- Equivalence](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage),+-- and if there is a corresponding @AHARDWAREBUFFER_USAGE@ bit+-- listed that bit /must/ be included in the Android hardware+-- buffer’s usage+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO@@@ -654,18 +825,20 @@ -- - Each @sType@ member in the @pNext@ chain /must/ be unique -- -- = See Also--- #_see_also# -- -- @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkAllocateMemory' data VkMemoryAllocateInfo = VkMemoryAllocateInfo- { -- No documentation found for Nested "VkMemoryAllocateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryAllocateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryAllocateInfo" "vkAllocationSize"+ , -- | @allocationSize@ is the size of the allocation in bytes vkAllocationSize :: VkDeviceSize- , -- No documentation found for Nested "VkMemoryAllocateInfo" "vkMemoryTypeIndex"+ , -- | @memoryTypeIndex@ is an index identifying a memory type from the+ -- @memoryTypes@ array of the+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties'+ -- structure vkMemoryTypeIndex :: Word32 } deriving (Eq, Show)@@ -683,9 +856,6 @@ *> poke (ptr `plusPtr` 24) (vkMemoryTypeIndex (poked :: VkMemoryAllocateInfo)) -- | VkMappedMemoryRange - Structure specifying a mapped memory range ----- = Description--- #_description#--- -- == Valid Usage -- -- - @memory@ /must/ be currently mapped@@ -719,21 +889,22 @@ -- - @memory@ /must/ be a valid @VkDeviceMemory@ handle -- -- = See Also--- #_see_also# -- -- 'VkDeviceMemory', @VkDeviceSize@, -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkFlushMappedMemoryRanges', 'vkInvalidateMappedMemoryRanges' data VkMappedMemoryRange = VkMappedMemoryRange- { -- No documentation found for Nested "VkMappedMemoryRange" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMappedMemoryRange" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMappedMemoryRange" "vkMemory"+ , -- | @memory@ is the memory object to which this range belongs. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkMappedMemoryRange" "vkOffset"+ , -- | @offset@ is the zero-based byte offset from the beginning of the memory+ -- object. vkOffset :: VkDeviceSize- , -- No documentation found for Nested "VkMappedMemoryRange" "vkSize"+ , -- | @size@ is either the size of range, or @VK_WHOLE_SIZE@ to affect the+ -- range from @offset@ to the end of the current mapping of the allocation. vkSize :: VkDeviceSize } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/MemoryManagement.hs view
@@ -46,11 +46,7 @@ data VkBuffer_T -- | VkBuffer - Opaque handle to a buffer object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferMemoryBarrier',@@ -87,11 +83,7 @@ data VkImage_T -- | VkImage - Opaque handle to a image object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV',@@ -121,7 +113,6 @@ -- specified Vulkan object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the buffer. --@@ -131,9 +122,6 @@ -- 'VkMemoryRequirements' structure in which the memory requirements of -- the buffer object are returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -147,7 +135,6 @@ -- @device@ -- -- = See Also--- #_see_also# -- -- 'VkBuffer', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkMemoryRequirements'@@ -155,7 +142,6 @@ -- | vkBindBufferMemory - Bind device memory to a buffer object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the buffer and memory. --@@ -170,8 +156,13 @@ -- @memoryOffset@ bytes, will be bound to the specified buffer. -- -- = Description--- #_description# --+-- @vkBindBufferMemory@ is equivalent to passing the same parameters+-- through+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo'+-- to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindBufferMemory2'.+-- -- == Valid Usage -- -- - @buffer@ /must/ not already be backed by a memory object@@ -210,6 +201,30 @@ -- from a call to @vkGetBufferMemoryRequirements@ with @buffer@ /must/ -- be less than or equal to the size of @memory@ minus @memoryOffset@ --+-- - If @buffer@ requires a dedicated allocation(as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for @buffer@), @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@+-- equal to @buffer@+--+-- - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated+-- included an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@+-- was not @VK_NULL_HANDLE@, then @buffer@ /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@,+-- and @memoryOffset@ /must/ be zero.+--+-- - If @buffer@ was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@+-- equal to @VK_TRUE@, @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@buffer@+-- equal to a buffer handle created with identical creation parameters+-- to @buffer@ and @memoryOffset@ /must/ be zero+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -230,16 +245,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkBuffer', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@@@ -248,7 +262,6 @@ -- specified Vulkan object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the image. --@@ -258,9 +271,11 @@ -- 'VkMemoryRequirements' structure in which the memory requirements of -- the image object are returned. ----- = Description--- #_description#+-- == Valid Usage --+-- - @image@ /must/ not have been created with the+-- @VK_IMAGE_CREATE_DISJOINT_BIT@ flag set+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -274,7 +289,6 @@ -- @device@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImage', -- 'VkMemoryRequirements'@@ -282,7 +296,6 @@ -- | vkBindImageMemory - Bind device memory to an image object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the image and memory. --@@ -297,10 +310,17 @@ -- @memoryOffset@ bytes, will be bound to the specified image. -- -- = Description--- #_description# --+-- @vkBindImageMemory@ is equivalent to passing the same parameters through+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo'+-- to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'.+-- -- == Valid Usage --+-- - @image@ /must/ not have been created with the+-- @VK_IMAGE_CREATE_DISJOINT_BIT@ set.+-- -- - @image@ /must/ not already be backed by a memory object -- -- - @image@ /must/ not have been created with any sparse memory binding@@ -321,6 +341,30 @@ -- from a call to @vkGetImageMemoryRequirements@ with @image@ /must/ be -- less than or equal to the size of @memory@ minus @memoryOffset@ --+-- - If @image@ requires a dedicated allocation (as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for @image@), @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- equal to @image@+--+-- - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated+-- included an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- was not @VK_NULL_HANDLE@, then @image@ /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- and @memoryOffset@ /must/ be zero.+--+-- - If @image@ was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@+-- equal to @VK_TRUE@, @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@image@+-- equal to an image handle created with identical creation parameters+-- to @image@ and @memoryOffset@ /must/ be zero+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -341,16 +385,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,@@ -358,21 +401,22 @@ foreign import ccall "vkBindImageMemory" vkBindImageMemory :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult -- | VkMemoryRequirements - Structure specifying memory requirements ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- @VkDeviceSize@, -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkMemoryRequirements2', -- 'vkGetBufferMemoryRequirements', 'vkGetImageMemoryRequirements' data VkMemoryRequirements = VkMemoryRequirements- { -- No documentation found for Nested "VkMemoryRequirements" "vkSize"+ { -- | @size@ is the size, in bytes, of the memory allocation /required/ for+ -- the resource. vkSize :: VkDeviceSize- , -- No documentation found for Nested "VkMemoryRequirements" "vkAlignment"+ , -- | @alignment@ is the alignment, in bytes, of the offset within the+ -- allocation /required/ for the resource. vkAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkMemoryRequirements" "vkMemoryTypeBits"+ , -- | @memoryTypeBits@ is a bitmask and contains one bit set for every+ -- supported memory type for the resource. Bit @i@ is set if and only if+ -- the memory type @i@ in the @VkPhysicalDeviceMemoryProperties@ structure+ -- for the physical device is supported for the resource. vkMemoryTypeBits :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/Pass.hs view
@@ -131,7 +131,6 @@ -- at the beginning of a subpass -- -- = See Also--- #_see_also# -- -- 'VkAttachmentDescription' newtype VkAttachmentLoadOp = VkAttachmentLoadOp Int32@@ -189,7 +188,6 @@ -- at the end of a subpass -- -- = See Also--- #_see_also# -- -- 'VkAttachmentDescription' newtype VkAttachmentStoreOp = VkAttachmentStoreOp Int32@@ -235,7 +233,6 @@ -- command buffer -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutCreateInfoNVX',@@ -276,13 +273,11 @@ -- | VkFramebufferCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkFramebufferCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkFramebufferCreateInfo' newtype VkFramebufferCreateFlags = VkFramebufferCreateFlags VkFlags@@ -308,13 +303,11 @@ -- | VkRenderPassCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkRenderPassCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkRenderPassCreateInfo' newtype VkRenderPassCreateFlags = VkRenderPassCreateFlags VkFlags@@ -341,7 +334,6 @@ -- participate in a memory dependency -- -- = Description--- #_description# -- -- - @VK_ACCESS_INDIRECT_COMMAND_READ_BIT@ specifies read access to an -- indirect command structure read as part of an indirect drawing or@@ -355,57 +347,84 @@ -- vertex buffer as part of a drawing command, bound by -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindVertexBuffers'. ----- - @VK_ACCESS_UNIFORM_READ_BIT@ specifies read access to a--- <{html_spec_relative}#descriptorsets-uniformbuffer uniform buffer>.+-- - @VK_ACCESS_UNIFORM_READ_BIT@ specifies read access to a [uniform+-- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer). -- -- - @VK_ACCESS_INPUT_ATTACHMENT_READ_BIT@ specifies read access to an--- <{html_spec_relative}#renderpass input attachment> within a render--- pass during fragment shading.+-- [input+-- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)+-- within a render pass during fragment shading. ----- - @VK_ACCESS_SHADER_READ_BIT@ specifies read access to a--- <{html_spec_relative}#descriptorsets-storagebuffer storage buffer>,--- <{html_spec_relative}#descriptorsets-uniformtexelbuffer uniform texel buffer>,--- <{html_spec_relative}#descriptorsets-storagetexelbuffer storage texel buffer>,--- <{html_spec_relative}#descriptorsets-sampledimage sampled image>, or--- <{html_spec_relative}#descriptorsets-storageimage storage image>.+-- - @VK_ACCESS_SHADER_READ_BIT@ specifies read access to a [storage+-- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer),+-- [uniform texel+-- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer),+-- [storage texel+-- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer),+-- [sampled+-- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage),+-- or [storage+-- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage). ----- - @VK_ACCESS_SHADER_WRITE_BIT@ specifies write access to a--- <{html_spec_relative}#descriptorsets-storagebuffer storage buffer>,--- <{html_spec_relative}#descriptorsets-storagetexelbuffer storage texel buffer>,--- or <{html_spec_relative}#descriptorsets-storageimage storage image>.+-- - @VK_ACCESS_SHADER_WRITE_BIT@ specifies write access to a [storage+-- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer),+-- [storage texel+-- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer),+-- or [storage+-- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage). -- -- - @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@ specifies read access to a--- <{html_spec_relative}#renderpass color attachment>, such as via--- <{html_spec_relative}#framebuffer-blending blending>,--- <{html_spec_relative}#framebuffer-logicop logic operations>, or via--- certain--- <{html_spec_relative}#renderpass-load-store-ops subpass load operations>.+-- [color+-- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass),+-- such as via+-- [blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blending),+-- [logic+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-logicop),+-- or via certain [subpass load+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops).+-- It does not include [advanced blend+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced). --+-- - @VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT@ is similar to+-- @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@, but also includes [advanced+-- blend+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced).+-- -- - @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@ specifies write access to a--- <{html_spec_relative}#renderpass color or resolve attachment> during--- a <{html_spec_relative}#renderpass render pass> or via certain--- <{html_spec_relative}#renderpass-load-store-ops subpass load and store operations>.+-- [color or resolve+-- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)+-- during a [render+-- pass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)+-- or via certain [subpass load and store+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops). -- -- - @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT@ specifies read access--- to a <{html_spec_relative}#renderpass depth\/stencil attachment>,--- via--- <{html_spec_relative}#fragops-ds-state depth or stencil operations>--- or via certain--- <{html_spec_relative}#renderpass-load-store-ops subpass load operations>.+-- to a [depth\/stencil+-- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass),+-- via [depth or stencil+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-ds-state)+-- or via certain [subpass load+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops). -- -- - @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@ specifies write--- access to a--- <{html_spec_relative}#renderpass depth\/stencil attachment>, via--- <{html_spec_relative}#fragops-ds-state depth or stencil operations>--- or via certain--- <{html_spec_relative}#renderpass-load-store-ops subpass load and store operations>.+-- access to a [depth\/stencil+-- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass),+-- via [depth or stencil+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-ds-state)+-- or via certain [subpass load and store+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops). -- -- - @VK_ACCESS_TRANSFER_READ_BIT@ specifies read access to an image or--- buffer in a <{html_spec_relative}#copies copy> operation.+-- buffer in a+-- [copy](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)+-- operation. -- -- - @VK_ACCESS_TRANSFER_WRITE_BIT@ specifies write access to an image or--- buffer in a <{html_spec_relative}#clears clear> or--- <{html_spec_relative}#copies copy> operation.+-- buffer in a+-- [clear](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears)+-- or+-- [copy](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)+-- operation. -- -- - @VK_ACCESS_HOST_READ_BIT@ specifies read access by a host operation. -- Accesses of this type are not performed through a resource, but@@ -431,10 +450,18 @@ -- destination access mask, makes all available writes visible to all -- future write accesses on entities known to the Vulkan device. --+-- - @VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX@ specifies reads from+-- @VkBuffer@ inputs to+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'.+--+-- - @VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX@ specifies writes to the+-- target command buffer in+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'.+-- -- Certain access types are only performed by a subset of pipeline stages. -- Any synchronization command that takes both stage masks and access masks--- uses both to define the--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scopes>+-- uses both to define the [access+-- scopes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes) -- - only the specified access types performed by the specified stages are -- included in the access scope. An application /must/ not specify an -- access flag in a synchronization command if it does not include a@@ -442,124 +469,100 @@ -- accesses of that type. The following table lists, for each access flag, -- which pipeline stages /can/ perform that type of access. ----- > +-----------------------------------+-----------------------------------+--- > | Access flag | Supported pipeline stages |--- > +===================================+===================================+--- > | @VK_ACCESS_INDIRECT_COMMAND_READ_ | @VK_PIPELINE_STAGE_DRAW_INDIRECT_ |--- > | BIT@ | BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_INDEX_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_INPUT_B |--- > | | IT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_VERTEX_ATTRIBUTE_READ_ | @VK_PIPELINE_STAGE_VERTEX_INPUT_B |--- > | BIT@ | IT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_UNIFORM_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_ |--- > | | BIT@, |--- > | | @VK_PIPELINE_STAGE_TESSELLATION_C |--- > | | ONTROL_SHADER_BIT@, |--- > | | @VK_PIPELINE_STAGE_TESSELLATION_E |--- > | | VALUATION_SHADER_BIT@, |--- > | | @VK_PIPELINE_STAGE_GEOMETRY_SHADE |--- > | | R_BIT@, |--- > | | @VK_PIPELINE_STAGE_FRAGMENT_SHADE |--- > | | R_BIT@, |--- > | | or |--- > | | @VK_PIPELINE_STAGE_COMPUTE_SHADER |--- > | | _BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_INPUT_ATTACHMENT_READ_ | @VK_PIPELINE_STAGE_FRAGMENT_SHADE |--- > | BIT@ | R_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_SHADER_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_ |--- > | | BIT@, |--- > | | @VK_PIPELINE_STAGE_TESSELLATION_C |--- > | | ONTROL_SHADER_BIT@, |--- > | | @VK_PIPELINE_STAGE_TESSELLATION_E |--- > | | VALUATION_SHADER_BIT@, |--- > | | @VK_PIPELINE_STAGE_GEOMETRY_SHADE |--- > | | R_BIT@, |--- > | | @VK_PIPELINE_STAGE_FRAGMENT_SHADE |--- > | | R_BIT@, |--- > | | or |--- > | | @VK_PIPELINE_STAGE_COMPUTE_SHADER |--- > | | _BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_SHADER_WRITE_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_ |--- > | | BIT@, |--- > | | @VK_PIPELINE_STAGE_TESSELLATION_C |--- > | | ONTROL_SHADER_BIT@, |--- > | | @VK_PIPELINE_STAGE_TESSELLATION_E |--- > | | VALUATION_SHADER_BIT@, |--- > | | @VK_PIPELINE_STAGE_GEOMETRY_SHADE |--- > | | R_BIT@, |--- > | | @VK_PIPELINE_STAGE_FRAGMENT_SHADE |--- > | | R_BIT@, |--- > | | or |--- > | | @VK_PIPELINE_STAGE_COMPUTE_SHADER |--- > | | _BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_COLOR_ATTACHMENT_READ_ | @VK_PIPELINE_STAGE_COLOR_ATTACHME |--- > | BIT@ | NT_OUTPUT_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_COLOR_ATTACHMENT_WRITE | @VK_PIPELINE_STAGE_COLOR_ATTACHME |--- > | _BIT@ | NT_OUTPUT_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_DEPTH_STENCIL_ATTACHME | @VK_PIPELINE_STAGE_EARLY_FRAGMENT |--- > | NT_READ_BIT@ | _TESTS_BIT@, |--- > | | or |--- > | | @VK_PIPELINE_STAGE_LATE_FRAGMENT_ |--- > | | TESTS_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_DEPTH_STENCIL_ATTACHME | @VK_PIPELINE_STAGE_EARLY_FRAGMENT |--- > | NT_WRITE_BIT@ | _TESTS_BIT@, |--- > | | or |--- > | | @VK_PIPELINE_STAGE_LATE_FRAGMENT_ |--- > | | TESTS_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_TRANSFER_READ_BIT@ | @VK_PIPELINE_STAGE_TRANSFER_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_TRANSFER_WRITE_BIT@ | @VK_PIPELINE_STAGE_TRANSFER_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_HOST_READ_BIT@ | @VK_PIPELINE_STAGE_HOST_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_HOST_WRITE_BIT@ | @VK_PIPELINE_STAGE_HOST_BIT@ |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_MEMORY_READ_BIT@ | N\/A |--- > +-----------------------------------+-----------------------------------+--- > | @VK_ACCESS_MEMORY_WRITE_BIT@ | N\/A |--- > +-----------------------------------+-----------------------------------+--- >--- > Supported access types+-- +-------------------------------------------------------+---------------------------------------------------------++-- | Access flag | Supported pipeline stages |+-- +=======================================================+=========================================================++-- | @VK_ACCESS_INDIRECT_COMMAND_READ_BIT@ | @VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_INDEX_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_UNIFORM_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@, or |+-- | | @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_INPUT_ATTACHMENT_READ_BIT@ | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_SHADER_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@, or |+-- | | @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_SHADER_WRITE_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@, |+-- | | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@, or |+-- | | @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@ | @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT@ | @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@ | @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT@ | @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@, or |+-- | | @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@ | @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@, or |+-- | | @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_TRANSFER_READ_BIT@ | @VK_PIPELINE_STAGE_TRANSFER_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_TRANSFER_WRITE_BIT@ | @VK_PIPELINE_STAGE_TRANSFER_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_HOST_READ_BIT@ | @VK_PIPELINE_STAGE_HOST_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_HOST_WRITE_BIT@ | @VK_PIPELINE_STAGE_HOST_BIT@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_MEMORY_READ_BIT@ | N\/A |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_MEMORY_WRITE_BIT@ | N\/A |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX@ | @VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX@ |+-- +-------------------------------------------------------+---------------------------------------------------------++-- | @VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX@ | @VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX@ |+-- +-------------------------------------------------------+---------------------------------------------------------+ --+-- Supported access types+-- -- If a memory object does not have the -- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ property, then -- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges' /must/ be -- called in order to guarantee that writes to the memory object from the--- host are made visible to the @VK_ACCESS_HOST_WRITE_BIT@--- <{html_spec_relative}#synchronization-access-types access type>, where--- it /can/ be further made available to the device by--- <{html_spec_relative}#synchronization synchronization commands>.+-- host are made visible to the @VK_ACCESS_HOST_WRITE_BIT@ [access+-- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types),+-- where it /can/ be further made available to the device by+-- [synchronization+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization). -- Similarly, -- 'Graphics.Vulkan.Core10.Memory.vkInvalidateMappedMemoryRanges' /must/ be -- called to guarantee that writes which are visible to the--- @VK_ACCESS_HOST_READ_BIT@--- <{html_spec_relative}#synchronization-access-types access type> are made--- visible to host operations.+-- @VK_ACCESS_HOST_READ_BIT@ [access+-- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types)+-- are made visible to host operations. -- -- If the memory object does have the -- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ property flag, writes to the -- memory object from the host are automatically made visible to the--- @VK_ACCESS_HOST_WRITE_BIT@--- <{html_spec_relative}#synchronization-access-types access type>.--- Similarly, writes made visible to the @VK_ACCESS_HOST_READ_BIT@--- <{html_spec_relative}#synchronization-access-types access type> are--- automatically made visible to the host.+-- @VK_ACCESS_HOST_WRITE_BIT@ [access+-- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types).+-- Similarly, writes made visible to the @VK_ACCESS_HOST_READ_BIT@ [access+-- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types)+-- are automatically made visible to the host. -- -- __Note__ ----- The 'Graphics.Vulkan.Core10.Queue.vkQueueSubmit' command--- <{html_spec_relative}#synchronization-submission-host-writes automatically guarantees that host writes flushed to VK_ACCESS_HOST_WRITE_BIT are made available>+-- The 'Graphics.Vulkan.Core10.Queue.vkQueueSubmit' command [automatically+-- guarantees that host writes flushed to @VK_ACCESS_HOST_WRITE_BIT@ are+-- made+-- available](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-host-writes) -- if they were flushed before the command executed, so in most cases an -- explicit memory barrier is not needed for this case. In the few -- circumstances where a submit does not occur between the host write and@@ -567,7 +570,6 @@ -- explicit memory barrier. -- -- = See Also--- #_see_also# -- -- 'VkAccessFlags' newtype VkAccessFlagBits = VkAccessFlagBits VkFlags@@ -698,16 +700,7 @@ -- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass ----- = Description--- #_description#------ __Note__------ All bits for this type are defined by extensions, and none of those--- extensions are enabled in this build of the specification.--- -- = See Also--- #_see_also# -- -- 'VkSubpassDescriptionFlags' newtype VkSubpassDescriptionFlagBits = VkSubpassDescriptionFlagBits VkFlags@@ -738,7 +731,6 @@ -- properties of an attachment -- -- = See Also--- #_see_also# -- -- 'VkAttachmentDescriptionFlags' newtype VkAttachmentDescriptionFlagBits = VkAttachmentDescriptionFlagBits VkFlags@@ -768,7 +760,6 @@ -- dependencies are formed -- -- = See Also--- #_see_also# -- -- 'VkDependencyFlags' newtype VkDependencyFlagBits = VkDependencyFlagBits VkFlags@@ -795,18 +786,14 @@ ) -- | @VK_DEPENDENCY_BY_REGION_BIT@ specifies that dependencies will be--- <{html_spec_relative}#synchronization-framebuffer-regions framebuffer-local>.+-- [framebuffer-local](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions). pattern VK_DEPENDENCY_BY_REGION_BIT :: VkDependencyFlagBits pattern VK_DEPENDENCY_BY_REGION_BIT = VkDependencyFlagBits 0x00000001 -- | Dummy data to tag the 'Ptr' with data VkFramebuffer_T -- | VkFramebuffer - Opaque handle to a framebuffer object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',@@ -815,7 +802,6 @@ -- | vkCreateFramebuffer - Create a new framebuffer object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the framebuffer. --@@ -823,14 +809,13 @@ -- describes additional information about framebuffer creation. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pFramebuffer@ points to a @VkFramebuffer@ handle in which the -- resulting framebuffer object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -845,16 +830,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkFramebuffer',@@ -863,17 +847,15 @@ -- | vkDestroyFramebuffer - Destroy a framebuffer object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the framebuffer. -- -- - @framebuffer@ is the handle of the framebuffer to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -905,7 +887,6 @@ -- - Host access to @framebuffer@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkFramebuffer'@@ -913,7 +894,6 @@ -- | vkCreateRenderPass - Create a new render pass object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the render pass. --@@ -922,14 +902,13 @@ -- the render pass. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pRenderPass@ points to a @VkRenderPass@ handle in which the -- resulting render pass object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -944,16 +923,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -962,17 +940,15 @@ -- | vkDestroyRenderPass - Destroy a render pass object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the render pass. -- -- - @renderPass@ is the handle of the render pass to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -1004,7 +980,6 @@ -- - Host access to @renderPass@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -1014,7 +989,6 @@ -- area -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the render pass. --@@ -1025,7 +999,6 @@ -- granularity is returned. -- -- = Description--- #_description# -- -- The conditions leading to an optimal @renderArea@ are: --@@ -1049,8 +1022,8 @@ -- -- Subpass dependencies are not affected by the render area, and apply to -- the entire image subresources attached to the framebuffer as specified--- in the description of--- <{html_spec_relative}#renderpass-layout-transitions automatic layout transitions>.+-- in the description of [automatic layout+-- transitions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-layout-transitions). -- Similarly, pipeline barriers are valid even if their effect extends -- outside the render area. --@@ -1066,7 +1039,6 @@ -- @device@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',@@ -1075,7 +1047,6 @@ -- | VkAttachmentDescription - Structure specifying an attachment description -- -- = Description--- #_description# -- -- If the attachment uses a color format, then @loadOp@ and @storeOp@ are -- used, and @stencilLoadOp@ and @stencilStoreOp@ are ignored. If the@@ -1108,6 +1079,12 @@ -- memory contents will not be modified by execution of a render pass -- instance. --+-- The load and store operations apply on the first and last use of each+-- view in the render pass, respectively. If a view index of an attachment+-- is not included in the view mask in any subpass that uses it, then the+-- load and store operations are ignored, and the attachment’s memory+-- contents will not be modified by execution of a render pass instance.+-- -- During a render pass instance, input\/color attachments with color -- formats that have a component size of 8, 16, or 32 bits /must/ be -- represented in the attachment’s format throughout the instance.@@ -1119,10 +1096,10 @@ -- pass. Such components /must/ be converted from the render pass format, -- to the format of the attachment, before they are resolved or stored at -- the end of a render pass instance via @storeOp@. Conversions occur as--- described in--- <{html_spec_relative}#fundamentals-numerics Numeric Representation and Computation>--- and--- <{html_spec_relative}#fundamentals-fixedconv Fixed-Point Data Conversions>.+-- described in [Numeric Representation and+-- Computation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-numerics)+-- and [Fixed-Point Data+-- Conversions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fixedconv). -- -- If @flags@ includes @VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT@, then the -- attachment is treated as if it shares physical memory with another@@ -1164,30 +1141,44 @@ -- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value -- -- = See Also--- #_see_also# -- -- 'VkAttachmentDescriptionFlags', 'VkAttachmentLoadOp', -- 'VkAttachmentStoreOp', 'Graphics.Vulkan.Core10.Core.VkFormat', -- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkRenderPassCreateInfo', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits' data VkAttachmentDescription = VkAttachmentDescription- { -- No documentation found for Nested "VkAttachmentDescription" "vkFlags"+ { -- | @flags@ is a bitmask of 'VkAttachmentDescriptionFlagBits' specifying+ -- additional properties of the attachment. vkFlags :: VkAttachmentDescriptionFlags- , -- No documentation found for Nested "VkAttachmentDescription" "vkFormat"+ , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value specifying+ -- the format of the image that will be used for the attachment. vkFormat :: VkFormat- , -- No documentation found for Nested "VkAttachmentDescription" "vkSamples"+ , -- | @samples@ is the number of samples of the image as defined in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'. vkSamples :: VkSampleCountFlagBits- , -- No documentation found for Nested "VkAttachmentDescription" "vkLoadOp"+ , -- | @loadOp@ is a 'VkAttachmentLoadOp' value specifying how the contents of+ -- color and depth components of the attachment are treated at the+ -- beginning of the subpass where it is first used. vkLoadOp :: VkAttachmentLoadOp- , -- No documentation found for Nested "VkAttachmentDescription" "vkStoreOp"+ , -- | @storeOp@ is a 'VkAttachmentStoreOp' value specifying how the contents+ -- of color and depth components of the attachment are treated at the end+ -- of the subpass where it is last used. vkStoreOp :: VkAttachmentStoreOp- , -- No documentation found for Nested "VkAttachmentDescription" "vkStencilLoadOp"+ , -- | @stencilLoadOp@ is a 'VkAttachmentLoadOp' value specifying how the+ -- contents of stencil components of the attachment are treated at the+ -- beginning of the subpass where it is first used. vkStencilLoadOp :: VkAttachmentLoadOp- , -- No documentation found for Nested "VkAttachmentDescription" "vkStencilStoreOp"+ , -- | @stencilStoreOp@ is a 'VkAttachmentStoreOp' value specifying how the+ -- contents of stencil components of the attachment are treated at the end+ -- of the last subpass where it is used. vkStencilStoreOp :: VkAttachmentStoreOp- , -- No documentation found for Nested "VkAttachmentDescription" "vkInitialLayout"+ , -- | @initialLayout@ is the layout the attachment image subresource will be+ -- in when a render pass instance begins. vkInitialLayout :: VkImageLayout- , -- No documentation found for Nested "VkAttachmentDescription" "vkFinalLayout"+ , -- | @finalLayout@ is the layout the attachment image subresource will be+ -- transitioned to when a render pass instance ends. During a render pass+ -- instance, an attachment /can/ use a different layout in each subpass, if+ -- desired. vkFinalLayout :: VkImageLayout } deriving (Eq, Show)@@ -1215,9 +1206,6 @@ *> poke (ptr `plusPtr` 32) (vkFinalLayout (poked :: VkAttachmentDescription)) -- | VkAttachmentReference - Structure specifying an attachment reference ----- = Description--- #_description#--- -- == Valid Usage -- -- - @layout@ /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or@@ -1229,13 +1217,17 @@ -- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkSubpassDescription' data VkAttachmentReference = VkAttachmentReference- { -- No documentation found for Nested "VkAttachmentReference" "vkAttachment"+ { -- | @attachment@ is the index of the attachment of the render pass, and+ -- corresponds to the index of the corresponding element in the+ -- @pAttachments@ array of the @VkRenderPassCreateInfo@ structure. If any+ -- color or depth\/stencil attachments are @VK_ATTACHMENT_UNUSED@, then no+ -- writes occur for those attachments. vkAttachment :: Word32- , -- No documentation found for Nested "VkAttachmentReference" "vkLayout"+ , -- | @layout@ is a 'Graphics.Vulkan.Core10.Image.VkImageLayout' value+ -- specifying the layout the attachment uses during the subpass. vkLayout :: VkImageLayout } deriving (Eq, Show)@@ -1250,7 +1242,6 @@ -- | VkSubpassDescription - Structure specifying a subpass description -- -- = Description--- #_description# -- -- The contents of an attachment within the render area become undefined at -- the start of a subpass __S__ if all of the following conditions are@@ -1301,9 +1292,10 @@ -- - All attachments in @pColorAttachments@ that are not -- @VK_ATTACHMENT_UNUSED@ /must/ have the same sample count ----- - If @pDepthStencilAttachment@ is not @VK_ATTACHMENT_UNUSED@ and any--- attachments in @pColorAttachments@ are not @VK_ATTACHMENT_UNUSED@,--- they /must/ have the same sample count+-- - All attachments in @pColorAttachments@ that are not+-- @VK_ATTACHMENT_UNUSED@ /must/ have a sample count that is smaller+-- than or equal to the sample count of @pDepthStencilAttachment@ if it+-- is not @VK_ATTACHMENT_UNUSED@ -- -- - If any input attachments are @VK_ATTACHMENT_UNUSED@, then any -- pipelines bound during the subpass /must/ not access those input@@ -1319,6 +1311,10 @@ -- depth\/stencil attachment, then each use /must/ use the same -- @layout@ --+-- - If @flags@ includes+-- @VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX@, it /must/+-- also include @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@.+-- -- == Valid Usage (Implicit) -- -- - @flags@ /must/ be a valid combination of@@ -1348,30 +1344,71 @@ -- @uint32_t@ values -- -- = See Also--- #_see_also# -- -- 'VkAttachmentReference', 'VkPipelineBindPoint', -- 'VkRenderPassCreateInfo', 'VkSubpassDescriptionFlags' data VkSubpassDescription = VkSubpassDescription- { -- No documentation found for Nested "VkSubpassDescription" "vkFlags"+ { -- | @flags@ is a bitmask of 'VkSubpassDescriptionFlagBits' specifying usage+ -- of the subpass. vkFlags :: VkSubpassDescriptionFlags- , -- No documentation found for Nested "VkSubpassDescription" "vkPipelineBindPoint"+ , -- | @pipelineBindPoint@ is a 'VkPipelineBindPoint' value specifying whether+ -- this is a compute or graphics subpass. Currently, only graphics+ -- subpasses are supported. vkPipelineBindPoint :: VkPipelineBindPoint- , -- No documentation found for Nested "VkSubpassDescription" "vkInputAttachmentCount"+ , -- | @inputAttachmentCount@ is the number of input attachments. vkInputAttachmentCount :: Word32- , -- No documentation found for Nested "VkSubpassDescription" "vkPInputAttachments"+ , -- | @pInputAttachments@ is an array of 'VkAttachmentReference' structures+ -- (defined below) that lists which of the render pass’s attachments /can/+ -- be read in the fragment shader stage during the subpass, and what layout+ -- each attachment will be in during the subpass. Each element of the array+ -- corresponds to an input attachment unit number in the shader, i.e. if+ -- the shader declares an input variable+ -- @layout(input_attachment_index=X, set=Y, binding=Z)@ then it uses the+ -- attachment provided in @pInputAttachments@[X]. Input attachments /must/+ -- also be bound to the pipeline with a descriptor set, with the input+ -- attachment descriptor written in the location (set=Y, binding=Z).+ -- Fragment shaders /can/ use subpass input variables to access the+ -- contents of an input attachment at the fragment’s (x, y, layer)+ -- framebuffer coordinates. vkPInputAttachments :: Ptr VkAttachmentReference- , -- No documentation found for Nested "VkSubpassDescription" "vkColorAttachmentCount"+ , -- | @colorAttachmentCount@ is the number of color attachments. vkColorAttachmentCount :: Word32- , -- No documentation found for Nested "VkSubpassDescription" "vkPColorAttachments"+ , -- | @pColorAttachments@ is an array of @colorAttachmentCount@+ -- 'VkAttachmentReference' structures that lists which of the render pass’s+ -- attachments will be used as color attachments in the subpass, and what+ -- layout each attachment will be in during the subpass. Each element of+ -- the array corresponds to a fragment shader output location, i.e. if the+ -- shader declared an output variable @layout(location=X)@ then it uses the+ -- attachment provided in @pColorAttachments@[X]. vkPColorAttachments :: Ptr VkAttachmentReference- , -- No documentation found for Nested "VkSubpassDescription" "vkPResolveAttachments"+ , -- | @pResolveAttachments@ is @NULL@ or an array of @colorAttachmentCount@+ -- 'VkAttachmentReference' structures that lists which of the render pass’s+ -- attachments are resolved to at the end of the subpass, and what layout+ -- each attachment will be in during the multisample resolve operation. If+ -- @pResolveAttachments@ is not @NULL@, each of its elements corresponds to+ -- a color attachment (the element in @pColorAttachments@ at the same+ -- index), and a multisample resolve operation is defined for each+ -- attachment. At the end of each subpass, multisample resolve operations+ -- read the subpass’s color attachments, and resolve the samples for each+ -- pixel to the same pixel location in the corresponding resolve+ -- attachments, unless the resolve attachment index is+ -- @VK_ATTACHMENT_UNUSED@. If the first use of an attachment in a render+ -- pass is as a resolve attachment, then the @loadOp@ is effectively+ -- ignored as the resolve is guaranteed to overwrite all pixels in the+ -- render area. vkPResolveAttachments :: Ptr VkAttachmentReference- , -- No documentation found for Nested "VkSubpassDescription" "vkPDepthStencilAttachment"+ , -- | @pDepthStencilAttachment@ is a pointer to a 'VkAttachmentReference'+ -- specifying which attachment will be used for depth\/stencil data and the+ -- layout it will be in during the subpass. Setting the attachment index to+ -- @VK_ATTACHMENT_UNUSED@ or leaving this pointer as @NULL@ indicates that+ -- no depth\/stencil attachment will be used in the subpass. vkPDepthStencilAttachment :: Ptr VkAttachmentReference- , -- No documentation found for Nested "VkSubpassDescription" "vkPreserveAttachmentCount"+ , -- | @preserveAttachmentCount@ is the number of preserved attachments. vkPreserveAttachmentCount :: Word32- , -- No documentation found for Nested "VkSubpassDescription" "vkPPreserveAttachments"+ , -- | @pPreserveAttachments@ is an array of @preserveAttachmentCount@ render+ -- pass attachment indices describing the attachments that are not used by+ -- a subpass, but whose contents /must/ be preserved throughout the+ -- subpass. vkPPreserveAttachments :: Ptr Word32 } deriving (Eq, Show)@@ -1402,11 +1439,10 @@ -- | VkSubpassDependency - Structure specifying a subpass dependency -- -- = Description--- #_description# -- -- If @srcSubpass@ is equal to @dstSubpass@ then the 'VkSubpassDependency'--- describes a--- <{html_spec_relative}#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependency>,+-- describes a [subpass+-- self-dependency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies), -- and only constrains the pipeline barriers allowed within a subpass -- instance. Otherwise, when a render pass instance which includes a -- subpass dependency is submitted to a queue, it defines a memory@@ -1414,9 +1450,10 @@ -- @dstSubpass@. -- -- If @srcSubpass@ is equal to @VK_SUBPASS_EXTERNAL@, the first--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes commands that occur earlier in--- <{html_spec_relative}#synchronization-submission-order submission order>+-- [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes commands that occur earlier in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order) -- than the -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginRenderPass' used -- to begin the render pass instance. Otherwise, the first set of commands@@ -1424,14 +1461,15 @@ -- identified by @srcSubpass@ and any load, store or multisample resolve -- operations on attachments used in @srcSubpass@. In either case, the -- first synchronization scope is limited to operations on the pipeline--- stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>+-- stages determined by the [source stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks) -- specified by @srcStageMask@. -- -- If @dstSubpass@ is equal to @VK_SUBPASS_EXTERNAL@, the second--- <{html_spec_relative}#synchronization-dependencies-scopes synchronization scope>--- includes commands that occur later in--- <{html_spec_relative}#synchronization-submission-order submission order>+-- [synchronization+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)+-- includes commands that occur later in [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order) -- than the -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdEndRenderPass' used -- to end the render pass instance. Otherwise, the second set of commands@@ -1439,30 +1477,34 @@ -- identified by @dstSubpass@ and any load, store or multisample resolve -- operations on attachments used in @dstSubpass@. In either case, the -- second synchronization scope is limited to operations on the pipeline--- stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>+-- stages determined by the [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks) -- specified by @dstStageMask@. ----- The first--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>--- is limited to access in the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks source stage mask>+-- The first [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)+-- is limited to access in the pipeline stages determined by the [source+-- stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks) -- specified by @srcStageMask@. It is also limited to access types in the--- <{html_spec_relative}#synchronization-access-masks source access mask>+-- [source access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks) -- specified by @srcAccessMask@. ----- The second--- <{html_spec_relative}#synchronization-dependencies-access-scopes access scope>+-- The second [access+-- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes) -- is limited to access in the pipeline stages determined by the--- <{html_spec_relative}#synchronization-pipeline-stages-masks destination stage mask>+-- [destination stage+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks) -- specified by @dstStageMask@. It is also limited to access types in the--- <{html_spec_relative}#synchronization-access-masks destination access mask>+-- [destination access+-- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks) -- specified by @dstAccessMask@. ----- The--- <{html_spec_relative}#synchronization-dependencies-available-and-visible availability and visibility operations>--- defined by a subpass dependency affect the execution of--- <{html_spec_relative}#renderpass-layout-transitions image layout transitions>+-- The [availability and visibility+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible)+-- defined by a subpass dependency affect the execution of [image layout+-- transitions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-layout-transitions) -- within the render pass. -- -- __Note__@@ -1498,24 +1540,24 @@ -- - If @dstSubpass@ is not @VK_SUBPASS_EXTERNAL@, @dstStageMask@ /must/ -- not include @VK_PIPELINE_STAGE_HOST_BIT@ ----- - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader) -- feature is not enabled, @srcStageMask@ /must/ not contain -- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ ----- - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader) -- feature is not enabled, @dstStageMask@ /must/ not contain -- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ ----- - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader) -- feature is not enabled, @srcStageMask@ /must/ not contain -- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or -- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@ ----- - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader) -- feature is not enabled, @dstStageMask@ /must/ not contain -- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or -- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@@@ -1544,24 +1586,37 @@ -- @VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT@ -- -- - If @srcSubpass@ is equal to @dstSubpass@ and not all of the stages--- in @srcStageMask@ and @dstStageMask@ are--- <{html_spec_relative}#synchronization-framebuffer-regions framebuffer-space stages>,--- the--- <{html_spec_relative}#synchronization-pipeline-stages-order logically latest>--- pipeline stage in @srcStageMask@ /must/ be--- <{html_spec_relative}#synchronization-pipeline-stages-order logically earlier>--- than or equal to the--- <{html_spec_relative}#synchronization-pipeline-stages-order logically earliest>+-- in @srcStageMask@ and @dstStageMask@ are [framebuffer-space+-- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions),+-- the [logically+-- latest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)+-- pipeline stage in @srcStageMask@ /must/ be [logically+-- earlier](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)+-- than or equal to the [logically+-- earliest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order) -- pipeline stage in @dstStageMask@ -- -- - Any access flag included in @srcAccessMask@ /must/ be supported by -- one of the pipeline stages in @srcStageMask@, as specified in the--- <{html_spec_relative}#synchronization-access-types-supported table of supported access types>.+-- [table of supported access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported). -- -- - Any access flag included in @dstAccessMask@ /must/ be supported by -- one of the pipeline stages in @dstStageMask@, as specified in the--- <{html_spec_relative}#synchronization-access-types-supported table of supported access types>.+-- [table of supported access+-- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported). --+-- - If @dependencyFlags@ includes @VK_DEPENDENCY_VIEW_LOCAL_BIT@, then+-- both @srcSubpass@ and @dstSubpass@ /must/ not equal+-- @VK_SUBPASS_EXTERNAL@+--+-- - If @dependencyFlags@ includes @VK_DEPENDENCY_VIEW_LOCAL_BIT@, then+-- the render pass /must/ have multiview enabled+--+-- - If @srcSubpass@ equals @dstSubpass@ and that subpass has more than+-- one bit set in the view mask, then @dependencyFlags@ /must/ include+-- @VK_DEPENDENCY_VIEW_LOCAL_BIT@+-- -- == Valid Usage (Implicit) -- -- - @srcStageMask@ /must/ be a valid combination of@@ -1584,25 +1639,36 @@ -- 'VkDependencyFlagBits' values -- -- = See Also--- #_see_also# -- -- 'VkAccessFlags', 'VkDependencyFlags', -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags', -- 'VkRenderPassCreateInfo' data VkSubpassDependency = VkSubpassDependency- { -- No documentation found for Nested "VkSubpassDependency" "vkSrcSubpass"+ { -- | @srcSubpass@ is the subpass index of the first subpass in the+ -- dependency, or @VK_SUBPASS_EXTERNAL@. vkSrcSubpass :: Word32- , -- No documentation found for Nested "VkSubpassDependency" "vkDstSubpass"+ , -- | @dstSubpass@ is the subpass index of the second subpass in the+ -- dependency, or @VK_SUBPASS_EXTERNAL@. vkDstSubpass :: Word32- , -- No documentation found for Nested "VkSubpassDependency" "vkSrcStageMask"+ , -- | @srcStageMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying the+ -- [source stage+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks). vkSrcStageMask :: VkPipelineStageFlags- , -- No documentation found for Nested "VkSubpassDependency" "vkDstStageMask"+ , -- | @dstStageMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying the+ -- [destination stage+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks) vkDstStageMask :: VkPipelineStageFlags- , -- No documentation found for Nested "VkSubpassDependency" "vkSrcAccessMask"+ , -- | @srcAccessMask@ is a bitmask of 'VkAccessFlagBits' specifying a [source+ -- access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks). vkSrcAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkSubpassDependency" "vkDstAccessMask"+ , -- | @dstAccessMask@ is a bitmask of 'VkAccessFlagBits' specifying a+ -- [destination access+ -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks). vkDstAccessMask :: VkAccessFlags- , -- No documentation found for Nested "VkSubpassDependency" "vkDependencyFlags"+ , -- | @dependencyFlags@ is a bitmask of 'VkDependencyFlagBits'. vkDependencyFlags :: VkDependencyFlags } deriving (Eq, Show)@@ -1627,9 +1693,6 @@ -- | VkRenderPassCreateInfo - Structure specifying parameters of a newly -- created render pass ----- = Description--- #_description#--- -- == Valid Usage -- -- - If any two subpasses operate on attachments with overlapping ranges@@ -1662,18 +1725,28 @@ -- @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ or -- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@. --+-- - For any member of @pAttachments@ with a @loadOp@ equal to+-- @VK_ATTACHMENT_LOAD_OP_CLEAR@, the first use of that attachment+-- /must/ not specify a @layout@ equal to+-- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@.+--+-- - For any member of @pAttachments@ with a @stencilLoadOp@ equal to+-- @VK_ATTACHMENT_LOAD_OP_CLEAR@, the first use of that attachment+-- /must/ not specify a @layout@ equal to+-- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@.+-- -- - For any element of @pDependencies@, if the @srcSubpass@ is not -- @VK_SUBPASS_EXTERNAL@, all stage flags included in the -- @srcStageMask@ member of that dependency /must/ be a pipeline stage -- supported by the--- <{html_spec_relative}#synchronization-pipeline-stages-types pipeline>+-- [pipeline](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) -- identified by the @pipelineBindPoint@ member of the source subpass. -- -- - For any element of @pDependencies@, if the @dstSubpass@ is not -- @VK_SUBPASS_EXTERNAL@, all stage flags included in the -- @dstStageMask@ member of that dependency /must/ be a pipeline stage -- supported by the--- <{html_spec_relative}#synchronization-pipeline-stages-types pipeline>+-- [pipeline](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) -- identified by the @pipelineBindPoint@ member of the source subpass. -- -- == Valid Usage (Implicit)@@ -1705,29 +1778,39 @@ -- - @subpassCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkAttachmentDescription', 'VkRenderPassCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSubpassDependency', -- 'VkSubpassDescription', 'vkCreateRenderPass' data VkRenderPassCreateInfo = VkRenderPassCreateInfo- { -- No documentation found for Nested "VkRenderPassCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkRenderPassCreateFlags- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkAttachmentCount"+ , -- | @attachmentCount@ is the number of attachments used by this render pass,+ -- or zero indicating no attachments. Attachments are referred to by+ -- zero-based indices in the range [0,@attachmentCount@). vkAttachmentCount :: Word32- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkPAttachments"+ , -- | @pAttachments@ points to an array of @attachmentCount@ number of+ -- 'VkAttachmentDescription' structures describing properties of the+ -- attachments, or @NULL@ if @attachmentCount@ is zero. vkPAttachments :: Ptr VkAttachmentDescription- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkSubpassCount"+ , -- | @subpassCount@ is the number of subpasses to create for this render+ -- pass. Subpasses are referred to by zero-based indices in the range+ -- [0,@subpassCount@). A render pass /must/ have at least one subpass. vkSubpassCount :: Word32- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkPSubpasses"+ , -- | @pSubpasses@ points to an array of @subpassCount@ number of+ -- 'VkSubpassDescription' structures describing properties of the+ -- subpasses. vkPSubpasses :: Ptr VkSubpassDescription- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkDependencyCount"+ , -- | @dependencyCount@ is the number of dependencies between pairs of+ -- subpasses, or zero indicating no dependencies. vkDependencyCount :: Word32- , -- No documentation found for Nested "VkRenderPassCreateInfo" "vkPDependencies"+ , -- | @pDependencies@ points to an array of @dependencyCount@ number of+ -- 'VkSubpassDependency' structures describing dependencies between pairs+ -- of subpasses, or @NULL@ if @dependencyCount@ is zero. vkPDependencies :: Ptr VkSubpassDependency } deriving (Eq, Show)@@ -1757,19 +1840,30 @@ -- created framebuffer -- -- = Description--- #_description# -- -- Applications /must/ ensure that all accesses to memory that backs image -- subresources used as attachments in a given renderpass instance either--- happen-before the--- <{html_spec_relative}#renderpass-load-store-ops load operations> for--- those attachments, or happen-after the--- <{html_spec_relative}#renderpass-load-store-ops store operations> for--- those attachments.+-- happen-before the [load+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)+-- for those attachments, or happen-after the [store+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)+-- for those attachments. --+-- For depth\/stencil attachments, each aspect /can/ be used separately as+-- attachments and non-attachments as long as the non-attachment accesses+-- are also via an image subresource in either the+-- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ layout or+-- the @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ layout,+-- and the attachment resource uses whichever of those two layouts the+-- image accesses do not. Use of non-attachment aspects in this case is+-- only well defined if the attachment is used in the subpass where the+-- non-attachment access is being made, or the layout of the image+-- subresource is constant throughout the entire render pass instance,+-- including the @initialLayout@ and @finalLayout@.+-- -- __Note__ ----- This restriction means that the render pass has full knowledge of all+-- These restrictions mean that the render pass has full knowledge of all -- uses of all of the attachments, so that the implementation is able to -- make correct decisions about when and how to perform layout transitions, -- when to overlap execution of subpasses, etc.@@ -1837,6 +1931,9 @@ -- - @layers@ /must/ be less than or equal to -- @VkPhysicalDeviceLimits@::@maxFramebufferLayers@ --+-- - Each element of @pAttachments@ that is a 2D or 2D array image view+-- taken from a 3D image /must/ not be a depth\/stencil format+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO@@@ -1855,30 +1952,36 @@ -- the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'VkFramebufferCreateFlags', -- 'Graphics.Vulkan.Core10.ImageView.VkImageView', -- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateFramebuffer' data VkFramebufferCreateInfo = VkFramebufferCreateInfo- { -- No documentation found for Nested "VkFramebufferCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkFramebufferCreateFlags- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkRenderPass"+ , -- | @renderPass@ is a render pass that defines what render passes the+ -- framebuffer will be compatible with. See [Render Pass+ -- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+ -- for details. vkRenderPass :: VkRenderPass- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkAttachmentCount"+ , -- | @attachmentCount@ is the number of attachments. vkAttachmentCount :: Word32- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkPAttachments"+ , -- | @pAttachments@ is an array of @VkImageView@ handles, each of which will+ -- be used as the corresponding attachment in a render pass instance. vkPAttachments :: Ptr VkImageView- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkWidth"+ , -- | @width@, @height@ and @layers@ define the dimensions of the framebuffer.+ -- If the render pass uses multiview, then @layers@ /must/ be one and each+ -- attachment requires a number of layers that is greater than the maximum+ -- bit index set in the view mask in the subpasses in which it is used. vkWidth :: Word32- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkHeight"+ , -- No documentation found for Nested "VkFramebufferCreateInfo" "height" vkHeight :: Word32- , -- No documentation found for Nested "VkFramebufferCreateInfo" "vkLayers"+ , -- No documentation found for Nested "VkFramebufferCreateInfo" "layers" vkLayers :: Word32 } deriving (Eq, Show)@@ -1907,13 +2010,11 @@ -- | VkAccessFlags - Bitmask of VkAccessFlagBits -- -- = Description--- #_description# -- -- @VkAccessFlags@ is a bitmask type for setting a mask of zero or more -- 'VkAccessFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkAccessFlagBits', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferMemoryBarrier',@@ -1924,13 +2025,11 @@ -- | VkSubpassDescriptionFlags - Bitmask of VkSubpassDescriptionFlagBits -- -- = Description--- #_description# -- -- @VkSubpassDescriptionFlags@ is a bitmask type for setting a mask of zero -- or more 'VkSubpassDescriptionFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkSubpassDescription', 'VkSubpassDescriptionFlagBits' type VkSubpassDescriptionFlags = VkSubpassDescriptionFlagBits@@ -1938,26 +2037,22 @@ -- VkAttachmentDescriptionFlagBits -- -- = Description--- #_description# -- -- @VkAttachmentDescriptionFlags@ is a bitmask type for setting a mask of -- zero or more 'VkAttachmentDescriptionFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkAttachmentDescription', 'VkAttachmentDescriptionFlagBits' type VkAttachmentDescriptionFlags = VkAttachmentDescriptionFlagBits -- | VkDependencyFlags - Bitmask of VkDependencyFlagBits -- -- = Description--- #_description# -- -- @VkDependencyFlags@ is a bitmask type for setting a mask of zero or more -- 'VkDependencyFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkDependencyFlagBits', 'VkSubpassDependency', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPipelineBarrier'
src/Graphics/Vulkan/Core10/Pipeline.hs view
@@ -239,3956 +239,4149 @@ -- | VkBlendFactor - Framebuffer blending factors -- -- = Description--- #_description#------ The semantics of each enum value is described in the table below:------ > +-----------------------------------------+-------------------+--------+--- > | VkBlendFactor | RGB Blend Factors | Alpha |--- > | | (Sr,Sg,Sb) or | Blend |--- > | | (Dr,Dg,Db) | Factor |--- > | | | (Sa or |--- > | | | Da) |--- > +=========================================+===================+========+--- > | @VK_BLEND_FACTOR_ZERO@ | (0,0,0) | 0 |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE@ | (1,1,1) | 1 |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_SRC_COLOR@ | (Rs0,Gs0,Bs0) | As0 |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR@ | (1-Rs0,1-Gs0,1-Bs | 1-As0 |--- > | | 0) | |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_DST_COLOR@ | (Rd,Gd,Bd) | Ad |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR@ | (1-Rd,1-Gd,1-Bd) | 1-Ad |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_SRC_ALPHA@ | (As0,As0,As0) | As0 |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA@ | (1-As0,1-As0,1-As | 1-As0 |--- > | | 0) | |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_DST_ALPHA@ | (Ad,Ad,Ad) | Ad |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA@ | (1-Ad,1-Ad,1-Ad) | 1-Ad |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_CONSTANT_COLOR@ | (Rc,Gc,Bc) | Ac |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COL | (1-Rc,1-Gc,1-Bc) | 1-Ac |--- > | OR@ | | |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_CONSTANT_ALPHA@ | (Ac,Ac,Ac) | Ac |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALP | (1-Ac,1-Ac,1-Ac) | 1-Ac |--- > | HA@ | | |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_SRC_ALPHA_SATURATE@ | (f,f,f); f = | 1 |--- > | | min(As0,1-Ad) | |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_SRC1_COLOR@ | (Rs1,Gs1,Bs1) | As1 |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@ | (1-Rs1,1-Gs1,1-Bs | 1-As1 |--- > | | 1) | |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_SRC1_ALPHA@ | (As1,As1,As1) | As1 |--- > +-----------------------------------------+-------------------+--------+--- > | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ | (1-As1,1-As1,1-As | 1-As1 |--- > | | 1) | |--- > +-----------------------------------------+-------------------+--------+--- >--- > Blend Factors------ In this table, the following conventions are used:------ - Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A--- components, respectively, for the fragment output location--- corresponding to the color attachment being blended.------ - Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A--- components, respectively, used in dual source blending modes, for--- the fragment output location corresponding to the color attachment--- being blended.------ - Rd,Gd,Bd and Ad represent the R, G, B, and A components of the--- destination color. That is, the color currently in the corresponding--- color attachment for this fragment\/sample.------ - Rc,Gc,Bc and Ac represent the blend constant R, G, B, and A--- components, respectively.------ = See Also--- #_see_also#------ 'VkPipelineColorBlendAttachmentState'-newtype VkBlendFactor = VkBlendFactor Int32- deriving (Eq, Ord, Storable)--instance Show VkBlendFactor where- showsPrec _ VK_BLEND_FACTOR_ZERO = showString "VK_BLEND_FACTOR_ZERO"- showsPrec _ VK_BLEND_FACTOR_ONE = showString "VK_BLEND_FACTOR_ONE"- showsPrec _ VK_BLEND_FACTOR_SRC_COLOR = showString "VK_BLEND_FACTOR_SRC_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"- showsPrec _ VK_BLEND_FACTOR_DST_COLOR = showString "VK_BLEND_FACTOR_DST_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"- showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA = showString "VK_BLEND_FACTOR_SRC_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"- showsPrec _ VK_BLEND_FACTOR_DST_ALPHA = showString "VK_BLEND_FACTOR_DST_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"- showsPrec _ VK_BLEND_FACTOR_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_CONSTANT_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"- showsPrec _ VK_BLEND_FACTOR_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_CONSTANT_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"- showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = showString "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"- showsPrec _ VK_BLEND_FACTOR_SRC1_COLOR = showString "VK_BLEND_FACTOR_SRC1_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"- showsPrec _ VK_BLEND_FACTOR_SRC1_ALPHA = showString "VK_BLEND_FACTOR_SRC1_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"- showsPrec p (VkBlendFactor x) = showParen (p >= 11) (showString "VkBlendFactor " . showsPrec 11 x)--instance Read VkBlendFactor where- readPrec = parens ( choose [ ("VK_BLEND_FACTOR_ZERO", pure VK_BLEND_FACTOR_ZERO)- , ("VK_BLEND_FACTOR_ONE", pure VK_BLEND_FACTOR_ONE)- , ("VK_BLEND_FACTOR_SRC_COLOR", pure VK_BLEND_FACTOR_SRC_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR)- , ("VK_BLEND_FACTOR_DST_COLOR", pure VK_BLEND_FACTOR_DST_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR)- , ("VK_BLEND_FACTOR_SRC_ALPHA", pure VK_BLEND_FACTOR_SRC_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA)- , ("VK_BLEND_FACTOR_DST_ALPHA", pure VK_BLEND_FACTOR_DST_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA)- , ("VK_BLEND_FACTOR_CONSTANT_COLOR", pure VK_BLEND_FACTOR_CONSTANT_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR)- , ("VK_BLEND_FACTOR_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_CONSTANT_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA)- , ("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE", pure VK_BLEND_FACTOR_SRC_ALPHA_SATURATE)- , ("VK_BLEND_FACTOR_SRC1_COLOR", pure VK_BLEND_FACTOR_SRC1_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR)- , ("VK_BLEND_FACTOR_SRC1_ALPHA", pure VK_BLEND_FACTOR_SRC1_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)- ] +++- prec 10 (do- expectP (Ident "VkBlendFactor")- v <- step readPrec- pure (VkBlendFactor v)- )- )---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ZERO"-pattern VK_BLEND_FACTOR_ZERO :: VkBlendFactor-pattern VK_BLEND_FACTOR_ZERO = VkBlendFactor 0---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE"-pattern VK_BLEND_FACTOR_ONE :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE = VkBlendFactor 1---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_COLOR"-pattern VK_BLEND_FACTOR_SRC_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC_COLOR = VkBlendFactor 2---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = VkBlendFactor 3---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_COLOR"-pattern VK_BLEND_FACTOR_DST_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_DST_COLOR = VkBlendFactor 4---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = VkBlendFactor 5---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA"-pattern VK_BLEND_FACTOR_SRC_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC_ALPHA = VkBlendFactor 6---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = VkBlendFactor 7---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_ALPHA"-pattern VK_BLEND_FACTOR_DST_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_DST_ALPHA = VkBlendFactor 8---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = VkBlendFactor 9---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_COLOR"-pattern VK_BLEND_FACTOR_CONSTANT_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_CONSTANT_COLOR = VkBlendFactor 10---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = VkBlendFactor 11---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_ALPHA"-pattern VK_BLEND_FACTOR_CONSTANT_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_CONSTANT_ALPHA = VkBlendFactor 12---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = VkBlendFactor 13---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"-pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = VkBlendFactor 14---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_COLOR"-pattern VK_BLEND_FACTOR_SRC1_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC1_COLOR = VkBlendFactor 15---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = VkBlendFactor 16---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_ALPHA"-pattern VK_BLEND_FACTOR_SRC1_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC1_ALPHA = VkBlendFactor 17---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = VkBlendFactor 18--- ** VkBlendOp---- | VkBlendOp - Framebuffer blending operations------ = Description--- #_description#------ The semantics of each basic blend operations is described in the table--- below:------ > +-------------------------------+--------------------+----------------+--- > | VkBlendOp | RGB Components | Alpha |--- > | | | Component |--- > +===============================+====================+================+--- > | @VK_BLEND_OP_ADD@ | R = Rs0 × Sr + Rd | A = As0 × Sa + |--- > | | × Dr | Ad × Da |--- > | | G = Gs0 × Sg + Gd | |--- > | | × Dg | |--- > | | B = Bs0 × Sb + Bd | |--- > | | × Db | |--- > +-------------------------------+--------------------+----------------+--- > | @VK_BLEND_OP_SUBTRACT@ | R = Rs0 × Sr - Rd | A = As0 × Sa - |--- > | | × Dr | Ad × Da |--- > | | G = Gs0 × Sg - Gd | |--- > | | × Dg | |--- > | | B = Bs0 × Sb - Bd | |--- > | | × Db | |--- > +-------------------------------+--------------------+----------------+--- > | @VK_BLEND_OP_REVERSE_SUBTRACT | R = Rd × Dr - Rs0 | A = Ad × Da - |--- > | @ | × Sr | As0 × Sa |--- > | | G = Gd × Dg - Gs0 | |--- > | | × Sg | |--- > | | B = Bd × Db - Bs0 | |--- > | | × Sb | |--- > +-------------------------------+--------------------+----------------+--- > | @VK_BLEND_OP_MIN@ | R = min(Rs0,Rd) | A = |--- > | | G = min(Gs0,Gd) | min(As0,Ad) |--- > | | B = min(Bs0,Bd) | |--- > +-------------------------------+--------------------+----------------+--- > | @VK_BLEND_OP_MAX@ | R = max(Rs0,Rd) | A = |--- > | | G = max(Gs0,Gd) | max(As0,Ad) |--- > | | B = max(Bs0,Bd) | |--- > +-------------------------------+--------------------+----------------+--- >--- > Basic Blend Operations------ In this table, the following conventions are used:------ - Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and--- A components, respectively.------ - Rd, Gd, Bd and Ad represent the R, G, B, and A components of the--- destination color. That is, the color currently in the corresponding--- color attachment for this fragment\/sample.------ - Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A--- components, respectively.------ - Dr, Dg, Db and Da represent the destination blend factor R, G, B,--- and A components, respectively.------ The blending operation produces a new set of values R, G, B and A, which--- are written to the framebuffer attachment. If blending is not enabled--- for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and--- As0, respectively.------ If the color attachment is fixed-point, the components of the source and--- destination values and blend factors are each clamped to [0,1] or [-1,1]--- respectively for an unsigned normalized or signed normalized color--- attachment prior to evaluating the blend operations. If the color--- attachment is floating-point, no clamping occurs.------ = See Also--- #_see_also#------ 'VkPipelineColorBlendAttachmentState'-newtype VkBlendOp = VkBlendOp Int32- deriving (Eq, Ord, Storable)--instance Show VkBlendOp where- showsPrec _ VK_BLEND_OP_ADD = showString "VK_BLEND_OP_ADD"- showsPrec _ VK_BLEND_OP_SUBTRACT = showString "VK_BLEND_OP_SUBTRACT"- showsPrec _ VK_BLEND_OP_REVERSE_SUBTRACT = showString "VK_BLEND_OP_REVERSE_SUBTRACT"- showsPrec _ VK_BLEND_OP_MIN = showString "VK_BLEND_OP_MIN"- showsPrec _ VK_BLEND_OP_MAX = showString "VK_BLEND_OP_MAX"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkBlendOp 1000148000) = showString "VK_BLEND_OP_ZERO_EXT"- showsPrec _ (VkBlendOp 1000148001) = showString "VK_BLEND_OP_SRC_EXT"- showsPrec _ (VkBlendOp 1000148002) = showString "VK_BLEND_OP_DST_EXT"- showsPrec _ (VkBlendOp 1000148003) = showString "VK_BLEND_OP_SRC_OVER_EXT"- showsPrec _ (VkBlendOp 1000148004) = showString "VK_BLEND_OP_DST_OVER_EXT"- showsPrec _ (VkBlendOp 1000148005) = showString "VK_BLEND_OP_SRC_IN_EXT"- showsPrec _ (VkBlendOp 1000148006) = showString "VK_BLEND_OP_DST_IN_EXT"- showsPrec _ (VkBlendOp 1000148007) = showString "VK_BLEND_OP_SRC_OUT_EXT"- showsPrec _ (VkBlendOp 1000148008) = showString "VK_BLEND_OP_DST_OUT_EXT"- showsPrec _ (VkBlendOp 1000148009) = showString "VK_BLEND_OP_SRC_ATOP_EXT"- showsPrec _ (VkBlendOp 1000148010) = showString "VK_BLEND_OP_DST_ATOP_EXT"- showsPrec _ (VkBlendOp 1000148011) = showString "VK_BLEND_OP_XOR_EXT"- showsPrec _ (VkBlendOp 1000148012) = showString "VK_BLEND_OP_MULTIPLY_EXT"- showsPrec _ (VkBlendOp 1000148013) = showString "VK_BLEND_OP_SCREEN_EXT"- showsPrec _ (VkBlendOp 1000148014) = showString "VK_BLEND_OP_OVERLAY_EXT"- showsPrec _ (VkBlendOp 1000148015) = showString "VK_BLEND_OP_DARKEN_EXT"- showsPrec _ (VkBlendOp 1000148016) = showString "VK_BLEND_OP_LIGHTEN_EXT"- showsPrec _ (VkBlendOp 1000148017) = showString "VK_BLEND_OP_COLORDODGE_EXT"- showsPrec _ (VkBlendOp 1000148018) = showString "VK_BLEND_OP_COLORBURN_EXT"- showsPrec _ (VkBlendOp 1000148019) = showString "VK_BLEND_OP_HARDLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148020) = showString "VK_BLEND_OP_SOFTLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148021) = showString "VK_BLEND_OP_DIFFERENCE_EXT"- showsPrec _ (VkBlendOp 1000148022) = showString "VK_BLEND_OP_EXCLUSION_EXT"- showsPrec _ (VkBlendOp 1000148023) = showString "VK_BLEND_OP_INVERT_EXT"- showsPrec _ (VkBlendOp 1000148024) = showString "VK_BLEND_OP_INVERT_RGB_EXT"- showsPrec _ (VkBlendOp 1000148025) = showString "VK_BLEND_OP_LINEARDODGE_EXT"- showsPrec _ (VkBlendOp 1000148026) = showString "VK_BLEND_OP_LINEARBURN_EXT"- showsPrec _ (VkBlendOp 1000148027) = showString "VK_BLEND_OP_VIVIDLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148028) = showString "VK_BLEND_OP_LINEARLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148029) = showString "VK_BLEND_OP_PINLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148030) = showString "VK_BLEND_OP_HARDMIX_EXT"- showsPrec _ (VkBlendOp 1000148031) = showString "VK_BLEND_OP_HSL_HUE_EXT"- showsPrec _ (VkBlendOp 1000148032) = showString "VK_BLEND_OP_HSL_SATURATION_EXT"- showsPrec _ (VkBlendOp 1000148033) = showString "VK_BLEND_OP_HSL_COLOR_EXT"- showsPrec _ (VkBlendOp 1000148034) = showString "VK_BLEND_OP_HSL_LUMINOSITY_EXT"- showsPrec _ (VkBlendOp 1000148035) = showString "VK_BLEND_OP_PLUS_EXT"- showsPrec _ (VkBlendOp 1000148036) = showString "VK_BLEND_OP_PLUS_CLAMPED_EXT"- showsPrec _ (VkBlendOp 1000148037) = showString "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"- showsPrec _ (VkBlendOp 1000148038) = showString "VK_BLEND_OP_PLUS_DARKER_EXT"- showsPrec _ (VkBlendOp 1000148039) = showString "VK_BLEND_OP_MINUS_EXT"- showsPrec _ (VkBlendOp 1000148040) = showString "VK_BLEND_OP_MINUS_CLAMPED_EXT"- showsPrec _ (VkBlendOp 1000148041) = showString "VK_BLEND_OP_CONTRAST_EXT"- showsPrec _ (VkBlendOp 1000148042) = showString "VK_BLEND_OP_INVERT_OVG_EXT"- showsPrec _ (VkBlendOp 1000148043) = showString "VK_BLEND_OP_RED_EXT"- showsPrec _ (VkBlendOp 1000148044) = showString "VK_BLEND_OP_GREEN_EXT"- showsPrec _ (VkBlendOp 1000148045) = showString "VK_BLEND_OP_BLUE_EXT"- showsPrec p (VkBlendOp x) = showParen (p >= 11) (showString "VkBlendOp " . showsPrec 11 x)--instance Read VkBlendOp where- readPrec = parens ( choose [ ("VK_BLEND_OP_ADD", pure VK_BLEND_OP_ADD)- , ("VK_BLEND_OP_SUBTRACT", pure VK_BLEND_OP_SUBTRACT)- , ("VK_BLEND_OP_REVERSE_SUBTRACT", pure VK_BLEND_OP_REVERSE_SUBTRACT)- , ("VK_BLEND_OP_MIN", pure VK_BLEND_OP_MIN)- , ("VK_BLEND_OP_MAX", pure VK_BLEND_OP_MAX)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_BLEND_OP_ZERO_EXT", pure (VkBlendOp 1000148000))- , ("VK_BLEND_OP_SRC_EXT", pure (VkBlendOp 1000148001))- , ("VK_BLEND_OP_DST_EXT", pure (VkBlendOp 1000148002))- , ("VK_BLEND_OP_SRC_OVER_EXT", pure (VkBlendOp 1000148003))- , ("VK_BLEND_OP_DST_OVER_EXT", pure (VkBlendOp 1000148004))- , ("VK_BLEND_OP_SRC_IN_EXT", pure (VkBlendOp 1000148005))- , ("VK_BLEND_OP_DST_IN_EXT", pure (VkBlendOp 1000148006))- , ("VK_BLEND_OP_SRC_OUT_EXT", pure (VkBlendOp 1000148007))- , ("VK_BLEND_OP_DST_OUT_EXT", pure (VkBlendOp 1000148008))- , ("VK_BLEND_OP_SRC_ATOP_EXT", pure (VkBlendOp 1000148009))- , ("VK_BLEND_OP_DST_ATOP_EXT", pure (VkBlendOp 1000148010))- , ("VK_BLEND_OP_XOR_EXT", pure (VkBlendOp 1000148011))- , ("VK_BLEND_OP_MULTIPLY_EXT", pure (VkBlendOp 1000148012))- , ("VK_BLEND_OP_SCREEN_EXT", pure (VkBlendOp 1000148013))- , ("VK_BLEND_OP_OVERLAY_EXT", pure (VkBlendOp 1000148014))- , ("VK_BLEND_OP_DARKEN_EXT", pure (VkBlendOp 1000148015))- , ("VK_BLEND_OP_LIGHTEN_EXT", pure (VkBlendOp 1000148016))- , ("VK_BLEND_OP_COLORDODGE_EXT", pure (VkBlendOp 1000148017))- , ("VK_BLEND_OP_COLORBURN_EXT", pure (VkBlendOp 1000148018))- , ("VK_BLEND_OP_HARDLIGHT_EXT", pure (VkBlendOp 1000148019))- , ("VK_BLEND_OP_SOFTLIGHT_EXT", pure (VkBlendOp 1000148020))- , ("VK_BLEND_OP_DIFFERENCE_EXT", pure (VkBlendOp 1000148021))- , ("VK_BLEND_OP_EXCLUSION_EXT", pure (VkBlendOp 1000148022))- , ("VK_BLEND_OP_INVERT_EXT", pure (VkBlendOp 1000148023))- , ("VK_BLEND_OP_INVERT_RGB_EXT", pure (VkBlendOp 1000148024))- , ("VK_BLEND_OP_LINEARDODGE_EXT", pure (VkBlendOp 1000148025))- , ("VK_BLEND_OP_LINEARBURN_EXT", pure (VkBlendOp 1000148026))- , ("VK_BLEND_OP_VIVIDLIGHT_EXT", pure (VkBlendOp 1000148027))- , ("VK_BLEND_OP_LINEARLIGHT_EXT", pure (VkBlendOp 1000148028))- , ("VK_BLEND_OP_PINLIGHT_EXT", pure (VkBlendOp 1000148029))- , ("VK_BLEND_OP_HARDMIX_EXT", pure (VkBlendOp 1000148030))- , ("VK_BLEND_OP_HSL_HUE_EXT", pure (VkBlendOp 1000148031))- , ("VK_BLEND_OP_HSL_SATURATION_EXT", pure (VkBlendOp 1000148032))- , ("VK_BLEND_OP_HSL_COLOR_EXT", pure (VkBlendOp 1000148033))- , ("VK_BLEND_OP_HSL_LUMINOSITY_EXT", pure (VkBlendOp 1000148034))- , ("VK_BLEND_OP_PLUS_EXT", pure (VkBlendOp 1000148035))- , ("VK_BLEND_OP_PLUS_CLAMPED_EXT", pure (VkBlendOp 1000148036))- , ("VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", pure (VkBlendOp 1000148037))- , ("VK_BLEND_OP_PLUS_DARKER_EXT", pure (VkBlendOp 1000148038))- , ("VK_BLEND_OP_MINUS_EXT", pure (VkBlendOp 1000148039))- , ("VK_BLEND_OP_MINUS_CLAMPED_EXT", pure (VkBlendOp 1000148040))- , ("VK_BLEND_OP_CONTRAST_EXT", pure (VkBlendOp 1000148041))- , ("VK_BLEND_OP_INVERT_OVG_EXT", pure (VkBlendOp 1000148042))- , ("VK_BLEND_OP_RED_EXT", pure (VkBlendOp 1000148043))- , ("VK_BLEND_OP_GREEN_EXT", pure (VkBlendOp 1000148044))- , ("VK_BLEND_OP_BLUE_EXT", pure (VkBlendOp 1000148045))- ] +++- prec 10 (do- expectP (Ident "VkBlendOp")- v <- step readPrec- pure (VkBlendOp v)- )- )---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"-pattern VK_BLEND_OP_ADD :: VkBlendOp-pattern VK_BLEND_OP_ADD = VkBlendOp 0---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"-pattern VK_BLEND_OP_SUBTRACT :: VkBlendOp-pattern VK_BLEND_OP_SUBTRACT = VkBlendOp 1---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"-pattern VK_BLEND_OP_REVERSE_SUBTRACT :: VkBlendOp-pattern VK_BLEND_OP_REVERSE_SUBTRACT = VkBlendOp 2---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"-pattern VK_BLEND_OP_MIN :: VkBlendOp-pattern VK_BLEND_OP_MIN = VkBlendOp 3---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"-pattern VK_BLEND_OP_MAX :: VkBlendOp-pattern VK_BLEND_OP_MAX = VkBlendOp 4--- ** VkCompareOp---- | VkCompareOp - Stencil comparison function------ = See Also--- #_see_also#------ 'VkPipelineDepthStencilStateCreateInfo',--- 'Graphics.Vulkan.Core10.Sampler.VkSamplerCreateInfo', 'VkStencilOpState'-newtype VkCompareOp = VkCompareOp Int32- deriving (Eq, Ord, Storable)--instance Show VkCompareOp where- showsPrec _ VK_COMPARE_OP_NEVER = showString "VK_COMPARE_OP_NEVER"- showsPrec _ VK_COMPARE_OP_LESS = showString "VK_COMPARE_OP_LESS"- showsPrec _ VK_COMPARE_OP_EQUAL = showString "VK_COMPARE_OP_EQUAL"- showsPrec _ VK_COMPARE_OP_LESS_OR_EQUAL = showString "VK_COMPARE_OP_LESS_OR_EQUAL"- showsPrec _ VK_COMPARE_OP_GREATER = showString "VK_COMPARE_OP_GREATER"- showsPrec _ VK_COMPARE_OP_NOT_EQUAL = showString "VK_COMPARE_OP_NOT_EQUAL"- showsPrec _ VK_COMPARE_OP_GREATER_OR_EQUAL = showString "VK_COMPARE_OP_GREATER_OR_EQUAL"- showsPrec _ VK_COMPARE_OP_ALWAYS = showString "VK_COMPARE_OP_ALWAYS"- showsPrec p (VkCompareOp x) = showParen (p >= 11) (showString "VkCompareOp " . showsPrec 11 x)--instance Read VkCompareOp where- readPrec = parens ( choose [ ("VK_COMPARE_OP_NEVER", pure VK_COMPARE_OP_NEVER)- , ("VK_COMPARE_OP_LESS", pure VK_COMPARE_OP_LESS)- , ("VK_COMPARE_OP_EQUAL", pure VK_COMPARE_OP_EQUAL)- , ("VK_COMPARE_OP_LESS_OR_EQUAL", pure VK_COMPARE_OP_LESS_OR_EQUAL)- , ("VK_COMPARE_OP_GREATER", pure VK_COMPARE_OP_GREATER)- , ("VK_COMPARE_OP_NOT_EQUAL", pure VK_COMPARE_OP_NOT_EQUAL)- , ("VK_COMPARE_OP_GREATER_OR_EQUAL", pure VK_COMPARE_OP_GREATER_OR_EQUAL)- , ("VK_COMPARE_OP_ALWAYS", pure VK_COMPARE_OP_ALWAYS)- ] +++- prec 10 (do- expectP (Ident "VkCompareOp")- v <- step readPrec- pure (VkCompareOp v)- )- )---- | @VK_COMPARE_OP_NEVER@ specifies that the test never passes.-pattern VK_COMPARE_OP_NEVER :: VkCompareOp-pattern VK_COMPARE_OP_NEVER = VkCompareOp 0---- | @VK_COMPARE_OP_LESS@ specifies that the test passes when R \< S.-pattern VK_COMPARE_OP_LESS :: VkCompareOp-pattern VK_COMPARE_OP_LESS = VkCompareOp 1---- | @VK_COMPARE_OP_EQUAL@ specifies that the test passes when R = S.-pattern VK_COMPARE_OP_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_EQUAL = VkCompareOp 2---- | @VK_COMPARE_OP_LESS_OR_EQUAL@ specifies that the test passes when R ≤ S.-pattern VK_COMPARE_OP_LESS_OR_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_LESS_OR_EQUAL = VkCompareOp 3---- | @VK_COMPARE_OP_GREATER@ specifies that the test passes when R > S.-pattern VK_COMPARE_OP_GREATER :: VkCompareOp-pattern VK_COMPARE_OP_GREATER = VkCompareOp 4---- | @VK_COMPARE_OP_NOT_EQUAL@ specifies that the test passes when R ≠ S.-pattern VK_COMPARE_OP_NOT_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_NOT_EQUAL = VkCompareOp 5---- | @VK_COMPARE_OP_GREATER_OR_EQUAL@ specifies that the test passes when R ≥--- S.-pattern VK_COMPARE_OP_GREATER_OR_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_GREATER_OR_EQUAL = VkCompareOp 6---- | @VK_COMPARE_OP_ALWAYS@ specifies that the test always passes.-pattern VK_COMPARE_OP_ALWAYS :: VkCompareOp-pattern VK_COMPARE_OP_ALWAYS = VkCompareOp 7--- ** VkDynamicState---- | VkDynamicState - Indicate which dynamic state is taken from dynamic--- state commands------ = See Also--- #_see_also#------ 'VkPipelineDynamicStateCreateInfo'-newtype VkDynamicState = VkDynamicState Int32- deriving (Eq, Ord, Storable)--instance Show VkDynamicState where- showsPrec _ VK_DYNAMIC_STATE_VIEWPORT = showString "VK_DYNAMIC_STATE_VIEWPORT"- showsPrec _ VK_DYNAMIC_STATE_SCISSOR = showString "VK_DYNAMIC_STATE_SCISSOR"- showsPrec _ VK_DYNAMIC_STATE_LINE_WIDTH = showString "VK_DYNAMIC_STATE_LINE_WIDTH"- showsPrec _ VK_DYNAMIC_STATE_DEPTH_BIAS = showString "VK_DYNAMIC_STATE_DEPTH_BIAS"- showsPrec _ VK_DYNAMIC_STATE_BLEND_CONSTANTS = showString "VK_DYNAMIC_STATE_BLEND_CONSTANTS"- showsPrec _ VK_DYNAMIC_STATE_DEPTH_BOUNDS = showString "VK_DYNAMIC_STATE_DEPTH_BOUNDS"- showsPrec _ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"- showsPrec _ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"- showsPrec _ VK_DYNAMIC_STATE_STENCIL_REFERENCE = showString "VK_DYNAMIC_STATE_STENCIL_REFERENCE"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDynamicState 1000087000) = showString "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"- showsPrec _ (VkDynamicState 1000099000) = showString "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"- showsPrec _ (VkDynamicState 1000143000) = showString "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"- showsPrec p (VkDynamicState x) = showParen (p >= 11) (showString "VkDynamicState " . showsPrec 11 x)--instance Read VkDynamicState where- readPrec = parens ( choose [ ("VK_DYNAMIC_STATE_VIEWPORT", pure VK_DYNAMIC_STATE_VIEWPORT)- , ("VK_DYNAMIC_STATE_SCISSOR", pure VK_DYNAMIC_STATE_SCISSOR)- , ("VK_DYNAMIC_STATE_LINE_WIDTH", pure VK_DYNAMIC_STATE_LINE_WIDTH)- , ("VK_DYNAMIC_STATE_DEPTH_BIAS", pure VK_DYNAMIC_STATE_DEPTH_BIAS)- , ("VK_DYNAMIC_STATE_BLEND_CONSTANTS", pure VK_DYNAMIC_STATE_BLEND_CONSTANTS)- , ("VK_DYNAMIC_STATE_DEPTH_BOUNDS", pure VK_DYNAMIC_STATE_DEPTH_BOUNDS)- , ("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK", pure VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK)- , ("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK", pure VK_DYNAMIC_STATE_STENCIL_WRITE_MASK)- , ("VK_DYNAMIC_STATE_STENCIL_REFERENCE", pure VK_DYNAMIC_STATE_STENCIL_REFERENCE)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", pure (VkDynamicState 1000087000))- , ("VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", pure (VkDynamicState 1000099000))- , ("VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", pure (VkDynamicState 1000143000))- ] +++- prec 10 (do- expectP (Ident "VkDynamicState")- v <- step readPrec- pure (VkDynamicState v)- )- )---- | @VK_DYNAMIC_STATE_VIEWPORT@ specifies that the @pViewports@ state in--- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set--- dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport' before--- any draw commands. The number of viewports used by a pipeline is still--- specified by the @viewportCount@ member of--- @VkPipelineViewportStateCreateInfo@.-pattern VK_DYNAMIC_STATE_VIEWPORT :: VkDynamicState-pattern VK_DYNAMIC_STATE_VIEWPORT = VkDynamicState 0---- | @VK_DYNAMIC_STATE_SCISSOR@ specifies that the @pScissors@ state in--- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set--- dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor' before--- any draw commands. The number of scissor rectangles used by a pipeline--- is still specified by the @scissorCount@ member of--- @VkPipelineViewportStateCreateInfo@.-pattern VK_DYNAMIC_STATE_SCISSOR :: VkDynamicState-pattern VK_DYNAMIC_STATE_SCISSOR = VkDynamicState 1---- | @VK_DYNAMIC_STATE_LINE_WIDTH@ specifies that the @lineWidth@ state in--- @VkPipelineRasterizationStateCreateInfo@ will be ignored and /must/ be--- set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetLineWidth' before--- any draw commands that generate line primitives for the rasterizer.-pattern VK_DYNAMIC_STATE_LINE_WIDTH :: VkDynamicState-pattern VK_DYNAMIC_STATE_LINE_WIDTH = VkDynamicState 2---- | @VK_DYNAMIC_STATE_DEPTH_BIAS@ specifies that the--- @depthBiasConstantFactor@, @depthBiasClamp@ and @depthBiasSlopeFactor@--- states in @VkPipelineRasterizationStateCreateInfo@ will be ignored and--- /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBias' before--- any draws are performed with @depthBiasEnable@ in--- @VkPipelineRasterizationStateCreateInfo@ set to @VK_TRUE@.-pattern VK_DYNAMIC_STATE_DEPTH_BIAS :: VkDynamicState-pattern VK_DYNAMIC_STATE_DEPTH_BIAS = VkDynamicState 3---- | @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ specifies that the @blendConstants@--- state in @VkPipelineColorBlendStateCreateInfo@ will be ignored and--- /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetBlendConstants'--- before any draws are performed with a pipeline state with--- @VkPipelineColorBlendAttachmentState@ member @blendEnable@ set to--- @VK_TRUE@ and any of the blend functions using a constant blend color.-pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS :: VkDynamicState-pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS = VkDynamicState 4---- | @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ specifies that the @minDepthBounds@ and--- @maxDepthBounds@ states of 'VkPipelineDepthStencilStateCreateInfo' will--- be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBounds'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @depthBoundsTestEnable@--- set to @VK_TRUE@.-pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS :: VkDynamicState-pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS = VkDynamicState 5---- | @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ specifies that the @compareMask@--- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and--- @back@ will be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilCompareMask'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set--- to @VK_TRUE@-pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK :: VkDynamicState-pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = VkDynamicState 6---- | @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ specifies that the @writeMask@--- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and--- @back@ will be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilWriteMask'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set--- to @VK_TRUE@-pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK :: VkDynamicState-pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = VkDynamicState 7---- | @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ specifies that the @reference@--- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and--- @back@ will be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilReference'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set--- to @VK_TRUE@-pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE :: VkDynamicState-pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE = VkDynamicState 8--- ** VkPolygonMode---- | VkPolygonMode - Control polygon rasterization mode------ = Description--- #_description#------ - @VK_POLYGON_MODE_POINT@ specifies that polygon vertices are drawn as--- points.------ - @VK_POLYGON_MODE_LINE@ specifies that polygon edges are drawn as--- line segments.------ - @VK_POLYGON_MODE_FILL@ specifies that polygons are rendered using--- the polygon rasterization rules in this section.------ These modes affect only the final rasterization of polygons: in--- particular, a polygon’s vertices are shaded and the polygon is clipped--- and possibly culled before these modes are applied.------ = See Also--- #_see_also#------ 'VkPipelineRasterizationStateCreateInfo'-newtype VkPolygonMode = VkPolygonMode Int32- deriving (Eq, Ord, Storable)--instance Show VkPolygonMode where- showsPrec _ VK_POLYGON_MODE_FILL = showString "VK_POLYGON_MODE_FILL"- showsPrec _ VK_POLYGON_MODE_LINE = showString "VK_POLYGON_MODE_LINE"- showsPrec _ VK_POLYGON_MODE_POINT = showString "VK_POLYGON_MODE_POINT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkPolygonMode 1000153000) = showString "VK_POLYGON_MODE_FILL_RECTANGLE_NV"- showsPrec p (VkPolygonMode x) = showParen (p >= 11) (showString "VkPolygonMode " . showsPrec 11 x)--instance Read VkPolygonMode where- readPrec = parens ( choose [ ("VK_POLYGON_MODE_FILL", pure VK_POLYGON_MODE_FILL)- , ("VK_POLYGON_MODE_LINE", pure VK_POLYGON_MODE_LINE)- , ("VK_POLYGON_MODE_POINT", pure VK_POLYGON_MODE_POINT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_POLYGON_MODE_FILL_RECTANGLE_NV", pure (VkPolygonMode 1000153000))- ] +++- prec 10 (do- expectP (Ident "VkPolygonMode")- v <- step readPrec- pure (VkPolygonMode v)- )- )---- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL"-pattern VK_POLYGON_MODE_FILL :: VkPolygonMode-pattern VK_POLYGON_MODE_FILL = VkPolygonMode 0---- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_LINE"-pattern VK_POLYGON_MODE_LINE :: VkPolygonMode-pattern VK_POLYGON_MODE_LINE = VkPolygonMode 1---- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_POINT"-pattern VK_POLYGON_MODE_POINT :: VkPolygonMode-pattern VK_POLYGON_MODE_POINT = VkPolygonMode 2--- ** VkFrontFace---- | VkFrontFace - Interpret polygon front-facing orientation------ = Description--- #_description#------ - @VK_FRONT_FACE_COUNTER_CLOCKWISE@ specifies that a triangle with--- positive area is considered front-facing.------ - @VK_FRONT_FACE_CLOCKWISE@ specifies that a triangle with negative--- area is considered front-facing.------ Any triangle which is not front-facing is back-facing, including--- zero-area triangles.------ = See Also--- #_see_also#------ 'VkPipelineRasterizationStateCreateInfo'-newtype VkFrontFace = VkFrontFace Int32- deriving (Eq, Ord, Storable)--instance Show VkFrontFace where- showsPrec _ VK_FRONT_FACE_COUNTER_CLOCKWISE = showString "VK_FRONT_FACE_COUNTER_CLOCKWISE"- showsPrec _ VK_FRONT_FACE_CLOCKWISE = showString "VK_FRONT_FACE_CLOCKWISE"- showsPrec p (VkFrontFace x) = showParen (p >= 11) (showString "VkFrontFace " . showsPrec 11 x)--instance Read VkFrontFace where- readPrec = parens ( choose [ ("VK_FRONT_FACE_COUNTER_CLOCKWISE", pure VK_FRONT_FACE_COUNTER_CLOCKWISE)- , ("VK_FRONT_FACE_CLOCKWISE", pure VK_FRONT_FACE_CLOCKWISE)- ] +++- prec 10 (do- expectP (Ident "VkFrontFace")- v <- step readPrec- pure (VkFrontFace v)- )- )---- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_COUNTER_CLOCKWISE"-pattern VK_FRONT_FACE_COUNTER_CLOCKWISE :: VkFrontFace-pattern VK_FRONT_FACE_COUNTER_CLOCKWISE = VkFrontFace 0---- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_CLOCKWISE"-pattern VK_FRONT_FACE_CLOCKWISE :: VkFrontFace-pattern VK_FRONT_FACE_CLOCKWISE = VkFrontFace 1--- ** VkLogicOp---- | VkLogicOp - Framebuffer logical operations------ = Description--- #_description#------ The logical operations supported by Vulkan are summarized in the--- following table in which------ - ¬ is bitwise invert,------ - ∧ is bitwise and,------ - ∨ is bitwise or,------ - ⊕ is bitwise exclusive or,------ - s is the fragment’s Rs0, Gs0, Bs0 or As0 component value for the--- fragment output corresponding to the color attachment being updated,--- and------ - d is the color attachment’s R, G, B or A component value:------ > +-----------------------------------+-----------------------------------+--- > | Mode | Operation |--- > +===================================+===================================+--- > | @VK_LOGIC_OP_CLEAR@ | 0 |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_AND@ | s ∧ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_AND_REVERSE@ | s ∧ ¬ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_COPY@ | s |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_AND_INVERTED@ | ¬ s ∧ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_NO_OP@ | d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_XOR@ | s ⊕ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_OR@ | s ∨ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_NOR@ | ¬ (s ∨ d) |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_EQUIVALENT@ | ¬ (s ⊕ d) |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_INVERT@ | ¬ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_OR_REVERSE@ | s ∨ ¬ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_COPY_INVERTED@ | ¬ s |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_OR_INVERTED@ | ¬ s ∨ d |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_NAND@ | ¬ (s ∧ d) |--- > +-----------------------------------+-----------------------------------+--- > | @VK_LOGIC_OP_SET@ | all 1s |--- > +-----------------------------------+-----------------------------------+--- >--- > Logical Operations------ The result of the logical operation is then written to the color--- attachment as controlled by the component write mask, described in--- <{html_spec_relative}#framebuffer-blendoperations Blend Operations>.------ = See Also--- #_see_also#------ 'VkPipelineColorBlendStateCreateInfo'-newtype VkLogicOp = VkLogicOp Int32- deriving (Eq, Ord, Storable)--instance Show VkLogicOp where- showsPrec _ VK_LOGIC_OP_CLEAR = showString "VK_LOGIC_OP_CLEAR"- showsPrec _ VK_LOGIC_OP_AND = showString "VK_LOGIC_OP_AND"- showsPrec _ VK_LOGIC_OP_AND_REVERSE = showString "VK_LOGIC_OP_AND_REVERSE"- showsPrec _ VK_LOGIC_OP_COPY = showString "VK_LOGIC_OP_COPY"- showsPrec _ VK_LOGIC_OP_AND_INVERTED = showString "VK_LOGIC_OP_AND_INVERTED"- showsPrec _ VK_LOGIC_OP_NO_OP = showString "VK_LOGIC_OP_NO_OP"- showsPrec _ VK_LOGIC_OP_XOR = showString "VK_LOGIC_OP_XOR"- showsPrec _ VK_LOGIC_OP_OR = showString "VK_LOGIC_OP_OR"- showsPrec _ VK_LOGIC_OP_NOR = showString "VK_LOGIC_OP_NOR"- showsPrec _ VK_LOGIC_OP_EQUIVALENT = showString "VK_LOGIC_OP_EQUIVALENT"- showsPrec _ VK_LOGIC_OP_INVERT = showString "VK_LOGIC_OP_INVERT"- showsPrec _ VK_LOGIC_OP_OR_REVERSE = showString "VK_LOGIC_OP_OR_REVERSE"- showsPrec _ VK_LOGIC_OP_COPY_INVERTED = showString "VK_LOGIC_OP_COPY_INVERTED"- showsPrec _ VK_LOGIC_OP_OR_INVERTED = showString "VK_LOGIC_OP_OR_INVERTED"- showsPrec _ VK_LOGIC_OP_NAND = showString "VK_LOGIC_OP_NAND"- showsPrec _ VK_LOGIC_OP_SET = showString "VK_LOGIC_OP_SET"- showsPrec p (VkLogicOp x) = showParen (p >= 11) (showString "VkLogicOp " . showsPrec 11 x)--instance Read VkLogicOp where- readPrec = parens ( choose [ ("VK_LOGIC_OP_CLEAR", pure VK_LOGIC_OP_CLEAR)- , ("VK_LOGIC_OP_AND", pure VK_LOGIC_OP_AND)- , ("VK_LOGIC_OP_AND_REVERSE", pure VK_LOGIC_OP_AND_REVERSE)- , ("VK_LOGIC_OP_COPY", pure VK_LOGIC_OP_COPY)- , ("VK_LOGIC_OP_AND_INVERTED", pure VK_LOGIC_OP_AND_INVERTED)- , ("VK_LOGIC_OP_NO_OP", pure VK_LOGIC_OP_NO_OP)- , ("VK_LOGIC_OP_XOR", pure VK_LOGIC_OP_XOR)- , ("VK_LOGIC_OP_OR", pure VK_LOGIC_OP_OR)- , ("VK_LOGIC_OP_NOR", pure VK_LOGIC_OP_NOR)- , ("VK_LOGIC_OP_EQUIVALENT", pure VK_LOGIC_OP_EQUIVALENT)- , ("VK_LOGIC_OP_INVERT", pure VK_LOGIC_OP_INVERT)- , ("VK_LOGIC_OP_OR_REVERSE", pure VK_LOGIC_OP_OR_REVERSE)- , ("VK_LOGIC_OP_COPY_INVERTED", pure VK_LOGIC_OP_COPY_INVERTED)- , ("VK_LOGIC_OP_OR_INVERTED", pure VK_LOGIC_OP_OR_INVERTED)- , ("VK_LOGIC_OP_NAND", pure VK_LOGIC_OP_NAND)- , ("VK_LOGIC_OP_SET", pure VK_LOGIC_OP_SET)- ] +++- prec 10 (do- expectP (Ident "VkLogicOp")- v <- step readPrec- pure (VkLogicOp v)- )- )---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_CLEAR"-pattern VK_LOGIC_OP_CLEAR :: VkLogicOp-pattern VK_LOGIC_OP_CLEAR = VkLogicOp 0---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND"-pattern VK_LOGIC_OP_AND :: VkLogicOp-pattern VK_LOGIC_OP_AND = VkLogicOp 1---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_REVERSE"-pattern VK_LOGIC_OP_AND_REVERSE :: VkLogicOp-pattern VK_LOGIC_OP_AND_REVERSE = VkLogicOp 2---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY"-pattern VK_LOGIC_OP_COPY :: VkLogicOp-pattern VK_LOGIC_OP_COPY = VkLogicOp 3---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_INVERTED"-pattern VK_LOGIC_OP_AND_INVERTED :: VkLogicOp-pattern VK_LOGIC_OP_AND_INVERTED = VkLogicOp 4---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NO_OP"-pattern VK_LOGIC_OP_NO_OP :: VkLogicOp-pattern VK_LOGIC_OP_NO_OP = VkLogicOp 5---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_XOR"-pattern VK_LOGIC_OP_XOR :: VkLogicOp-pattern VK_LOGIC_OP_XOR = VkLogicOp 6---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR"-pattern VK_LOGIC_OP_OR :: VkLogicOp-pattern VK_LOGIC_OP_OR = VkLogicOp 7---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NOR"-pattern VK_LOGIC_OP_NOR :: VkLogicOp-pattern VK_LOGIC_OP_NOR = VkLogicOp 8---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_EQUIVALENT"-pattern VK_LOGIC_OP_EQUIVALENT :: VkLogicOp-pattern VK_LOGIC_OP_EQUIVALENT = VkLogicOp 9---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_INVERT"-pattern VK_LOGIC_OP_INVERT :: VkLogicOp-pattern VK_LOGIC_OP_INVERT = VkLogicOp 10---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_REVERSE"-pattern VK_LOGIC_OP_OR_REVERSE :: VkLogicOp-pattern VK_LOGIC_OP_OR_REVERSE = VkLogicOp 11---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY_INVERTED"-pattern VK_LOGIC_OP_COPY_INVERTED :: VkLogicOp-pattern VK_LOGIC_OP_COPY_INVERTED = VkLogicOp 12---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_INVERTED"-pattern VK_LOGIC_OP_OR_INVERTED :: VkLogicOp-pattern VK_LOGIC_OP_OR_INVERTED = VkLogicOp 13---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NAND"-pattern VK_LOGIC_OP_NAND :: VkLogicOp-pattern VK_LOGIC_OP_NAND = VkLogicOp 14---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_SET"-pattern VK_LOGIC_OP_SET :: VkLogicOp-pattern VK_LOGIC_OP_SET = VkLogicOp 15--- ** VkPrimitiveTopology---- | VkPrimitiveTopology - Supported primitive topologies------ = Description--- #_description#------ = See Also--- #_see_also#------ 'VkPipelineInputAssemblyStateCreateInfo'-newtype VkPrimitiveTopology = VkPrimitiveTopology Int32- deriving (Eq, Ord, Storable)--instance Show VkPrimitiveTopology where- showsPrec _ VK_PRIMITIVE_TOPOLOGY_POINT_LIST = showString "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = showString "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"- showsPrec p (VkPrimitiveTopology x) = showParen (p >= 11) (showString "VkPrimitiveTopology " . showsPrec 11 x)--instance Read VkPrimitiveTopology where- readPrec = parens ( choose [ ("VK_PRIMITIVE_TOPOLOGY_POINT_LIST", pure VK_PRIMITIVE_TOPOLOGY_POINT_LIST)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", pure VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)- ] +++- prec 10 (do- expectP (Ident "VkPrimitiveTopology")- v <- step readPrec- pure (VkPrimitiveTopology v)- )- )---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST = VkPrimitiveTopology 0---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST = VkPrimitiveTopology 1---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = VkPrimitiveTopology 2---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = VkPrimitiveTopology 3---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = VkPrimitiveTopology 4---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = VkPrimitiveTopology 5---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 6---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 7---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 8---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 9---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = VkPrimitiveTopology 10--- ** VkStencilOp---- | VkStencilOp - Stencil comparison function------ = Description--- #_description#------ - @VK_STENCIL_OP_KEEP@ keeps the current value.------ - @VK_STENCIL_OP_ZERO@ sets the value to 0.------ - @VK_STENCIL_OP_REPLACE@ sets the value to @reference@.------ - @VK_STENCIL_OP_INCREMENT_AND_CLAMP@ increments the current value and--- clamps to the maximum representable unsigned value.------ - @VK_STENCIL_OP_DECREMENT_AND_CLAMP@ decrements the current value and--- clamps to 0.------ - @VK_STENCIL_OP_INVERT@ bitwise-inverts the current value.------ - @VK_STENCIL_OP_INCREMENT_AND_WRAP@ increments the current value and--- wraps to 0 when the maximum value would have been exceeded.------ - @VK_STENCIL_OP_DECREMENT_AND_WRAP@ decrements the current value and--- wraps to the maximum possible value when the value would go below 0.------ For purposes of increment and decrement, the stencil bits are considered--- as an unsigned integer.------ If the stencil test fails, the sample’s coverage bit is cleared in the--- fragment. If there is no stencil framebuffer attachment, stencil--- modification /cannot/ occur, and it is as if the stencil tests always--- pass.------ If the stencil test passes, the @writeMask@ member of the--- 'VkStencilOpState' structures controls how the updated stencil value is--- written to the stencil framebuffer attachment.------ The least significant s bits of @writeMask@, where s is the number of--- bits in the stencil framebuffer attachment, specify an integer mask.--- Where a 1 appears in this mask, the corresponding bit in the stencil--- value in the depth\/stencil attachment is written; where a 0 appears,--- the bit is not written. The @writeMask@ value uses either the--- front-facing or back-facing state based on the facingness of the--- fragment. Fragments generated by front-facing primitives use the front--- mask and fragments generated by back-facing primitives use the back--- mask.------ = See Also--- #_see_also#------ 'VkStencilOpState'-newtype VkStencilOp = VkStencilOp Int32- deriving (Eq, Ord, Storable)--instance Show VkStencilOp where- showsPrec _ VK_STENCIL_OP_KEEP = showString "VK_STENCIL_OP_KEEP"- showsPrec _ VK_STENCIL_OP_ZERO = showString "VK_STENCIL_OP_ZERO"- showsPrec _ VK_STENCIL_OP_REPLACE = showString "VK_STENCIL_OP_REPLACE"- showsPrec _ VK_STENCIL_OP_INCREMENT_AND_CLAMP = showString "VK_STENCIL_OP_INCREMENT_AND_CLAMP"- showsPrec _ VK_STENCIL_OP_DECREMENT_AND_CLAMP = showString "VK_STENCIL_OP_DECREMENT_AND_CLAMP"- showsPrec _ VK_STENCIL_OP_INVERT = showString "VK_STENCIL_OP_INVERT"- showsPrec _ VK_STENCIL_OP_INCREMENT_AND_WRAP = showString "VK_STENCIL_OP_INCREMENT_AND_WRAP"- showsPrec _ VK_STENCIL_OP_DECREMENT_AND_WRAP = showString "VK_STENCIL_OP_DECREMENT_AND_WRAP"- showsPrec p (VkStencilOp x) = showParen (p >= 11) (showString "VkStencilOp " . showsPrec 11 x)--instance Read VkStencilOp where- readPrec = parens ( choose [ ("VK_STENCIL_OP_KEEP", pure VK_STENCIL_OP_KEEP)- , ("VK_STENCIL_OP_ZERO", pure VK_STENCIL_OP_ZERO)- , ("VK_STENCIL_OP_REPLACE", pure VK_STENCIL_OP_REPLACE)- , ("VK_STENCIL_OP_INCREMENT_AND_CLAMP", pure VK_STENCIL_OP_INCREMENT_AND_CLAMP)- , ("VK_STENCIL_OP_DECREMENT_AND_CLAMP", pure VK_STENCIL_OP_DECREMENT_AND_CLAMP)- , ("VK_STENCIL_OP_INVERT", pure VK_STENCIL_OP_INVERT)- , ("VK_STENCIL_OP_INCREMENT_AND_WRAP", pure VK_STENCIL_OP_INCREMENT_AND_WRAP)- , ("VK_STENCIL_OP_DECREMENT_AND_WRAP", pure VK_STENCIL_OP_DECREMENT_AND_WRAP)- ] +++- prec 10 (do- expectP (Ident "VkStencilOp")- v <- step readPrec- pure (VkStencilOp v)- )- )---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_KEEP"-pattern VK_STENCIL_OP_KEEP :: VkStencilOp-pattern VK_STENCIL_OP_KEEP = VkStencilOp 0---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_ZERO"-pattern VK_STENCIL_OP_ZERO :: VkStencilOp-pattern VK_STENCIL_OP_ZERO = VkStencilOp 1---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_REPLACE"-pattern VK_STENCIL_OP_REPLACE :: VkStencilOp-pattern VK_STENCIL_OP_REPLACE = VkStencilOp 2---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_CLAMP"-pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP :: VkStencilOp-pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP = VkStencilOp 3---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_CLAMP"-pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP :: VkStencilOp-pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP = VkStencilOp 4---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INVERT"-pattern VK_STENCIL_OP_INVERT :: VkStencilOp-pattern VK_STENCIL_OP_INVERT = VkStencilOp 5---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_WRAP"-pattern VK_STENCIL_OP_INCREMENT_AND_WRAP :: VkStencilOp-pattern VK_STENCIL_OP_INCREMENT_AND_WRAP = VkStencilOp 6---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_WRAP"-pattern VK_STENCIL_OP_DECREMENT_AND_WRAP :: VkStencilOp-pattern VK_STENCIL_OP_DECREMENT_AND_WRAP = VkStencilOp 7--- ** VkVertexInputRate---- | VkVertexInputRate - Specify rate at which vertex attributes are pulled--- from buffers------ = See Also--- #_see_also#------ 'VkVertexInputBindingDescription'-newtype VkVertexInputRate = VkVertexInputRate Int32- deriving (Eq, Ord, Storable)--instance Show VkVertexInputRate where- showsPrec _ VK_VERTEX_INPUT_RATE_VERTEX = showString "VK_VERTEX_INPUT_RATE_VERTEX"- showsPrec _ VK_VERTEX_INPUT_RATE_INSTANCE = showString "VK_VERTEX_INPUT_RATE_INSTANCE"- showsPrec p (VkVertexInputRate x) = showParen (p >= 11) (showString "VkVertexInputRate " . showsPrec 11 x)--instance Read VkVertexInputRate where- readPrec = parens ( choose [ ("VK_VERTEX_INPUT_RATE_VERTEX", pure VK_VERTEX_INPUT_RATE_VERTEX)- , ("VK_VERTEX_INPUT_RATE_INSTANCE", pure VK_VERTEX_INPUT_RATE_INSTANCE)- ] +++- prec 10 (do- expectP (Ident "VkVertexInputRate")- v <- step readPrec- pure (VkVertexInputRate v)- )- )---- | @VK_VERTEX_INPUT_RATE_VERTEX@ specifies that vertex attribute addressing--- is a function of the vertex index.-pattern VK_VERTEX_INPUT_RATE_VERTEX :: VkVertexInputRate-pattern VK_VERTEX_INPUT_RATE_VERTEX = VkVertexInputRate 0---- | @VK_VERTEX_INPUT_RATE_INSTANCE@ specifies that vertex attribute--- addressing is a function of the instance index.-pattern VK_VERTEX_INPUT_RATE_INSTANCE :: VkVertexInputRate-pattern VK_VERTEX_INPUT_RATE_INSTANCE = VkVertexInputRate 1--- ** VkPipelineDepthStencilStateCreateFlags---- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineDepthStencilStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineDepthStencilStateCreateInfo'-newtype VkPipelineDepthStencilStateCreateFlags = VkPipelineDepthStencilStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineDepthStencilStateCreateFlags where- - showsPrec p (VkPipelineDepthStencilStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDepthStencilStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineDepthStencilStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineDepthStencilStateCreateFlags")- v <- step readPrec- pure (VkPipelineDepthStencilStateCreateFlags v)- )- )----- ** VkPipelineDynamicStateCreateFlags---- | VkPipelineDynamicStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineDynamicStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineDynamicStateCreateInfo'-newtype VkPipelineDynamicStateCreateFlags = VkPipelineDynamicStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineDynamicStateCreateFlags where- - showsPrec p (VkPipelineDynamicStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDynamicStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineDynamicStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineDynamicStateCreateFlags")- v <- step readPrec- pure (VkPipelineDynamicStateCreateFlags v)- )- )----- ** VkPipelineColorBlendStateCreateFlags---- | VkPipelineColorBlendStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineColorBlendStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineColorBlendStateCreateInfo'-newtype VkPipelineColorBlendStateCreateFlags = VkPipelineColorBlendStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineColorBlendStateCreateFlags where- - showsPrec p (VkPipelineColorBlendStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineColorBlendStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineColorBlendStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineColorBlendStateCreateFlags")- v <- step readPrec- pure (VkPipelineColorBlendStateCreateFlags v)- )- )----- ** VkPipelineMultisampleStateCreateFlags---- | VkPipelineMultisampleStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineMultisampleStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineMultisampleStateCreateInfo'-newtype VkPipelineMultisampleStateCreateFlags = VkPipelineMultisampleStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineMultisampleStateCreateFlags where- - showsPrec p (VkPipelineMultisampleStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineMultisampleStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineMultisampleStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineMultisampleStateCreateFlags")- v <- step readPrec- pure (VkPipelineMultisampleStateCreateFlags v)- )- )----- ** VkPipelineRasterizationStateCreateFlags---- | VkPipelineRasterizationStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineRasterizationStateCreateFlags@ is a bitmask type for setting--- a mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineRasterizationStateCreateInfo'-newtype VkPipelineRasterizationStateCreateFlags = VkPipelineRasterizationStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineRasterizationStateCreateFlags where- - showsPrec p (VkPipelineRasterizationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineRasterizationStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineRasterizationStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineRasterizationStateCreateFlags")- v <- step readPrec- pure (VkPipelineRasterizationStateCreateFlags v)- )- )----- ** VkPipelineViewportStateCreateFlags---- | VkPipelineViewportStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineViewportStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineViewportStateCreateInfo'-newtype VkPipelineViewportStateCreateFlags = VkPipelineViewportStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineViewportStateCreateFlags where- - showsPrec p (VkPipelineViewportStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineViewportStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineViewportStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineViewportStateCreateFlags")- v <- step readPrec- pure (VkPipelineViewportStateCreateFlags v)- )- )----- ** VkPipelineTessellationStateCreateFlags---- | VkPipelineTessellationStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineTessellationStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineTessellationStateCreateInfo'-newtype VkPipelineTessellationStateCreateFlags = VkPipelineTessellationStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineTessellationStateCreateFlags where- - showsPrec p (VkPipelineTessellationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineTessellationStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineTessellationStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineTessellationStateCreateFlags")- v <- step readPrec- pure (VkPipelineTessellationStateCreateFlags v)- )- )----- ** VkPipelineInputAssemblyStateCreateFlags---- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineInputAssemblyStateCreateFlags@ is a bitmask type for setting--- a mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineInputAssemblyStateCreateInfo'-newtype VkPipelineInputAssemblyStateCreateFlags = VkPipelineInputAssemblyStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineInputAssemblyStateCreateFlags where- - showsPrec p (VkPipelineInputAssemblyStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineInputAssemblyStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineInputAssemblyStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineInputAssemblyStateCreateFlags")- v <- step readPrec- pure (VkPipelineInputAssemblyStateCreateFlags v)- )- )----- ** VkPipelineVertexInputStateCreateFlags---- | VkPipelineVertexInputStateCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineVertexInputStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineVertexInputStateCreateInfo'-newtype VkPipelineVertexInputStateCreateFlags = VkPipelineVertexInputStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineVertexInputStateCreateFlags where- - showsPrec p (VkPipelineVertexInputStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineVertexInputStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineVertexInputStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineVertexInputStateCreateFlags")- v <- step readPrec- pure (VkPipelineVertexInputStateCreateFlags v)- )- )----- ** VkPipelineShaderStageCreateFlags---- | VkPipelineShaderStageCreateFlags - Reserved for future use------ = Description--- #_description#------ @VkPipelineShaderStageCreateFlags@ is a bitmask type for setting a mask,--- but is currently reserved for future use.------ = See Also--- #_see_also#------ 'VkPipelineShaderStageCreateInfo'-newtype VkPipelineShaderStageCreateFlags = VkPipelineShaderStageCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineShaderStageCreateFlags where- - showsPrec p (VkPipelineShaderStageCreateFlags x) = showParen (p >= 11) (showString "VkPipelineShaderStageCreateFlags " . showsPrec 11 x)--instance Read VkPipelineShaderStageCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineShaderStageCreateFlags")- v <- step readPrec- pure (VkPipelineShaderStageCreateFlags v)- )- )----- ** VkShaderStageFlagBits---- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage------ = See Also--- #_see_also#------ 'VkPipelineShaderStageCreateInfo',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'-newtype VkShaderStageFlagBits = VkShaderStageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkShaderStageFlagBits where- showsPrec _ VK_SHADER_STAGE_VERTEX_BIT = showString "VK_SHADER_STAGE_VERTEX_BIT"- showsPrec _ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = showString "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"- showsPrec _ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = showString "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"- showsPrec _ VK_SHADER_STAGE_GEOMETRY_BIT = showString "VK_SHADER_STAGE_GEOMETRY_BIT"- showsPrec _ VK_SHADER_STAGE_FRAGMENT_BIT = showString "VK_SHADER_STAGE_FRAGMENT_BIT"- showsPrec _ VK_SHADER_STAGE_COMPUTE_BIT = showString "VK_SHADER_STAGE_COMPUTE_BIT"- showsPrec _ VK_SHADER_STAGE_ALL_GRAPHICS = showString "VK_SHADER_STAGE_ALL_GRAPHICS"- showsPrec _ VK_SHADER_STAGE_ALL = showString "VK_SHADER_STAGE_ALL"- showsPrec p (VkShaderStageFlagBits x) = showParen (p >= 11) (showString "VkShaderStageFlagBits " . showsPrec 11 x)--instance Read VkShaderStageFlagBits where- readPrec = parens ( choose [ ("VK_SHADER_STAGE_VERTEX_BIT", pure VK_SHADER_STAGE_VERTEX_BIT)- , ("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT", pure VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT)- , ("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT", pure VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)- , ("VK_SHADER_STAGE_GEOMETRY_BIT", pure VK_SHADER_STAGE_GEOMETRY_BIT)- , ("VK_SHADER_STAGE_FRAGMENT_BIT", pure VK_SHADER_STAGE_FRAGMENT_BIT)- , ("VK_SHADER_STAGE_COMPUTE_BIT", pure VK_SHADER_STAGE_COMPUTE_BIT)- , ("VK_SHADER_STAGE_ALL_GRAPHICS", pure VK_SHADER_STAGE_ALL_GRAPHICS)- , ("VK_SHADER_STAGE_ALL", pure VK_SHADER_STAGE_ALL)- ] +++- prec 10 (do- expectP (Ident "VkShaderStageFlagBits")- v <- step readPrec- pure (VkShaderStageFlagBits v)- )- )---- | @VK_SHADER_STAGE_VERTEX_BIT@ specifies the vertex stage.-pattern VK_SHADER_STAGE_VERTEX_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_VERTEX_BIT = VkShaderStageFlagBits 0x00000001---- | @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ specifies the tessellation--- control stage.-pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = VkShaderStageFlagBits 0x00000002---- | @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@ specifies the tessellation--- evaluation stage.-pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = VkShaderStageFlagBits 0x00000004---- | @VK_SHADER_STAGE_GEOMETRY_BIT@ specifies the geometry stage.-pattern VK_SHADER_STAGE_GEOMETRY_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_GEOMETRY_BIT = VkShaderStageFlagBits 0x00000008---- | @VK_SHADER_STAGE_FRAGMENT_BIT@ specifies the fragment stage.-pattern VK_SHADER_STAGE_FRAGMENT_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_FRAGMENT_BIT = VkShaderStageFlagBits 0x00000010---- | @VK_SHADER_STAGE_COMPUTE_BIT@ specifies the compute stage.-pattern VK_SHADER_STAGE_COMPUTE_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_COMPUTE_BIT = VkShaderStageFlagBits 0x00000020---- | @VK_SHADER_STAGE_ALL_GRAPHICS@ is a combination of bits used as--- shorthand to specify all graphics stages defined above (excluding the--- compute stage).-pattern VK_SHADER_STAGE_ALL_GRAPHICS :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_ALL_GRAPHICS = VkShaderStageFlagBits 0x0000001f---- | @VK_SHADER_STAGE_ALL@ is a combination of bits used as shorthand to--- specify all shader stages supported by the device, including all--- additional stages which are introduced by extensions.-pattern VK_SHADER_STAGE_ALL :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_ALL = VkShaderStageFlagBits 0x7fffffff--- ** VkPipelineCreateFlagBits---- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created------ = Description--- #_description#------ - @VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT@ specifies that the--- created pipeline will not be optimized. Using this flag /may/ reduce--- the time taken to create the pipeline.------ - @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ specifies that the--- pipeline to be created is allowed to be the parent of a pipeline--- that will be created in a subsequent call to--- 'vkCreateGraphicsPipelines' or 'vkCreateComputePipelines'.------ - @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ specifies that the pipeline to--- be created will be a child of a previously created parent pipeline.------ It is valid to set both @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ and--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@. This allows a pipeline to be both a--- parent and possibly a child in a pipeline hierarchy. See--- <{html_spec_relative}#pipelines-pipeline-derivatives Pipeline Derivatives>--- for more information.------ = See Also--- #_see_also#------ 'VkPipelineCreateFlags'-newtype VkPipelineCreateFlagBits = VkPipelineCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineCreateFlagBits where- showsPrec _ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = showString "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"- showsPrec _ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = showString "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"- showsPrec _ VK_PIPELINE_CREATE_DERIVATIVE_BIT = showString "VK_PIPELINE_CREATE_DERIVATIVE_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkPipelineCreateFlagBits 0x00000008) = showString "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"- showsPrec _ (VkPipelineCreateFlagBits 0x00000010) = showString "VK_PIPELINE_CREATE_DISPATCH_BASE"- showsPrec p (VkPipelineCreateFlagBits x) = showParen (p >= 11) (showString "VkPipelineCreateFlagBits " . showsPrec 11 x)--instance Read VkPipelineCreateFlagBits where- readPrec = parens ( choose [ ("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)- , ("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)- , ("VK_PIPELINE_CREATE_DERIVATIVE_BIT", pure VK_PIPELINE_CREATE_DERIVATIVE_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure (VkPipelineCreateFlagBits 0x00000008))- , ("VK_PIPELINE_CREATE_DISPATCH_BASE", pure (VkPipelineCreateFlagBits 0x00000010))- ] +++- prec 10 (do- expectP (Ident "VkPipelineCreateFlagBits")- v <- step readPrec- pure (VkPipelineCreateFlagBits v)- )- )---- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"-pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = VkPipelineCreateFlagBits 0x00000001---- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"-pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = VkPipelineCreateFlagBits 0x00000002---- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT"-pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT = VkPipelineCreateFlagBits 0x00000004--- ** VkColorComponentFlagBits---- | VkColorComponentFlagBits - Bitmask controlling which components are--- written to the framebuffer------ = Description--- #_description#------ - @VK_COLOR_COMPONENT_R_BIT@ specifies that the R value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ - @VK_COLOR_COMPONENT_G_BIT@ specifies that the G value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ - @VK_COLOR_COMPONENT_B_BIT@ specifies that the B value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ - @VK_COLOR_COMPONENT_A_BIT@ specifies that the A value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ The color write mask operation is applied regardless of whether blending--- is enabled.------ = See Also--- #_see_also#------ 'VkColorComponentFlags'-newtype VkColorComponentFlagBits = VkColorComponentFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkColorComponentFlagBits where- showsPrec _ VK_COLOR_COMPONENT_R_BIT = showString "VK_COLOR_COMPONENT_R_BIT"- showsPrec _ VK_COLOR_COMPONENT_G_BIT = showString "VK_COLOR_COMPONENT_G_BIT"- showsPrec _ VK_COLOR_COMPONENT_B_BIT = showString "VK_COLOR_COMPONENT_B_BIT"- showsPrec _ VK_COLOR_COMPONENT_A_BIT = showString "VK_COLOR_COMPONENT_A_BIT"- showsPrec p (VkColorComponentFlagBits x) = showParen (p >= 11) (showString "VkColorComponentFlagBits " . showsPrec 11 x)--instance Read VkColorComponentFlagBits where- readPrec = parens ( choose [ ("VK_COLOR_COMPONENT_R_BIT", pure VK_COLOR_COMPONENT_R_BIT)- , ("VK_COLOR_COMPONENT_G_BIT", pure VK_COLOR_COMPONENT_G_BIT)- , ("VK_COLOR_COMPONENT_B_BIT", pure VK_COLOR_COMPONENT_B_BIT)- , ("VK_COLOR_COMPONENT_A_BIT", pure VK_COLOR_COMPONENT_A_BIT)- ] +++- prec 10 (do- expectP (Ident "VkColorComponentFlagBits")- v <- step readPrec- pure (VkColorComponentFlagBits v)- )- )---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_R_BIT"-pattern VK_COLOR_COMPONENT_R_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_R_BIT = VkColorComponentFlagBits 0x00000001---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_G_BIT"-pattern VK_COLOR_COMPONENT_G_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_G_BIT = VkColorComponentFlagBits 0x00000002---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_B_BIT"-pattern VK_COLOR_COMPONENT_B_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_B_BIT = VkColorComponentFlagBits 0x00000004---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_A_BIT"-pattern VK_COLOR_COMPONENT_A_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_A_BIT = VkColorComponentFlagBits 0x00000008--- ** VkCullModeFlagBits---- | VkCullModeFlagBits - Bitmask controlling triangle culling------ = Description--- #_description#------ - @VK_CULL_MODE_NONE@ specifies that no triangles are discarded------ - @VK_CULL_MODE_FRONT_BIT@ specifies that front-facing triangles are--- discarded------ - @VK_CULL_MODE_BACK_BIT@ specifies that back-facing triangles are--- discarded------ - @VK_CULL_MODE_FRONT_AND_BACK@ specifies that all triangles are--- discarded.------ Following culling, fragments are produced for any triangles which have--- not been discarded.------ = See Also--- #_see_also#------ 'VkCullModeFlags'-newtype VkCullModeFlagBits = VkCullModeFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCullModeFlagBits where- showsPrec _ VK_CULL_MODE_FRONT_BIT = showString "VK_CULL_MODE_FRONT_BIT"- showsPrec _ VK_CULL_MODE_BACK_BIT = showString "VK_CULL_MODE_BACK_BIT"- showsPrec _ VK_CULL_MODE_NONE = showString "VK_CULL_MODE_NONE"- showsPrec _ VK_CULL_MODE_FRONT_AND_BACK = showString "VK_CULL_MODE_FRONT_AND_BACK"- showsPrec p (VkCullModeFlagBits x) = showParen (p >= 11) (showString "VkCullModeFlagBits " . showsPrec 11 x)--instance Read VkCullModeFlagBits where- readPrec = parens ( choose [ ("VK_CULL_MODE_FRONT_BIT", pure VK_CULL_MODE_FRONT_BIT)- , ("VK_CULL_MODE_BACK_BIT", pure VK_CULL_MODE_BACK_BIT)- , ("VK_CULL_MODE_NONE", pure VK_CULL_MODE_NONE)- , ("VK_CULL_MODE_FRONT_AND_BACK", pure VK_CULL_MODE_FRONT_AND_BACK)- ] +++- prec 10 (do- expectP (Ident "VkCullModeFlagBits")- v <- step readPrec- pure (VkCullModeFlagBits v)- )- )---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_BIT"-pattern VK_CULL_MODE_FRONT_BIT :: VkCullModeFlagBits-pattern VK_CULL_MODE_FRONT_BIT = VkCullModeFlagBits 0x00000001---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_BACK_BIT"-pattern VK_CULL_MODE_BACK_BIT :: VkCullModeFlagBits-pattern VK_CULL_MODE_BACK_BIT = VkCullModeFlagBits 0x00000002---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_NONE"-pattern VK_CULL_MODE_NONE :: VkCullModeFlagBits-pattern VK_CULL_MODE_NONE = VkCullModeFlagBits 0x00000000---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_AND_BACK"-pattern VK_CULL_MODE_FRONT_AND_BACK :: VkCullModeFlagBits-pattern VK_CULL_MODE_FRONT_AND_BACK = VkCullModeFlagBits 0x00000003--- | Dummy data to tag the 'Ptr' with-data VkPipeline_T--- | VkPipeline - Opaque handle to a pipeline object------ = Description--- #_description#------ = See Also--- #_see_also#------ 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePipelineEntryNVX',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindPipeline',--- 'vkCreateComputePipelines', 'vkCreateGraphicsPipelines',--- 'vkDestroyPipeline',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'-type VkPipeline = Ptr VkPipeline_T--- | Dummy data to tag the 'Ptr' with-data VkPipelineLayout_T--- | VkPipelineLayout - Opaque handle to a pipeline layout object------ = Description--- #_description#------ = See Also--- #_see_also#------ 'VkComputePipelineCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',--- 'VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableDescriptorSetEntryNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePushConstantEntryNVX',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPushConstants',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout'-type VkPipelineLayout = Ptr VkPipelineLayout_T--- | Dummy data to tag the 'Ptr' with-data VkRenderPass_T--- | VkRenderPass - Opaque handle to a render pass object------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',--- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',--- 'VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',--- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'-type VkRenderPass = Ptr VkRenderPass_T--- | vkCreateGraphicsPipelines - Create graphics pipelines------ = Parameters--- #_parameters#------ - @device@ is the logical device that creates the graphics pipelines.------ - @pipelineCache@ is either--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that--- pipeline caching is disabled; or the handle of a valid--- <{html_spec_relative}#pipelines-cache pipeline cache> object, in--- which case use of that cache is enabled for the duration of the--- command.------ - @createInfoCount@ is the length of the @pCreateInfos@ and--- @pPipelines@ arrays.------ - @pCreateInfos@ is an array of @VkGraphicsPipelineCreateInfo@--- structures.------ - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ - @pPipelines@ is a pointer to an array in which the resulting--- graphics pipeline objects are returned.------ = Description--- #_description#------ The 'VkGraphicsPipelineCreateInfo' structure includes an array of shader--- create info structures containing all the desired active shader stages,--- as well as creation info to define all relevant fixed-function stages,--- and a pipeline layout.------ == Valid Usage------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the--- @basePipelineIndex@ member of that same element is not @-1@,--- @basePipelineIndex@ /must/ be less than the index into--- @pCreateInfos@ that corresponds to that element------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/--- have been created with the--- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @pipelineCache@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@--- /must/ be a valid @VkPipelineCache@ handle------ - @pCreateInfos@ /must/ be a valid pointer to an array of--- @createInfoCount@ valid @VkGraphicsPipelineCreateInfo@ structures------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pPipelines@ /must/ be a valid pointer to an array of--- @createInfoCount@ @VkPipeline@ handles------ - @createInfoCount@ /must/ be greater than @0@------ - If @pipelineCache@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Return Codes------ [<#fundamentals-successcodes Success>]--- - @VK_SUCCESS@------ [<#fundamentals-errorcodes Failure>]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INVALID_SHADER_NV@------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkGraphicsPipelineCreateInfo', 'VkPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'-foreign import ccall "vkCreateGraphicsPipelines" vkCreateGraphicsPipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult--- | vkCreateComputePipelines - Creates a new compute pipeline object------ = Parameters--- #_parameters#------ - @device@ is the logical device that creates the compute pipelines.------ - @pipelineCache@ is either--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that--- pipeline caching is disabled; or the handle of a valid--- <{html_spec_relative}#pipelines-cache pipeline cache> object, in--- which case use of that cache is enabled for the duration of the--- command.------ - @createInfoCount@ is the length of the @pCreateInfos@ and--- @pPipelines@ arrays.------ - @pCreateInfos@ is an array of @VkComputePipelineCreateInfo@--- structures.------ - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ - @pPipelines@ is a pointer to an array in which the resulting compute--- pipeline objects are returned.------ = Description--- #_description#------ == Valid Usage------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the--- @basePipelineIndex@ member of that same element is not @-1@,--- @basePipelineIndex@ /must/ be less than the index into--- @pCreateInfos@ that corresponds to that element------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/--- have been created with the--- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @pipelineCache@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@--- /must/ be a valid @VkPipelineCache@ handle------ - @pCreateInfos@ /must/ be a valid pointer to an array of--- @createInfoCount@ valid @VkComputePipelineCreateInfo@ structures------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pPipelines@ /must/ be a valid pointer to an array of--- @createInfoCount@ @VkPipeline@ handles------ - @createInfoCount@ /must/ be greater than @0@------ - If @pipelineCache@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Return Codes------ [<#fundamentals-successcodes Success>]--- - @VK_SUCCESS@------ [<#fundamentals-errorcodes Failure>]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INVALID_SHADER_NV@------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkComputePipelineCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'-foreign import ccall "vkCreateComputePipelines" vkCreateComputePipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult--- | vkDestroyPipeline - Destroy a pipeline object------ = Parameters--- #_parameters#------ - @device@ is the logical device that destroys the pipeline.------ - @pipeline@ is the handle of the pipeline to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#------ == Valid Usage------ - All submitted commands that refer to @pipeline@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @pipeline@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @pipeline@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @pipeline@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipeline@ /must/--- be a valid @VkPipeline@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @pipeline@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @pipeline@ /must/ be externally synchronized------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline'-foreign import ccall "vkDestroyPipeline" vkDestroyPipeline :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | VkOffset2D - Structure specifying a two-dimensional offset------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',--- 'VkRect2D',--- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR'-data VkOffset2D = VkOffset2D- { -- No documentation found for Nested "VkOffset2D" "vkX"- vkX :: Int32- , -- No documentation found for Nested "VkOffset2D" "vkY"- vkY :: Int32- }- deriving (Eq, Show)--instance Storable VkOffset2D where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkOffset2D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkOffset2D))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkOffset2D))--- | VkExtent2D - Structure specifying a two-dimensional extent------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeParametersKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'VkRect2D',--- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'-data VkExtent2D = VkExtent2D- { -- No documentation found for Nested "VkExtent2D" "vkWidth"- vkWidth :: Word32- , -- No documentation found for Nested "VkExtent2D" "vkHeight"- vkHeight :: Word32- }- deriving (Eq, Show)--instance Storable VkExtent2D where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkExtent2D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent2D))- *> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent2D))--- | VkViewport - Structure specifying a viewport------ = Description--- #_description#------ The framebuffer depth coordinate @z@f /may/ be represented using either--- a fixed-point or floating-point representation. However, a--- floating-point representation /must/ be used if the depth\/stencil--- attachment has a floating-point depth component. If an m-bit fixed-point--- representation is used, we assume that it represents each value--- <<data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIYAAABMCAYAAACoCs9DAAAABmJLR0QA/wD/AP+gvaeTAAAGHElEQVR4nO2de4gVZRTAf2psm6t/uNYmakmapkaZadjDMKM3mfRHRCFRFFSCoRT0ohKCwqT+6AkZ/WOWllZIj+1B2dvYtrTCR2bKKkkvI9vaDNfbH2du3zfjvO7emfnu3Xt+MDA7c+abMzvnnjlzvjPfB43FK0ApZHnCpVK1yGGuFSiYIcBWb30c5vo73aij1BqHA/9iPMYUt+ootcJpGKPoofE8ZyIDXSvgiGnW+kbggCtFahU1DI0vQlHDgC+caaHUFMHA82S36ii1wnSMUfxNeOD5M+H5jvKyoBBNHdKI0fh0az0s8GwD9nlLGzAU6AV2WjLrc9RPccQyzC//8Ri5ecir7G/ABQXopTjmS4xhXBeyfxDwiLf/a2BscaoprmjCH3ieFNg/HHjX2/cS0FKodooz4gLPKcAOJJ64q3jVFJfciDGMz6ztVwJ/Ab8DlzjQS3HM0xjDeAxJ8C2xtq12p5rikk6MESwC2vHnJ3qBE51ppzihCdiPMYJu4CBSpHPQ2r7KlYKKG+zAswT8Aczx9q1CvUbDYgeeu4CJ1r7JiEGo12hAgoFnkJX4vcbk4lRTXGIHnmEZz0n4vcbK4lRTXBEMPKO62p9HvUZDMY10NZ4TUa/RUNiBZ1KX+QrUa/Rr5gNbvOVXzM3eZ22/1pM9AtjkbfsR/2vtT972TZ6cUue8THwVVgk415M9M4XsdwXqriiKoiiKoiiKoiiKoihKHiwmOROoS/9YFhNCow6DoCSghqGEooahhKKGoSiKoiiKoiiKoiiHcBnhadqHvf2twL3AN8gIOHuBN4GZgXYGeG21I1XePUjx7gPA4FyvQMmFxYQbxtXA6Rxayl9eDgAXeW0MBV6LkCsBbxVyJUqmjEd+/TOB3ZibOQ8Zv2I5cAVS5r8A/8CsG4FmoAPxDguB84DLgbX4jWNGURdUQ8wCvsf8D5rzOtEpwH2IK+9CXPs/wB7gA+BB5MPgvtCC+TTwILAd4xFs5uK/4SuAV5FhoG0GIh8IleX6/Ui+Fi3Ao/gHg8ncMJqA6/H/k0vIjVsHfMShwyu/gAyLWAlnB9q4JUKuNSC3jeghF5+x5O6oUJ96ZRZyb8IeqZkahv3NZwkZvGx8QGYAMtLdLktuC3B0BedZiN/ooj46Hh7Q56qYNm3DmF+BLvVICzLmR9lLrAOeJEfDuMlqeEWC7LH4vxFtr+A8y63j7omRm2rJ7UU8WhTvWLLnV6BLPfIccp3dyGNzAHAbBRjGfuCoFPKLAsqclfI8m61jTo2Ru8aSezGhzT2WbFtKPeqV1cD7wHHWtqoMI223+4fALynk1gT+nhMq5WcIMMFb7wY2xMjaE9B8HCM3Chjhre9G4qD+zBLkzW1HVg0mTUuxAUk2fZqyvS7Eu5TfEsalOGYqxkC/Qp6TUdhTSsTNTNRoMxh1ZN1gkmGsp/K5OWzDSOO+7JsdNz/ZIOSVGeTVNq1n0TnP+kDWFVzNSCayzLYUx6T9dU/CpLc3I3mUKNJ6FiWCrA1jChIRl1mb4pi0HqMSL6Aeo0qyNoy51voG5H06jqGYvMifxI9ak9aARmFyKF2kC5qVAFkaxmDgBuvvW1McU0ngmfaR02iBZy5kaRh3YnIdTwHvpTimksCzPP96L9KBVm2bSgxZzaI4A9Mf0YEkuqK4EDEigOOt7XOQ5FY3cKm3bRnyqGnCBJ69wBve+lLgdWA20sEH/jHC5yET3fUAF6e+mmjGADdn0E6QXuDuHNp1ykhMl/kOkvtIlhL/LeUnntwg5M0jTvYMT/b+BLnPq7vE/5mZcJ6+LnnMLZ9rSjyJVsStlxDjSJPQqmcaxjCqeZQMA95GxuXuQopktlfRXj3wLdk8koLEBd11RStm/tKd+DtvlNqg8EfJkZjHxw9IQKbUHoUaRhtSsV1C6gmPyfNkSlUUZhgjMCV+W5EMYxzlop3ReSmkxFJI8DkSKQSZgBjFbKQQRumnpMl8jkaqwCcgvZrnoEbR70nyGGOQ1PZY7+9W4iunbIb1VSnFPUmGcTvGKECympVUfyvF0Yn/U4rWwP7ym2SZZ4GHohpLMgwdiql+OIHob2zA1NWWiS2Q/g/CKZj9Ff7zqAAAAABJRU5ErkJggg== stem 64a1b37b405b2e2dc919e83a12e9feba>>,--- where k ∈ { 0, 1, …, 2m-1 }, as k (e.g. 1.0 is represented in binary as--- a string of all ones).------ The viewport parameters shown in the above equations are found from--- these values as------ []--- ox = @x@ + @width@ \/ 2------ []--- oy = @y@ + @height@ \/ 2------ []--- oz = @minDepth@------ []--- px = @width@------ []--- py = @height@------ []--- pz = @maxDepth@ - @minDepth@.------ The width and height of the--- <{html_spec_relative}#features-limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>--- /must/ be greater than or equal to the width and height of the largest--- image which /can/ be created and attached to a framebuffer.------ The floating-point viewport bounds are represented with an--- <{html_spec_relative}#features-limits-viewportSubPixelBits implementation-dependent precision>.------ == Valid Usage------ - @width@ /must/ be greater than @0.0@------ - @width@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[0]------ - @height@ /must/ be greater than @0.0@------ - The absolute value of @height@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[1]------ - @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]------ - (@x@ + @width@) /must/ be less than or equal to--- @viewportBoundsRange@[1]------ - @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]------ - (@y@ + @height@) /must/ be less than or equal to--- @viewportBoundsRange@[1]------ - @minDepth@ /must/ be between @0.0@ and @1.0@, inclusive------ - @maxDepth@ /must/ be between @0.0@ and @1.0@, inclusive------ = See Also--- #_see_also#------ 'VkPipelineViewportStateCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport'-data VkViewport = VkViewport- { -- No documentation found for Nested "VkViewport" "vkX"- vkX :: CFloat- , -- No documentation found for Nested "VkViewport" "vkY"- vkY :: CFloat- , -- No documentation found for Nested "VkViewport" "vkWidth"- vkWidth :: CFloat- , -- No documentation found for Nested "VkViewport" "vkHeight"- vkHeight :: CFloat- , -- No documentation found for Nested "VkViewport" "vkMinDepth"- vkMinDepth :: CFloat- , -- No documentation found for Nested "VkViewport" "vkMaxDepth"- vkMaxDepth :: CFloat- }- deriving (Eq, Show)--instance Storable VkViewport where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkViewport <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkViewport))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkViewport))- *> poke (ptr `plusPtr` 8) (vkWidth (poked :: VkViewport))- *> poke (ptr `plusPtr` 12) (vkHeight (poked :: VkViewport))- *> poke (ptr `plusPtr` 16) (vkMinDepth (poked :: VkViewport))- *> poke (ptr `plusPtr` 20) (vkMaxDepth (poked :: VkViewport))--- | VkRect2D - Structure specifying a two-dimensional subregion------ = Description--- #_description#------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkClearRect',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',--- 'VkExtent2D', 'VkOffset2D',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT',--- 'VkPipelineViewportStateCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.vkCmdSetDiscardRectangleEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR'-data VkRect2D = VkRect2D- { -- No documentation found for Nested "VkRect2D" "vkOffset"- vkOffset :: VkOffset2D- , -- No documentation found for Nested "VkRect2D" "vkExtent"- vkExtent :: VkExtent2D- }- deriving (Eq, Show)--instance Storable VkRect2D where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkRect2D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkOffset (poked :: VkRect2D))- *> poke (ptr `plusPtr` 8) (vkExtent (poked :: VkRect2D))--- | VkSpecializationMapEntry - Structure specifying a specialization map--- entry------ = Description--- #_description#------ If a @constantID@ value is not a specialization constant ID used in the--- shader, that map entry does not affect the behavior of the pipeline.------ == Valid Usage------ - For a @constantID@ specialization constant declared in a shader,--- @size@ /must/ match the byte size of the @constantID@. If the--- specialization constant is of type @boolean@, @size@ /must/ be the--- byte size of @VkBool32@------ = See Also--- #_see_also#------ 'VkSpecializationInfo'-data VkSpecializationMapEntry = VkSpecializationMapEntry- { -- No documentation found for Nested "VkSpecializationMapEntry" "vkConstantID"- vkConstantID :: Word32- , -- No documentation found for Nested "VkSpecializationMapEntry" "vkOffset"- vkOffset :: Word32- , -- No documentation found for Nested "VkSpecializationMapEntry" "vkSize"- vkSize :: CSize- }- deriving (Eq, Show)--instance Storable VkSpecializationMapEntry where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkSpecializationMapEntry <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkConstantID (poked :: VkSpecializationMapEntry))- *> poke (ptr `plusPtr` 4) (vkOffset (poked :: VkSpecializationMapEntry))- *> poke (ptr `plusPtr` 8) (vkSize (poked :: VkSpecializationMapEntry))--- | VkSpecializationInfo - Structure specifying specialization info------ = Description--- #_description#------ @pMapEntries@ points to a structure of type 'VkSpecializationMapEntry'.------ == Valid Usage------ - The @offset@ member of each element of @pMapEntries@ /must/ be less--- than @dataSize@------ - The @size@ member of each element of @pMapEntries@ /must/ be less--- than or equal to @dataSize@ minus @offset@------ - If @mapEntryCount@ is not @0@, @pMapEntries@ /must/ be a valid--- pointer to an array of @mapEntryCount@ valid--- @VkSpecializationMapEntry@ structures------ == Valid Usage (Implicit)------ - If @dataSize@ is not @0@, @pData@ /must/ be a valid pointer to an--- array of @dataSize@ bytes------ = See Also--- #_see_also#------ 'VkPipelineShaderStageCreateInfo', 'VkSpecializationMapEntry'-data VkSpecializationInfo = VkSpecializationInfo- { -- No documentation found for Nested "VkSpecializationInfo" "vkMapEntryCount"- vkMapEntryCount :: Word32- , -- No documentation found for Nested "VkSpecializationInfo" "vkPMapEntries"- vkPMapEntries :: Ptr VkSpecializationMapEntry- , -- No documentation found for Nested "VkSpecializationInfo" "vkDataSize"- vkDataSize :: CSize- , -- No documentation found for Nested "VkSpecializationInfo" "vkPData"- vkPData :: Ptr ()- }- deriving (Eq, Show)--instance Storable VkSpecializationInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkSpecializationInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMapEntryCount (poked :: VkSpecializationInfo))- *> poke (ptr `plusPtr` 8) (vkPMapEntries (poked :: VkSpecializationInfo))- *> poke (ptr `plusPtr` 16) (vkDataSize (poked :: VkSpecializationInfo))- *> poke (ptr `plusPtr` 24) (vkPData (poked :: VkSpecializationInfo))--- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a--- newly created pipeline shader stage------ = Description--- #_description#------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @stage@ /must/ not be--- @VK_SHADER_STAGE_GEOMETRY_BIT@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @stage@ /must/ not be--- @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or--- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@------ - @stage@ /must/ not be @VK_SHADER_STAGE_ALL_GRAPHICS@, or--- @VK_SHADER_STAGE_ALL@------ - @pName@ /must/ be the name of an @OpEntryPoint@ in @module@ with an--- execution model that matches @stage@------ - If the identified entry point includes any variable in its interface--- that is declared with the @ClipDistance@ @BuiltIn@ decoration, that--- variable /must/ not have an array size greater than--- @VkPhysicalDeviceLimits@::@maxClipDistances@------ - If the identified entry point includes any variable in its interface--- that is declared with the @CullDistance@ @BuiltIn@ decoration, that--- variable /must/ not have an array size greater than--- @VkPhysicalDeviceLimits@::@maxCullDistances@------ - If the identified entry point includes any variables in its--- interface that are declared with the @ClipDistance@ or--- @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have--- array sizes which sum to more than--- @VkPhysicalDeviceLimits@::@maxCombinedClipAndCullDistances@------ - If the identified entry point includes any variable in its interface--- that is declared with the @SampleMask@ @BuiltIn@ decoration, that--- variable /must/ not have an array size greater than--- @VkPhysicalDeviceLimits@::@maxSampleMaskWords@------ - If @stage@ is @VK_SHADER_STAGE_VERTEX_BIT@, the identified entry--- point /must/ not include any input variable in its interface that is--- decorated with @CullDistance@------ - If @stage@ is @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or--- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@, and the identified--- entry point has an @OpExecutionMode@ instruction that specifies a--- patch size with @OutputVertices@, the patch size /must/ be greater--- than @0@ and less than or equal to--- @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry--- point /must/ have an @OpExecutionMode@ instruction that specifies a--- maximum output vertex count that is greater than @0@ and less than--- or equal to @VkPhysicalDeviceLimits@::@maxGeometryOutputVertices@------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry--- point /must/ have an @OpExecutionMode@ instruction that specifies an--- invocation count that is greater than @0@ and less than or equal to--- @VkPhysicalDeviceLimits@::@maxGeometryShaderInvocations@------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified--- entry point writes to @Layer@ for any primitive, it /must/ write the--- same value to @Layer@ for all vertices of a given primitive------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified--- entry point writes to @ViewportIndex@ for any primitive, it /must/--- write the same value to @ViewportIndex@ for all vertices of a given--- primitive------ - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, the identified entry--- point /must/ not include any output variables in its interface--- decorated with @CullDistance@------ - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified--- entry point writes to @FragDepth@ in any execution path, it /must/--- write to @FragDepth@ in all execution paths------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @stage@ /must/ be a valid 'VkShaderStageFlagBits' value------ - @module@ /must/ be a valid @VkShaderModule@ handle------ - @pName@ /must/ be a null-terminated UTF-8 string------ - If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/--- be a valid pointer to a valid @VkSpecializationInfo@ structure------ = See Also--- #_see_also#------ 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineShaderStageCreateFlags',--- 'Graphics.Vulkan.Core10.Shader.VkShaderModule', 'VkShaderStageFlagBits',--- 'VkSpecializationInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineShaderStageCreateInfo = VkPipelineShaderStageCreateInfo- { -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkFlags"- vkFlags :: VkPipelineShaderStageCreateFlags- , -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkStage"- vkStage :: VkShaderStageFlagBits- , -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkModule"- vkModule :: VkShaderModule- , -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkPName"- vkPName :: Ptr CChar- , -- No documentation found for Nested "VkPipelineShaderStageCreateInfo" "vkPSpecializationInfo"- vkPSpecializationInfo :: Ptr VkSpecializationInfo- }- deriving (Eq, Show)--instance Storable VkPipelineShaderStageCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineShaderStageCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 20) (vkStage (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 24) (vkModule (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPName (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPSpecializationInfo (poked :: VkPipelineShaderStageCreateInfo))--- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly--- created compute pipeline------ = Description--- #_description#------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <{html_spec_relative}#pipelines-pipeline-derivatives Pipeline Derivatives>.------ @stage@ points to a structure of type @VkPipelineShaderStageCreateInfo@.------ == Valid Usage------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a--- valid handle to a compute @VkPipeline@------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be a valid index into the calling--- command’s @pCreateInfos@ parameter------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be -1------ - The @stage@ member of @stage@ /must/ be--- @VK_SHADER_STAGE_COMPUTE_BIT@------ - The shader code for the entry point identified by @stage@ and the--- rest of the state identified by this structure /must/ adhere to the--- pipeline linking rules described in the--- <{html_spec_relative}#interfaces Shader Interfaces> chapter------ - @layout@ /must/ be--- <{html_spec_relative}#descriptorsets-pipelinelayout-consistency consistent>--- with the layout of the compute shader specified in @stage@------ - The number of resources in @layout@ accessible to the compute shader--- stage /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageResources@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'--- values------ - @stage@ /must/ be a valid @VkPipelineShaderStageCreateInfo@--- structure------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - Both of @basePipelineHandle@, and @layout@ that are valid handles--- /must/ have been created, allocated, or retrieved from the same--- @VkDevice@------ = See Also--- #_see_also#------ 'VkPipeline', 'VkPipelineCreateFlags', 'VkPipelineLayout',--- 'VkPipelineShaderStageCreateInfo',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateComputePipelines'-data VkComputePipelineCreateInfo = VkComputePipelineCreateInfo- { -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkFlags"- vkFlags :: VkPipelineCreateFlags- , -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkStage"- vkStage :: VkPipelineShaderStageCreateInfo- , -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkLayout"- vkLayout :: VkPipelineLayout- , -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkBasePipelineHandle"- vkBasePipelineHandle :: VkPipeline- , -- No documentation found for Nested "VkComputePipelineCreateInfo" "vkBasePipelineIndex"- vkBasePipelineIndex :: Int32- }- deriving (Eq, Show)--instance Storable VkComputePipelineCreateInfo where- sizeOf ~_ = 96- alignment ~_ = 8- peek ptr = VkComputePipelineCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 24) (vkStage (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 72) (vkLayout (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 80) (vkBasePipelineHandle (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 88) (vkBasePipelineIndex (poked :: VkComputePipelineCreateInfo))--- | VkVertexInputBindingDescription - Structure specifying vertex input--- binding description------ = Description--- #_description#------ == Valid Usage------ - @binding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - @stride@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputBindingStride@------ == Valid Usage (Implicit)------ - @inputRate@ /must/ be a valid 'VkVertexInputRate' value------ = See Also--- #_see_also#------ 'VkPipelineVertexInputStateCreateInfo', 'VkVertexInputRate'-data VkVertexInputBindingDescription = VkVertexInputBindingDescription- { -- No documentation found for Nested "VkVertexInputBindingDescription" "vkBinding"- vkBinding :: Word32- , -- No documentation found for Nested "VkVertexInputBindingDescription" "vkStride"- vkStride :: Word32- , -- No documentation found for Nested "VkVertexInputBindingDescription" "vkInputRate"- vkInputRate :: VkVertexInputRate- }- deriving (Eq, Show)--instance Storable VkVertexInputBindingDescription where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkVertexInputBindingDescription <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBinding (poked :: VkVertexInputBindingDescription))- *> poke (ptr `plusPtr` 4) (vkStride (poked :: VkVertexInputBindingDescription))- *> poke (ptr `plusPtr` 8) (vkInputRate (poked :: VkVertexInputBindingDescription))--- | VkVertexInputAttributeDescription - Structure specifying vertex input--- attribute description------ = Description--- #_description#------ == Valid Usage------ - @location@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@------ - @binding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - @offset@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputAttributeOffset@------ - @format@ /must/ be allowed as a vertex buffer format, as specified--- by the @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ flag in--- @VkFormatProperties@::@bufferFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ == Valid Usage (Implicit)------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ = See Also--- #_see_also#------ 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'VkPipelineVertexInputStateCreateInfo'-data VkVertexInputAttributeDescription = VkVertexInputAttributeDescription- { -- No documentation found for Nested "VkVertexInputAttributeDescription" "vkLocation"- vkLocation :: Word32- , -- No documentation found for Nested "VkVertexInputAttributeDescription" "vkBinding"- vkBinding :: Word32- , -- No documentation found for Nested "VkVertexInputAttributeDescription" "vkFormat"- vkFormat :: VkFormat- , -- No documentation found for Nested "VkVertexInputAttributeDescription" "vkOffset"- vkOffset :: Word32- }- deriving (Eq, Show)--instance Storable VkVertexInputAttributeDescription where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkVertexInputAttributeDescription <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkLocation (poked :: VkVertexInputAttributeDescription))- *> poke (ptr `plusPtr` 4) (vkBinding (poked :: VkVertexInputAttributeDescription))- *> poke (ptr `plusPtr` 8) (vkFormat (poked :: VkVertexInputAttributeDescription))- *> poke (ptr `plusPtr` 12) (vkOffset (poked :: VkVertexInputAttributeDescription))--- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters--- of a newly created pipeline vertex input state------ = Description--- #_description#------ == Valid Usage------ - @vertexBindingDescriptionCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - @vertexAttributeDescriptionCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@------ - For every @binding@ specified by each element of--- @pVertexAttributeDescriptions@, a @VkVertexInputBindingDescription@--- /must/ exist in @pVertexBindingDescriptions@ with the same value of--- @binding@------ - All elements of @pVertexBindingDescriptions@ /must/ describe--- distinct binding numbers------ - All elements of @pVertexAttributeDescriptions@ /must/ describe--- distinct attribute locations------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPipelineVertexInputDivisorStateCreateInfoEXT'------ - @flags@ /must/ be @0@------ - If @vertexBindingDescriptionCount@ is not @0@,--- @pVertexBindingDescriptions@ /must/ be a valid pointer to an array--- of @vertexBindingDescriptionCount@ valid--- @VkVertexInputBindingDescription@ structures------ - If @vertexAttributeDescriptionCount@ is not @0@,--- @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array--- of @vertexAttributeDescriptionCount@ valid--- @VkVertexInputAttributeDescription@ structures------ = See Also--- #_see_also#------ 'VkGraphicsPipelineCreateInfo', 'VkPipelineVertexInputStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkVertexInputAttributeDescription', 'VkVertexInputBindingDescription'-data VkPipelineVertexInputStateCreateInfo = VkPipelineVertexInputStateCreateInfo- { -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineVertexInputStateCreateFlags- , -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkVertexBindingDescriptionCount"- vkVertexBindingDescriptionCount :: Word32- , -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkPVertexBindingDescriptions"- vkPVertexBindingDescriptions :: Ptr VkVertexInputBindingDescription- , -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkVertexAttributeDescriptionCount"- vkVertexAttributeDescriptionCount :: Word32- , -- No documentation found for Nested "VkPipelineVertexInputStateCreateInfo" "vkPVertexAttributeDescriptions"- vkPVertexAttributeDescriptions :: Ptr VkVertexInputAttributeDescription- }- deriving (Eq, Show)--instance Storable VkPipelineVertexInputStateCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineVertexInputStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkVertexBindingDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPVertexBindingDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkVertexAttributeDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPVertexAttributeDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))--- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters--- of a newly created pipeline input assembly state------ = Description--- #_description#------ Restarting the assembly of primitives discards the most recent index--- values if those elements formed an incomplete primitive, and restarts--- the primitive assembly using the subsequent indices, but only assembling--- the immediately following element through the end of the originally--- specified elements. The primitive restart index value comparison is--- performed before adding the @vertexOffset@ value to the index value.------ == Valid Usage------ - If @topology@ is @VK_PRIMITIVE_TOPOLOGY_POINT_LIST@,--- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST@,--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST@,--- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @primitiveRestartEnable@ /must/--- be @VK_FALSE@------ - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>--- feature is not enabled, @topology@ /must/ not be any of--- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,--- @VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY@,--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY@------ - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>--- feature is not enabled, @topology@ /must/ not be--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @topology@ /must/ be a valid 'VkPrimitiveTopology' value------ = See Also--- #_see_also#------ @VkBool32@, 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineInputAssemblyStateCreateFlags', 'VkPrimitiveTopology',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineInputAssemblyStateCreateInfo = VkPipelineInputAssemblyStateCreateInfo- { -- No documentation found for Nested "VkPipelineInputAssemblyStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineInputAssemblyStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineInputAssemblyStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineInputAssemblyStateCreateFlags- , -- No documentation found for Nested "VkPipelineInputAssemblyStateCreateInfo" "vkTopology"- vkTopology :: VkPrimitiveTopology- , -- No documentation found for Nested "VkPipelineInputAssemblyStateCreateInfo" "vkPrimitiveRestartEnable"- vkPrimitiveRestartEnable :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPipelineInputAssemblyStateCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineInputAssemblyStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkTopology (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPrimitiveRestartEnable (poked :: VkPipelineInputAssemblyStateCreateInfo))--- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters--- of a newly created pipeline tessellation state------ = Description--- #_description#------ == Valid Usage------ - @patchControlPoints@ /must/ be greater than zero and less than or--- equal to @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPipelineTessellationDomainOriginStateCreateInfo'------ - @flags@ /must/ be @0@------ = See Also--- #_see_also#------ 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineTessellationStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineTessellationStateCreateInfo = VkPipelineTessellationStateCreateInfo- { -- No documentation found for Nested "VkPipelineTessellationStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineTessellationStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineTessellationStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineTessellationStateCreateFlags- , -- No documentation found for Nested "VkPipelineTessellationStateCreateInfo" "vkPatchControlPoints"- vkPatchControlPoints :: Word32- }- deriving (Eq, Show)--instance Storable VkPipelineTessellationStateCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPipelineTessellationStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineTessellationStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineTessellationStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineTessellationStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkPatchControlPoints (poked :: VkPipelineTessellationStateCreateInfo))--- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a--- newly created pipeline viewport state------ = Description--- #_description#------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-multiViewport multiple viewports>--- feature is not enabled, @viewportCount@ /must/ be @1@------ - If the--- <{html_spec_relative}#features-features-multiViewport multiple viewports>--- feature is not enabled, @scissorCount@ /must/ be @1@------ - @viewportCount@ /must/ be between @1@ and--- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - @scissorCount@ /must/ be between @1@ and--- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - @scissorCount@ and @viewportCount@ /must/ be identical------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.VkPipelineViewportSwizzleStateCreateInfoNV'--- or--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @viewportCount@ /must/ be greater than @0@------ - @scissorCount@ /must/ be greater than @0@------ = See Also--- #_see_also#------ 'VkGraphicsPipelineCreateInfo', 'VkPipelineViewportStateCreateFlags',--- 'VkRect2D', 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkViewport'-data VkPipelineViewportStateCreateInfo = VkPipelineViewportStateCreateInfo- { -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineViewportStateCreateFlags- , -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkViewportCount"- vkViewportCount :: Word32- , -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkPViewports"- vkPViewports :: Ptr VkViewport- , -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkScissorCount"- vkScissorCount :: Word32- , -- No documentation found for Nested "VkPipelineViewportStateCreateInfo" "vkPScissors"- vkPScissors :: Ptr VkRect2D- }- deriving (Eq, Show)--instance Storable VkPipelineViewportStateCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineViewportStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPViewports (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkScissorCount (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPScissors (poked :: VkPipelineViewportStateCreateInfo))--- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters--- of a newly created pipeline rasterization state------ = Description--- #_description#------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-depthClamp depth clamping>--- feature is not enabled, @depthClampEnable@ /must/ be @VK_FALSE@------ - If the--- <{html_spec_relative}#features-features-fillModeNonSolid non-solid fill modes>--- feature is not enabled, @polygonMode@ /must/ be--- @VK_POLYGON_MODE_FILL@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPipelineRasterizationConservativeStateCreateInfoEXT'--- or--- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.VkPipelineRasterizationStateRasterizationOrderAMD'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @polygonMode@ /must/ be a valid 'VkPolygonMode' value------ - @cullMode@ /must/ be a valid combination of 'VkCullModeFlagBits'--- values------ - @frontFace@ /must/ be a valid 'VkFrontFace' value------ = See Also--- #_see_also#------ @VkBool32@, 'VkCullModeFlags', 'VkFrontFace',--- 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineRasterizationStateCreateFlags', 'VkPolygonMode',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineRasterizationStateCreateInfo = VkPipelineRasterizationStateCreateInfo- { -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineRasterizationStateCreateFlags- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkDepthClampEnable"- vkDepthClampEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkRasterizerDiscardEnable"- vkRasterizerDiscardEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkPolygonMode"- vkPolygonMode :: VkPolygonMode- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkCullMode"- vkCullMode :: VkCullModeFlags- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkFrontFace"- vkFrontFace :: VkFrontFace- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkDepthBiasEnable"- vkDepthBiasEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkDepthBiasConstantFactor"- vkDepthBiasConstantFactor :: CFloat- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkDepthBiasClamp"- vkDepthBiasClamp :: CFloat- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkDepthBiasSlopeFactor"- vkDepthBiasSlopeFactor :: CFloat- , -- No documentation found for Nested "VkPipelineRasterizationStateCreateInfo" "vkLineWidth"- vkLineWidth :: CFloat- }- deriving (Eq, Show)--instance Storable VkPipelineRasterizationStateCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkPipelineRasterizationStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDepthClampEnable (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkRasterizerDiscardEnable (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkPolygonMode (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkCullMode (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 36) (vkFrontFace (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkDepthBiasEnable (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 44) (vkDepthBiasConstantFactor (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 52) (vkDepthBiasSlopeFactor (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 56) (vkLineWidth (poked :: VkPipelineRasterizationStateCreateInfo))--- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters--- of a newly created pipeline multisample state------ = Description--- #_description#------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-sampleRateShading sample rate shading>--- feature is not enabled, @sampleShadingEnable@ /must/ be @VK_FALSE@------ - If the--- <{html_spec_relative}#features-features-alphaToOne alpha to one>--- feature is not enabled, @alphaToOneEnable@ /must/ be @VK_FALSE@------ - @minSampleShading@ /must/ be in the range [0,1]------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.VkPipelineCoverageModulationStateCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.VkPipelineCoverageToColorStateCreateInfoNV',--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @rasterizationSamples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - If @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid--- pointer to an array of--- <<data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhsAAABOCAYAAACJ+9TQAAAABmJLR0QA/wD/AP+gvaeTAAAXDElEQVR4nO2defQdRZXHP9lIgETCJsoioCDKOrIYFZVBGBHFDZ0zjuOGy8giMw5HFBUFdBxRYWYU0QHR8bgrLqgQFVEYgqKMkQASkW2CAmGHRJIQEvLmj/vad7t//bqrenu/l3w/5/TJe79U3apXfbvqdtWtWyCEEEKIYXwP6OVcZ4+yUuPG1FFXQIiKzAK+BCwHvgNMGW111lvUzuXMAF4CfBa4ErgLWAWsBu4DrsXa7gPAIcAmo6mmqMhs4A/9a637+8LRVEeI5nkacGr/+peR1mTy8XHSbxl7j7Y6I6ctXVE7F/Nm4HbSbbQMWALciRkc2TfiVcBFwFO6r66owUzgUQb3cZ/RVkeI5jiJgWJfMuK6TDZ+xqBtHkBvi23pito5n1nAtxi0zW3AccD2mXTTgX2Bc4F1pI2OJ3VVWdEIB5A2GKePtjpCNMe3GSj36SOuy2TjxVgHvxB4zojrMhloS1fUzvl8jUF7XwzMCchzgstzb3tVEy1xNIP79+sR10WIRvk/Bsr96hHXRUxupCvd8QoGbX0PsFlgvhmYD0cP+HE7VRMt8jnkHCrWQ7YkPeW682irIyYx0pVu+RWDtv63yLyX9vN9pOlKidb5LYP7/uYR12XsmKxrTlOB5wK7Ao/HHK5uxaZyY6YfpwJ7AHsCTwQ2Bh7C3gKvwDzsm2AWtp63O7AF5rF8N3ANcB22VhvLfu7zA1idm2YOcBC2drxZv5xbgMsxR6g2aOrejgtd6GAXutIkmwDPA3bCnpfEofIyYGVLZc4CXgDsgjn6/RHzbbk/Us42wDPd9wWR+ZcBK4D/jczn6apfy2M2tqNmF2zQvQa7b48NSXsosFv//28Cfkp79zhhK6xf2w6717dhS10P1ZA5E2vvhKZ2orTZB7cxLo0NG2M/OG/P8gHANOCfMeXIS/PtgDI2Al4FnI/duDw5PeAR4CzqObxtDXwK60CGlXMP5hy2f4C8FxfIybt+UrHeewHfJe1Z7a/lwMnYtG8obd/bMvkxvGyInJDrlwHyu9DBtnSlyXbOsjvwdex358lfAZwJbBohs6i+z8QG5vdghmxeeW+J/A2HZWT8dWT+qrStUyHt+AHgwZz/X4wZFAlTgPdi/Ug27VLgwMi6JQzT+ZVY/7IDFhNjTU6aVcApVA/3sH9GVt0X9Tb64ISmx6WxZG/g5v51B4Mf/ihmef24/30Ntp1sJekGOimgjFdm8swH3opZ2IdiTlo3uv9fgClqLPOw/fQ9bB32TODvMCv1cMxJ78+unDsCZB7NoH1Wubz3ur/7692RdZ4KnMbAK/5O4INYB3oIcGL/b0m53yP84Wz73g6TvwZ764jhtH7e28lvV389nKnnyQHyu9DBtnSlyXZOmIK122MMOrqPAkcABwPHANe7sn6DvRXXre+WWNsnA9Ifmah3jwF/FfFbXpvJ39VySNs6VdaOyfO7HGvH7IB+IzYwbgp8n3Sbr8qkvRszbmLxOu8NrisxPXoQm734Btb/foa0L1MP+I8K5SZlJzLqOIe22QdDO+PS2HMUgx+8CPgh9sOPYtDRTMUaJ0l3aIDcf2Wg6C8ckmYT0uuu/xhZ9x2x6dce8DtsajWP/RlYrj+ILMPPABwZmTePaaR3LMwn34N+O2wwSNIdW6Gstu5tnvyrK9Tvwn7eHUvSPZ/04PQlwoJadaGDnqZ1JaFuO4Pd5286OT/BjM8sm2JGRpLuKxXK8vW9Ftuauhh7I07eRGcAx7t0PaxDDuXwTN5HMWOp7QCJXepUth3Px5YNDmKg/5ths1S+LQ7H2vxW4OUM2nxj4IxM2ldVrFvC552sy7G3+HOBx2XSTQe+mim7ysxKE86hbffBXYxLY8mnGTTmKuAGYNucdJu6dHmdVJYf9dP+Q0m6Fzm5F4dV+S945T2sJO1F/XSnRMjfivTDUTYohnCuk3cVxW+p73Npb6lQVlv3Nk/+eRXqtxSz+ovYn/Q05AWET512oYMJbehKQt12BjiHtN7NKkj7Qpd2HeaXEENW765i4uCTcLlLe1FEGXOx5Zde5roeMzq2jKxzKF3qVLYdF5C/LDOX9AzHYmyG4/E5aacyeOPuAe+vWLeERaTb/z8L0s4hPRPyzQrlNeEc2nYf3Pa4NLZcyaBhVgNPH5JuKtbRfz5Q7kXYm3TZm8bOxN9MsDdzv+ZcNlWZWOBHRJTh14XLBsUQ/BTsWso78QNJP8g7RZbX1r3Nk39MZN5tGbxhD2N3BlsUe5gjYcwSQts66GlaVzx12hnSW0TXMlwPEjYiHXEzdkDy9V1BseHl34xjt6H6eBnZaw02yOcF+KpDlzrl2/Fh7E17GD566jrSzrNZvIFXZ5CbRdrI+R3lvg0+AFvsc7IR9SOHtt0HdzEujSXTSE9PnzWCOuzryr8tIt9zSStBWcjhbbFQ0jGD1Xud/KpOoAmzSK/BfikgT+JpnlwxCtn2vc3KL+rc8tgY8yrPm2kB66x9e/2KcP+BWKrqoKdJXfHUbeeZpNvxy4H5/ujyfD+ivGx9P1GS/osu7dciykk4jon+H3nXFdibcBVHvyrU1alsO36sJL2f7r+gJK1f4vmnCnVLmEe6jUPiymTD7j8hory6zqFd9MFdjEtjyV6kG6bsjacN3ki6QwjlYNJ1X0jz50X4db3YffxZ3ky6vvMC8jyd+Ic5oe176+WvoXhaPpYnYs5nifxrgc0blJ+lqg56mtQVT912zurdcwPzeWPj5xHlZfVut+LkXOzSnhpRjueJmFFzd6bsvOtWutm5Ulensu341IK0m5IOwf7SEtl+GeVFFeqWcKyTcy9hhtxHSP+uHSPKe7vLV8U5tIs+uItxqRajirPh4wLcDPy+YflbYY5yz8IelrmYBeed+/wg8ocI2b/FphaTt919sfXDSzCL9QfU3+fu26fufm7vJHYbYQ9Ldtq0F1Fe2/fWy78emzpsgi2wASh5I7gZ8yF4sKK8NnXQ06SuDJNbpZ293t0B/CIwX2g0ziy+vjdR3p67u8/XVixzKbZ74L1YZ/9KzDEyb9ZsZyzGxBFUn4HqQqey7XhjQdo9XNmPUnwmz1akHRartjmk6/gjzBguY27me0ievPJ+E5EvoYs+uItxaSw5i4EFFrteX8TmmHPTsL3Lw67YHRevLSjjEWz/dFXLfYuMvJ0qyklkJdsNe9iWpxsCLj/l18M6t1Daurdtyp+NdQCJ3Nup3u5d6SA0qytZ6rRzVu9Cd5ZsTfr3/HdEmTH1zUZc3SminDKmAM/GdCAvzsQSwnY0ebrUKd+OZU7Bx7i0ZbMo3rforgr18njn0NA4KT9xeR4h7h4sdHljnUO77IPbHJfGll8yaISjG5L5FMwS9w/1sVikyuwUcHZdMmRaK8szsC2UXpGy1wLiT3b8G5e/rsOfd9Crc8Wsb7Zxb4fJr9KZZpmFTdcnMu+l+tJP1zrYpK5kqdPOWb0LdS49KJPvfRFl+vqWled3vcRGEI1hLvAFJj5Pe0XI6FqnYp7f81zaot0gkN5dEbP7J0vWOTTUWfNPLk/MrErWaTnWObTrPritcWksmUZ661jdqIRg27IWO5lXUnwKY5Pr/k/CgrLcSv6NvZU4B0N/VHhdh78TM3WJdfKLpY17WyS/SmfqmY5NLybylpGeMo1hFDrYpK546rbzu0nr3fMC852cyffswHzZ+pbpuXeqrbo9NIafkf5dBwfm61qnYp/fq13a15ek/Y5L+6HIenm8c+hqwlwBdiLd/jFO63WdQ7vugxOaHpfGkj1JPxBNeMO+JyOz7CAqH7TmmgbKB5uWO4S041lyvT1CzvkuX12HPz8l2mPiumXTtHFvi+TXMRKnkt6XvhIL4lWVUehgk7riqdvOPk5DD3OkDOFSl+d+wiNgxtbXO9V+NLCMaVjnXEXnsgNO6MxG1zoV8/zOJD1lX7aVc4lL+/IKdUvwzqHXB+Z5C+n2L3Nk9dR1Du26D87S1LhUG79n+/vY/t+Q66s1ysw6nq2uISvhre7zfMoPoqrr8JNHD3uDeSETp393iZDTlsPfWuodRBRCG/d2mPzF1HMOPRtb4wTrWF+NxQGoyih0sAvn0LrtDGF69wTSxt555B/ulUesM2uVdnsbtt5+bmB6j98tsYJwx82udSrm+d2Hwe9aifkZDGNL0rs/6uiqr+OdgXle4z4vJS6uSpNjRRd9cJamxqWEpxBuJ6zFtZ83NqZFXlVpuoPcjnSjhQwYfhteTB1OAN4RkO4M0g9q6Hr65qTfXuq2j1fsmBP+TsDOF/hUZHltDX5Nyz+dwXr0OmwKeP6QtDtj665PLpDXpQ4mNK0rnrrtvCzzPcQZ720M+qNHsNmRUGLquwVph9DQ35eUUcWj3y8HXULYaZ6j0KmYdvRpF1FsGPq092AO2FXxskKM0d2x034TPkv1nShV2rSLPrjtcckzhTg74S/PftH601qGe3XXOR656QFpx8z3smPK9ybt5BNah22xMxRuorwjzBpklwaW4Y8wTo7d9hyCTcHeQ1ggoqvc542w6eylJXl2wwbjGZgSxzAOxsZ7+lfCMRSHL34H1g4vw9Y58+hKBz1N64qnbjtflfm+PcVbKLcA3um+n4Y59IVSdZB8kPLZgmy+2KigO5MOHf3JwHyj0Kmq7dhk2iJmkV6u2SEgz0cYGLF/Iu4cnI2of6x8231wF+OSZxl2BEEe+xC4czE5nCq5Hq5QkTKmkj5Fs66DH9iJjb7eRacwzsC2aFVZj35pP89yyp2EXufKiDHMXl+S73f9/wudcZhN+kyAsoOZNumXm6xPxjhDtXFvi+THbMdN8Cc39rC19DIu66cdFnEUutNBT9O6ktBEOz8Oe6NLZBxfkHYK6VDSP6NdvfNOtT8NLMP7JzzM8AOusmyMxRdJyvtuYD7oXqdi29E7h76xJK33kflwZL082cihPYqDjvnnfS3l54Vk2c/lr3qsfNt9cBfjUijvYuL9yT3CvgtjYw/SD0SVY4azzCB9Mx/AtoVl2YLB4TNVnKiSY8l7pN/CsjyDwbkaK/rfQ3mDK2NB5v+OYPDQlEVH9HjntLsYvuVpu36ZPSzwTMhbg6eNe9uk/L8nvR0s5GjwKZglX/Ym0pUOetrQFWjuPvodH3eS7yQ6k4mHUxXttmiivt6p9vTAMvyOhB62PbTovBCA55COB7GI4YfC5dG1TsW0Y9Y5dM+CtJA+5v0VFeqW4J1Dr8ZmKn7BxCi/0zCj0j/vVcKj13UOTWizD+5iXApl5MbGPAaBSvxe57Wkg5gUvf2U4ZUwsfLOwhys3o6t0z2ETYNdQPo3JuW/qaSMH2bKOB+zFJ+PxTs4CntDSx7Ce4kPT7yPk78aU55DsK2ESYCgUyNlTiF9FPQD2HHVL8bWeP8W+C/M+S3p8EP3YLd9b18XIP/CADkHkN6bv46wwDo39tOHlNGFDnqa1JWm2tkzlfTAfgfW6R6CvWGeRDo0/BcIN2xC9O6DLv0Z7u+rXPq73N+LzpI4kolxC1ZjTvUnY/4mb8IGtE8zmFVKrq9TbZth2zoV044z+r/rBuyAN1+vG/t/90HAfuRk+LRL+n9bRPmhcln84Xln939bD9u59EVsR9Z5pA+He5S4QFyfcfX2hzEuJ1+3QmizD+5iXApl5MZG0QmJ/jqyZjnHYWuwebLvw9bpZ5EOWuOvF0wUmWIHTJmzD1peWf+OheetwieHyH2YtK9BDFOxjtA/PNlrMdaBxUwVtn1v8wIiZa8Qf4T3B9Zz2HVaYH3b1sEsTelKU+2cZRqmI/cPkfkYtpQRu+U4RO/8dPXikrQrKXd63x4z5C4lfbrmsGsZdvhc3eXENnUqph33DUj78X7a2RQHleox0a8nBD9TlBgQx2NtnZW/DjN4yrbkZvFn84ToViht9cFdjUshFBob3kv8QuAl7vsKxi/ox2wsCuFTsbek+7EtXFcSvo0uhF0w57sdsGnfNdjNvA6b3ltbU/7TsA54K8wivQVby64b2346Zknvhm1HW41NcS+k2IFPhNOVDia0pStNMh2r466Y3i3H3j4vx97yxo1ZWLvvim3ZnY31pX/GHHIXY2/AMbseiuhapyYjs7D2TQbifRhEAp0NHIrNBiQnrF7W/3ey0WYf3Pa4VMa7mHja8gHkbBnuwmdDCCGEiMU7h65kdIeIiuEUzmzErpkJIYQQXeO3z15D+2/pomFkbAghhJjstBH1WXSIjA0hhBCTnbYDBoqWkbEhhBBisrENtk02ufzhdae7v8fGkREjQk42QgghJhv7MTFke0ISwXU1w48QEJMMGRtCCCEmG/MJO8BPjAlaRhFCCCFEq8jYEEIIIUSryNgQQgghRKvI2BBCCCFEq8jYEEIIIUSrtLkb5VTglBblCyGEEKI5TsPG7sbRzIYQQgghWkXGhhBCCCFaRcaGEEIIIVpFxoYQQgghWqVtB9FTW5QvhBBCiDFAMxtCCCGEaBUZG0IIIYRoFRkbQgghhGgVGRtCCCGEaBUZG0IIIYRolTZ3owghJi/bAwcBBwJ7AbsAc4EpwDLgRuAK4AvATZGy9wReCszry94amAU8BCwBftGXe13N3yCEGEMuBHrueni01RFCtMAbgYWkn/UHgSuBS4BFwBr3f2uA9wfI3Qx4J/AHl/cxYDHwc+CXwJ8z5Z4LzGzmZwkhRsy7SD/fPWD/vIQyNoRY/7mBwTO+CDiMicup2wDfIt0fHFUi94cu7UrgA8BWmTQbAScB61zaL1f8HUKIyYWMDSEEAHMYDPSXABsXpJ0B3MygP7i+RPbSfrrlwDNL0n6CdF/zrLKKCyEmPYXGhhxEhdhw2BfzyVgOvBZYVZB2DXCx+74bw/uL7YAn9D8fB1xVUo9zMt9fXpJeCDHmyEFUiA2HpwH3A58H7glIv859Xpn57tmv/+/1wFcC5C7JfN8uII8QYoyRsSHEhsM5TJxVKGIP93lhQbrlwJnApdjUaRlzMt8fjKiTEGIMkbEhhMhjW2xbbMIXC9Je1r9C2SPzvcwfRAgx5shnQwiRx+mYkyjYttWQ5ZFQDnefVwMXNChbCDEJkbEhhPDMAM4AXt//vgh4BRYzoyn5b3DfzybMf0QIsZ6gra9CbHhMwyKH7g+ciEUL7WE7VT6GRf5skncw6GNuZqL/hhBiPFGcDSFELtnAXT3gt8AxwJYtlLcDFgq9B6zAtuIKIdYPFGdDCJHLOuDXwO+xwR/gGcD7gOOBTRssaybwbeBxwFrgNZhhI4TYAPC7UeYDt7vvj3RcFyFEt7zGfZ4OvACL7rk3cAoW+Otg4I6a5UwDvoFFFl0LvA4Lby6EWH9YxMSt9fLHEkLkMof0YWpX1JS3ETajkfiBvKymPCGEEEKsBxxFet31wOLkQ9kM+Glfxt3oDBQhhBBC9Hk6aWPjxAoynowF60qcTndsrHZCCCGEGHt2Im1sfCgy/8HAff283wI2abJyQgghhBh/DiRtbBwbkfc47MTYdcAHsVNmhRBCCLGeMgOL/nlYZL53EhCYJ6escxjE6DkyskwhhBBCjCH7MojUGcMCBobGHZTPTmwN/E8//W3APiXpr+2nPSCyXkIIIYSYZLwNG9Tvi8hzMOlZjRNK0u8NLOmnXQA8viT9LGyZ5VEs0JcQQgghxphkWaOHBdQqY1sGhkMPC9JTdDbKkdiSSQ84D4upUca8fvqrA9IKIYQQYpLzGwaGwzXANgVp5wG3uPRLgJ2HpJ2COX+u66d9DFuqCbmW9vN8rvKvEkIIIcSkYAoWKtgvidwPnInNSDwPOBQ7dG0+A8OhB/yYYsPkJRm5Va6jm/qhQgghhBgdc7AD1a7AZh+KBv9HgO8RtnPllBJZIZecQ4XYgNAeeCE2DOZizpy7AptjvhgrgAewU1+vw84uEUKIxvl/LD66bFuCF+cAAAAASUVORK5CYII= stem afc23f1498b2f7d63bea697fcc1fdc8e>>--- @VkSampleMask@ values------ = See Also--- #_see_also#------ @VkBool32@, 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineMultisampleStateCreateFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',--- @VkSampleMask@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineMultisampleStateCreateInfo = VkPipelineMultisampleStateCreateInfo- { -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineMultisampleStateCreateFlags- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkRasterizationSamples"- vkRasterizationSamples :: VkSampleCountFlagBits- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkSampleShadingEnable"- vkSampleShadingEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkMinSampleShading"- vkMinSampleShading :: CFloat- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkPSampleMask"- vkPSampleMask :: Ptr VkSampleMask- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkAlphaToCoverageEnable"- vkAlphaToCoverageEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineMultisampleStateCreateInfo" "vkAlphaToOneEnable"- vkAlphaToOneEnable :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPipelineMultisampleStateCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineMultisampleStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkRasterizationSamples (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkSampleShadingEnable (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkMinSampleShading (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPSampleMask (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkAlphaToCoverageEnable (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 44) (vkAlphaToOneEnable (poked :: VkPipelineMultisampleStateCreateInfo))--- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline--- color blend attachment state------ = Description--- #_description#------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-dualSrcBlend dual source blending>--- feature is not enabled, @srcColorBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If the--- <{html_spec_relative}#features-features-dualSrcBlend dual source blending>--- feature is not enabled, @dstColorBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If the--- <{html_spec_relative}#features-features-dualSrcBlend dual source blending>--- feature is not enabled, @srcAlphaBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If the--- <{html_spec_relative}#features-features-dualSrcBlend dual source blending>--- feature is not enabled, @dstAlphaBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ == Valid Usage (Implicit)------ - @srcColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @dstColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @colorBlendOp@ /must/ be a valid 'VkBlendOp' value------ - @srcAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @dstAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @alphaBlendOp@ /must/ be a valid 'VkBlendOp' value------ - @colorWriteMask@ /must/ be a valid combination of--- 'VkColorComponentFlagBits' values------ = See Also--- #_see_also#------ 'VkBlendFactor', 'VkBlendOp', @VkBool32@, 'VkColorComponentFlags',--- 'VkPipelineColorBlendStateCreateInfo'-data VkPipelineColorBlendAttachmentState = VkPipelineColorBlendAttachmentState- { -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkBlendEnable"- vkBlendEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkSrcColorBlendFactor"- vkSrcColorBlendFactor :: VkBlendFactor- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkDstColorBlendFactor"- vkDstColorBlendFactor :: VkBlendFactor- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkColorBlendOp"- vkColorBlendOp :: VkBlendOp- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkSrcAlphaBlendFactor"- vkSrcAlphaBlendFactor :: VkBlendFactor- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkDstAlphaBlendFactor"- vkDstAlphaBlendFactor :: VkBlendFactor- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkAlphaBlendOp"- vkAlphaBlendOp :: VkBlendOp- , -- No documentation found for Nested "VkPipelineColorBlendAttachmentState" "vkColorWriteMask"- vkColorWriteMask :: VkColorComponentFlags- }- deriving (Eq, Show)--instance Storable VkPipelineColorBlendAttachmentState where- sizeOf ~_ = 32- alignment ~_ = 4- peek ptr = VkPipelineColorBlendAttachmentState <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBlendEnable (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 4) (vkSrcColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 8) (vkDstColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 12) (vkColorBlendOp (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 16) (vkSrcAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 20) (vkDstAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 24) (vkAlphaBlendOp (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 28) (vkColorWriteMask (poked :: VkPipelineColorBlendAttachmentState))--- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of--- a newly created pipeline color blend state------ = Description--- #_description#------ Each element of the @pAttachments@ array is a--- 'VkPipelineColorBlendAttachmentState' structure specifying per-target--- blending state for each individual color attachment. If the--- <{html_spec_relative}#features-features-independentBlend independent blending>--- feature is not enabled on the device, all--- 'VkPipelineColorBlendAttachmentState' elements in the @pAttachments@--- array /must/ be identical.------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-independentBlend independent blending>--- feature is not enabled, all elements of @pAttachments@ /must/ be--- identical------ - If the--- <{html_spec_relative}#features-features-logicOp logic operations>--- feature is not enabled, @logicOpEnable@ /must/ be @VK_FALSE@------ - If @logicOpEnable@ is @VK_TRUE@, @logicOp@ /must/ be a valid--- 'VkLogicOp' value------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPipelineColorBlendAdvancedStateCreateInfoEXT'------ - @flags@ /must/ be @0@------ - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid--- pointer to an array of @attachmentCount@ valid--- @VkPipelineColorBlendAttachmentState@ structures------ = See Also--- #_see_also#------ @VkBool32@, 'VkGraphicsPipelineCreateInfo', 'VkLogicOp',--- 'VkPipelineColorBlendAttachmentState',--- 'VkPipelineColorBlendStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineColorBlendStateCreateInfo = VkPipelineColorBlendStateCreateInfo- { -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineColorBlendStateCreateFlags- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkLogicOpEnable"- vkLogicOpEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkLogicOp"- vkLogicOp :: VkLogicOp- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkAttachmentCount"- vkAttachmentCount :: Word32- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkPAttachments"- vkPAttachments :: Ptr VkPipelineColorBlendAttachmentState- , -- No documentation found for Nested "VkPipelineColorBlendStateCreateInfo" "vkBlendConstants"- vkBlendConstants :: Vector 4 CFloat- }- deriving (Eq, Show)--instance Storable VkPipelineColorBlendStateCreateInfo where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkPipelineColorBlendStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkLogicOpEnable (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkLogicOp (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkAttachmentCount (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPAttachments (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkBlendConstants (poked :: VkPipelineColorBlendStateCreateInfo))--- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a--- newly created pipeline dynamic state------ = Description--- #_description#------ == Valid Usage------ - Each element of @pDynamicStates@ /must/ be unique------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @pDynamicStates@ /must/ be a valid pointer to an array of--- @dynamicStateCount@ valid 'VkDynamicState' values------ - @dynamicStateCount@ /must/ be greater than @0@------ = See Also--- #_see_also#------ 'VkDynamicState', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineDynamicStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineDynamicStateCreateInfo = VkPipelineDynamicStateCreateInfo- { -- No documentation found for Nested "VkPipelineDynamicStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineDynamicStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineDynamicStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineDynamicStateCreateFlags- , -- No documentation found for Nested "VkPipelineDynamicStateCreateInfo" "vkDynamicStateCount"- vkDynamicStateCount :: Word32- , -- No documentation found for Nested "VkPipelineDynamicStateCreateInfo" "vkPDynamicStates"- vkPDynamicStates :: Ptr VkDynamicState- }- deriving (Eq, Show)--instance Storable VkPipelineDynamicStateCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineDynamicStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDynamicStateCount (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPDynamicStates (poked :: VkPipelineDynamicStateCreateInfo))--- | VkStencilOpState - Structure specifying stencil operation state------ = Description--- #_description#------ == Valid Usage (Implicit)------ - @failOp@ /must/ be a valid 'VkStencilOp' value------ - @passOp@ /must/ be a valid 'VkStencilOp' value------ - @depthFailOp@ /must/ be a valid 'VkStencilOp' value------ - @compareOp@ /must/ be a valid 'VkCompareOp' value------ = See Also--- #_see_also#------ 'VkCompareOp', 'VkPipelineDepthStencilStateCreateInfo', 'VkStencilOp'-data VkStencilOpState = VkStencilOpState- { -- No documentation found for Nested "VkStencilOpState" "vkFailOp"- vkFailOp :: VkStencilOp- , -- No documentation found for Nested "VkStencilOpState" "vkPassOp"- vkPassOp :: VkStencilOp- , -- No documentation found for Nested "VkStencilOpState" "vkDepthFailOp"- vkDepthFailOp :: VkStencilOp- , -- No documentation found for Nested "VkStencilOpState" "vkCompareOp"- vkCompareOp :: VkCompareOp- , -- No documentation found for Nested "VkStencilOpState" "vkCompareMask"- vkCompareMask :: Word32- , -- No documentation found for Nested "VkStencilOpState" "vkWriteMask"- vkWriteMask :: Word32- , -- No documentation found for Nested "VkStencilOpState" "vkReference"- vkReference :: Word32- }- deriving (Eq, Show)--instance Storable VkStencilOpState where- sizeOf ~_ = 28- alignment ~_ = 4- peek ptr = VkStencilOpState <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkFailOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 4) (vkPassOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 8) (vkDepthFailOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 12) (vkCompareOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 16) (vkCompareMask (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 20) (vkWriteMask (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 24) (vkReference (poked :: VkStencilOpState))--- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters--- of a newly created pipeline depth stencil state------ = Description--- #_description#------ == Valid Usage------ - If the--- <{html_spec_relative}#features-features-depthBounds depth bounds testing>--- feature is not enabled, @depthBoundsTestEnable@ /must/ be @VK_FALSE@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @depthCompareOp@ /must/ be a valid 'VkCompareOp' value------ - @front@ /must/ be a valid @VkStencilOpState@ structure------ - @back@ /must/ be a valid @VkStencilOpState@ structure------ = See Also--- #_see_also#------ @VkBool32@, 'VkCompareOp', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineDepthStencilStateCreateFlags', 'VkStencilOpState',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineDepthStencilStateCreateInfo = VkPipelineDepthStencilStateCreateInfo- { -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkFlags"- vkFlags :: VkPipelineDepthStencilStateCreateFlags- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkDepthTestEnable"- vkDepthTestEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkDepthWriteEnable"- vkDepthWriteEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkDepthCompareOp"- vkDepthCompareOp :: VkCompareOp- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkDepthBoundsTestEnable"- vkDepthBoundsTestEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkStencilTestEnable"- vkStencilTestEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkFront"- vkFront :: VkStencilOpState- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkBack"- vkBack :: VkStencilOpState- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkMinDepthBounds"- vkMinDepthBounds :: CFloat- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "vkMaxDepthBounds"- vkMaxDepthBounds :: CFloat- }- deriving (Eq, Show)--instance Storable VkPipelineDepthStencilStateCreateInfo where- sizeOf ~_ = 104- alignment ~_ = 8- peek ptr = VkPipelineDepthStencilStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDepthTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkDepthWriteEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkDepthCompareOp (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkDepthBoundsTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 36) (vkStencilTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkFront (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 68) (vkBack (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 96) (vkMinDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 100) (vkMaxDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))--- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a--- newly created graphics pipeline------ = Description--- #_description#------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <{html_spec_relative}#pipelines-pipeline-derivatives Pipeline Derivatives>.------ @pStages@ points to an array of 'VkPipelineShaderStageCreateInfo'--- structures, which were previously described in--- <{html_spec_relative}#pipelines-compute Compute Pipelines>.------ @pDynamicState@ points to a structure of type--- 'VkPipelineDynamicStateCreateInfo'.------ == Valid Usage------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a--- valid handle to a graphics @VkPipeline@------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be a valid index into the calling--- command’s @pCreateInfos@ parameter------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be -1------ - The @stage@ member of each element of @pStages@ /must/ be unique------ - The @stage@ member of one element of @pStages@ /must/ be--- @VK_SHADER_STAGE_VERTEX_BIT@------ - The @stage@ member of each element of @pStages@ /must/ not be--- @VK_SHADER_STAGE_COMPUTE_BIT@------ - If @pStages@ includes a tessellation control shader stage, it /must/--- include a tessellation evaluation shader stage------ - If @pStages@ includes a tessellation evaluation shader stage, it--- /must/ include a tessellation control shader stage------ - If @pStages@ includes a tessellation control shader stage and a--- tessellation evaluation shader stage, @pTessellationState@ /must/ be--- a valid pointer to a valid @VkPipelineTessellationStateCreateInfo@--- structure------ - If @pStages@ includes tessellation shader stages, the shader code of--- at least one stage /must/ contain an @OpExecutionMode@ instruction--- that specifies the type of subdivision in the pipeline------ - If @pStages@ includes tessellation shader stages, and the shader--- code of both stages contain an @OpExecutionMode@ instruction that--- specifies the type of subdivision in the pipeline, they /must/ both--- specify the same subdivision mode------ - If @pStages@ includes tessellation shader stages, the shader code of--- at least one stage /must/ contain an @OpExecutionMode@ instruction--- that specifies the output patch size in the pipeline------ - If @pStages@ includes tessellation shader stages, and the shader--- code of both contain an @OpExecutionMode@ instruction that specifies--- the out patch size in the pipeline, they /must/ both specify the--- same patch size------ - If @pStages@ includes tessellation shader stages, the @topology@--- member of @pInputAssembly@ /must/ be--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@------ - If the @topology@ member of @pInputAssembly@ is--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @pStages@ /must/ include--- tessellation shader stages------ - If @pStages@ includes a geometry shader stage, and does not include--- any tessellation shader stages, its shader code /must/ contain an--- @OpExecutionMode@ instruction that specifies an input primitive type--- that is <{html_spec_relative}#shaders-geometry-execution compatible>--- with the primitive topology specified in @pInputAssembly@------ - If @pStages@ includes a geometry shader stage, and also includes--- tessellation shader stages, its shader code /must/ contain an--- @OpExecutionMode@ instruction that specifies an input primitive type--- that is <{html_spec_relative}#shaders-geometry-execution compatible>--- with the primitive topology that is output by the tessellation--- stages------ - If @pStages@ includes a fragment shader stage and a geometry shader--- stage, and the fragment shader code reads from an input variable--- that is decorated with @PrimitiveID@, then the geometry shader code--- /must/ write to a matching output variable, decorated with--- @PrimitiveID@, in all execution paths------ - If @pStages@ includes a fragment shader stage, its shader code--- /must/ not read from any input attachment that is defined as--- @VK_ATTACHMENT_UNUSED@ in @subpass@------ - The shader code for the entry points identified by @pStages@, and--- the rest of the state identified by this structure /must/ adhere to--- the pipeline linking rules described in the--- <{html_spec_relative}#interfaces Shader Interfaces> chapter------ - If rasterization is not disabled and @subpass@ uses a depth\/stencil--- attachment in @renderPass@ that has a layout of--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ in the--- @VkAttachmentReference@ defined by @subpass@, the @depthWriteEnable@--- member of @pDepthStencilState@ /must/ be @VK_FALSE@------ - If rasterization is not disabled and @subpass@ uses a depth\/stencil--- attachment in @renderPass@ that has a layout of--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ in the--- @VkAttachmentReference@ defined by @subpass@, the @failOp@, @passOp@--- and @depthFailOp@ members of each of the @front@ and @back@ members--- of @pDepthStencilState@ /must/ be @VK_STENCIL_OP_KEEP@------ - If rasterization is not disabled and the subpass uses color--- attachments, then for each color attachment in the subpass the--- @blendEnable@ member of the corresponding element of the--- @pAttachment@ member of @pColorBlendState@ /must/ be @VK_FALSE@ if--- the @format@ of the attachment does not support color blend--- operations, as specified by the--- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ or--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ - If rasterization is not disabled and the subpass uses color--- attachments, the @attachmentCount@ member of @pColorBlendState@--- /must/ be equal to the @colorAttachmentCount@ used to create--- @subpass@------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_VIEWPORT@, the @pViewports@ member of--- @pViewportState@ /must/ be a valid pointer to an array of--- @pViewportState@::@viewportCount@ @VkViewport@ structures------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_SCISSOR@, the @pScissors@ member of--- @pViewportState@ /must/ be a valid pointer to an array of--- @pViewportState@::@scissorCount@ @VkRect2D@ structures------ - If the wide lines feature is not enabled, and no element of the--- @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_LINE_WIDTH@, the @lineWidth@ member of--- @pRasterizationState@ /must/ be @1.0@------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, @pViewportState@ /must/ be a valid pointer to a valid--- @VkPipelineViewportStateCreateInfo@ structure------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, @pMultisampleState@ /must/ be a valid pointer to a valid--- @VkPipelineMultisampleStateCreateInfo@ structure------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, and @subpass@ uses a depth\/stencil attachment,--- @pDepthStencilState@ /must/ be a valid pointer to a valid--- @VkPipelineDepthStencilStateCreateInfo@ structure------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, and @subpass@ uses color attachments, @pColorBlendState@--- /must/ be a valid pointer to a valid--- @VkPipelineColorBlendStateCreateInfo@ structure------ - If the depth bias clamping feature is not enabled, no element of the--- @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_DEPTH_BIAS@, and the @depthBiasEnable@ member of--- @pRasterizationState@ is @VK_TRUE@, the @depthBiasClamp@ member of--- @pRasterizationState@ /must/ be @0.0@------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_DEPTH_BOUNDS@, and the @depthBoundsTestEnable@--- member of @pDepthStencilState@ is @VK_TRUE@, the @minDepthBounds@--- and @maxDepthBounds@ members of @pDepthStencilState@ /must/ be--- between @0.0@ and @1.0@, inclusive------ - @layout@ /must/ be--- <{html_spec_relative}#descriptorsets-pipelinelayout-consistency consistent>--- with all shaders specified in @pStages@------ - If @subpass@ uses color and\/or depth\/stencil attachments, then the--- @rasterizationSamples@ member of @pMultisampleState@ /must/ be the--- same as the sample count for those subpass attachments------ - If @subpass@ does not use any color and\/or depth\/stencil--- attachments, then the @rasterizationSamples@ member of--- @pMultisampleState@ /must/ follow the rules for a--- <{html_spec_relative}#renderpass-noattachments zero-attachment subpass>------ - @subpass@ /must/ be a valid subpass within @renderPass@------ - The number of resources in @layout@ accessible to each shader stage--- that is used by the pipeline /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageResources@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT'------ - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'--- values------ - @pStages@ /must/ be a valid pointer to an array of @stageCount@--- valid @VkPipelineShaderStageCreateInfo@ structures------ - @pVertexInputState@ /must/ be a valid pointer to a valid--- @VkPipelineVertexInputStateCreateInfo@ structure------ - @pInputAssemblyState@ /must/ be a valid pointer to a valid--- @VkPipelineInputAssemblyStateCreateInfo@ structure------ - @pRasterizationState@ /must/ be a valid pointer to a valid--- @VkPipelineRasterizationStateCreateInfo@ structure------ - If @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid--- pointer to a valid @VkPipelineDynamicStateCreateInfo@ structure------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - @renderPass@ /must/ be a valid @VkRenderPass@ handle------ - @stageCount@ /must/ be greater than @0@------ - Each of @basePipelineHandle@, @layout@, and @renderPass@ that are--- valid handles /must/ have been created, allocated, or retrieved from--- the same @VkDevice@------ = See Also--- #_see_also#------ 'VkPipeline', 'VkPipelineColorBlendStateCreateInfo',--- 'VkPipelineCreateFlags', 'VkPipelineDepthStencilStateCreateInfo',--- 'VkPipelineDynamicStateCreateInfo',--- 'VkPipelineInputAssemblyStateCreateInfo', 'VkPipelineLayout',--- 'VkPipelineMultisampleStateCreateInfo',--- 'VkPipelineRasterizationStateCreateInfo',--- 'VkPipelineShaderStageCreateInfo',--- 'VkPipelineTessellationStateCreateInfo',--- 'VkPipelineVertexInputStateCreateInfo',--- 'VkPipelineViewportStateCreateInfo', 'VkRenderPass',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateGraphicsPipelines'-data VkGraphicsPipelineCreateInfo = VkGraphicsPipelineCreateInfo- { -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkSType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkFlags"- vkFlags :: VkPipelineCreateFlags- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkStageCount"- vkStageCount :: Word32- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPStages"- vkPStages :: Ptr VkPipelineShaderStageCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPVertexInputState"- vkPVertexInputState :: Ptr VkPipelineVertexInputStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPInputAssemblyState"- vkPInputAssemblyState :: Ptr VkPipelineInputAssemblyStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPTessellationState"- vkPTessellationState :: Ptr VkPipelineTessellationStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPViewportState"- vkPViewportState :: Ptr VkPipelineViewportStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPRasterizationState"- vkPRasterizationState :: Ptr VkPipelineRasterizationStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPMultisampleState"- vkPMultisampleState :: Ptr VkPipelineMultisampleStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPDepthStencilState"- vkPDepthStencilState :: Ptr VkPipelineDepthStencilStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPColorBlendState"- vkPColorBlendState :: Ptr VkPipelineColorBlendStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkPDynamicState"- vkPDynamicState :: Ptr VkPipelineDynamicStateCreateInfo- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkLayout"- vkLayout :: VkPipelineLayout- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkRenderPass"- vkRenderPass :: VkRenderPass- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkSubpass"- vkSubpass :: Word32- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkBasePipelineHandle"- vkBasePipelineHandle :: VkPipeline- , -- No documentation found for Nested "VkGraphicsPipelineCreateInfo" "vkBasePipelineIndex"- vkBasePipelineIndex :: Int32- }- deriving (Eq, Show)--instance Storable VkGraphicsPipelineCreateInfo where- sizeOf ~_ = 144- alignment ~_ = 8- peek ptr = VkGraphicsPipelineCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 104)- <*> peek (ptr `plusPtr` 112)- <*> peek (ptr `plusPtr` 120)- <*> peek (ptr `plusPtr` 128)- <*> peek (ptr `plusPtr` 136)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 20) (vkStageCount (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPStages (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPVertexInputState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPInputAssemblyState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 48) (vkPTessellationState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPViewportState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 64) (vkPRasterizationState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 72) (vkPMultisampleState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 80) (vkPDepthStencilState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 88) (vkPColorBlendState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 96) (vkPDynamicState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 104) (vkLayout (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 112) (vkRenderPass (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 120) (vkSubpass (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 128) (vkBasePipelineHandle (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 136) (vkBasePipelineIndex (poked :: VkGraphicsPipelineCreateInfo))--- | VkPipelineCreateFlags - Bitmask of VkPipelineCreateFlagBits------ = Description--- #_description#------ @VkPipelineCreateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkPipelineCreateFlagBits'.------ = See Also--- #_see_also#------ 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineCreateFlagBits'-type VkPipelineCreateFlags = VkPipelineCreateFlagBits--- | VkColorComponentFlags - Bitmask of VkColorComponentFlagBits------ = Description--- #_description#------ @VkColorComponentFlags@ is a bitmask type for setting a mask of zero or--- more 'VkColorComponentFlagBits'.------ = See Also--- #_see_also#------ 'VkColorComponentFlagBits', 'VkPipelineColorBlendAttachmentState'-type VkColorComponentFlags = VkColorComponentFlagBits--- | VkCullModeFlags - Bitmask of VkCullModeFlagBits------ = Description--- #_description#------ @VkCullModeFlags@ is a bitmask type for setting a mask of zero or more--- 'VkCullModeFlagBits'.------ = See Also--- #_see_also#------ 'VkCullModeFlagBits', 'VkPipelineRasterizationStateCreateInfo'-type VkCullModeFlags = VkCullModeFlagBits--- | VkSampleMask - Mask of sample coverage information------ = Description--- #_description#------ = See Also--- #_see_also#+--+-- The semantics of each enum value is described in the table below:+--+-- +--------------------------------------------+---------------------+--------++-- | VkBlendFactor | RGB Blend Factors | Alpha |+-- | | (Sr,Sg,Sb) or | Blend |+-- | | (Dr,Dg,Db) | Factor |+-- | | | (Sa or |+-- | | | Da) |+-- +============================================+=====================+========++-- | @VK_BLEND_FACTOR_ZERO@ | (0,0,0) | 0 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE@ | (1,1,1) | 1 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_SRC_COLOR@ | (Rs0,Gs0,Bs0) | As0 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR@ | (1-Rs0,1-Gs0,1-Bs0) | 1-As0 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_DST_COLOR@ | (Rd,Gd,Bd) | Ad |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR@ | (1-Rd,1-Gd,1-Bd) | 1-Ad |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_SRC_ALPHA@ | (As0,As0,As0) | As0 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA@ | (1-As0,1-As0,1-As0) | 1-As0 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_DST_ALPHA@ | (Ad,Ad,Ad) | Ad |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA@ | (1-Ad,1-Ad,1-Ad) | 1-Ad |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_CONSTANT_COLOR@ | (Rc,Gc,Bc) | Ac |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR@ | (1-Rc,1-Gc,1-Bc) | 1-Ac |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_CONSTANT_ALPHA@ | (Ac,Ac,Ac) | Ac |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA@ | (1-Ac,1-Ac,1-Ac) | 1-Ac |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_SRC_ALPHA_SATURATE@ | (f,f,f); f = | 1 |+-- | | min(As0,1-Ad) | |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_SRC1_COLOR@ | (Rs1,Gs1,Bs1) | As1 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@ | (1-Rs1,1-Gs1,1-Bs1) | 1-As1 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_SRC1_ALPHA@ | (As1,As1,As1) | As1 |+-- +--------------------------------------------+---------------------+--------++-- | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ | (1-As1,1-As1,1-As1) | 1-As1 |+-- +--------------------------------------------+---------------------+--------++--+-- Blend Factors+--+-- In this table, the following conventions are used:+--+-- - Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A+-- components, respectively, for the fragment output location+-- corresponding to the color attachment being blended.+--+-- - Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A+-- components, respectively, used in dual source blending modes, for+-- the fragment output location corresponding to the color attachment+-- being blended.+--+-- - Rd,Gd,Bd and Ad represent the R, G, B, and A components of the+-- destination color. That is, the color currently in the corresponding+-- color attachment for this fragment\/sample.+--+-- - Rc,Gc,Bc and Ac represent the blend constant R, G, B, and A+-- components, respectively.+--+-- = See Also+--+-- 'VkPipelineColorBlendAttachmentState'+newtype VkBlendFactor = VkBlendFactor Int32+ deriving (Eq, Ord, Storable)++instance Show VkBlendFactor where+ showsPrec _ VK_BLEND_FACTOR_ZERO = showString "VK_BLEND_FACTOR_ZERO"+ showsPrec _ VK_BLEND_FACTOR_ONE = showString "VK_BLEND_FACTOR_ONE"+ showsPrec _ VK_BLEND_FACTOR_SRC_COLOR = showString "VK_BLEND_FACTOR_SRC_COLOR"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"+ showsPrec _ VK_BLEND_FACTOR_DST_COLOR = showString "VK_BLEND_FACTOR_DST_COLOR"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"+ showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA = showString "VK_BLEND_FACTOR_SRC_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_DST_ALPHA = showString "VK_BLEND_FACTOR_DST_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_CONSTANT_COLOR"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"+ showsPrec _ VK_BLEND_FACTOR_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_CONSTANT_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = showString "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"+ showsPrec _ VK_BLEND_FACTOR_SRC1_COLOR = showString "VK_BLEND_FACTOR_SRC1_COLOR"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"+ showsPrec _ VK_BLEND_FACTOR_SRC1_ALPHA = showString "VK_BLEND_FACTOR_SRC1_ALPHA"+ showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"+ showsPrec p (VkBlendFactor x) = showParen (p >= 11) (showString "VkBlendFactor " . showsPrec 11 x)++instance Read VkBlendFactor where+ readPrec = parens ( choose [ ("VK_BLEND_FACTOR_ZERO", pure VK_BLEND_FACTOR_ZERO)+ , ("VK_BLEND_FACTOR_ONE", pure VK_BLEND_FACTOR_ONE)+ , ("VK_BLEND_FACTOR_SRC_COLOR", pure VK_BLEND_FACTOR_SRC_COLOR)+ , ("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR)+ , ("VK_BLEND_FACTOR_DST_COLOR", pure VK_BLEND_FACTOR_DST_COLOR)+ , ("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR)+ , ("VK_BLEND_FACTOR_SRC_ALPHA", pure VK_BLEND_FACTOR_SRC_ALPHA)+ , ("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA)+ , ("VK_BLEND_FACTOR_DST_ALPHA", pure VK_BLEND_FACTOR_DST_ALPHA)+ , ("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA)+ , ("VK_BLEND_FACTOR_CONSTANT_COLOR", pure VK_BLEND_FACTOR_CONSTANT_COLOR)+ , ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR)+ , ("VK_BLEND_FACTOR_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_CONSTANT_ALPHA)+ , ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA)+ , ("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE", pure VK_BLEND_FACTOR_SRC_ALPHA_SATURATE)+ , ("VK_BLEND_FACTOR_SRC1_COLOR", pure VK_BLEND_FACTOR_SRC1_COLOR)+ , ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR)+ , ("VK_BLEND_FACTOR_SRC1_ALPHA", pure VK_BLEND_FACTOR_SRC1_ALPHA)+ , ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)+ ] ++++ prec 10 (do+ expectP (Ident "VkBlendFactor")+ v <- step readPrec+ pure (VkBlendFactor v)+ )+ )++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ZERO"+pattern VK_BLEND_FACTOR_ZERO :: VkBlendFactor+pattern VK_BLEND_FACTOR_ZERO = VkBlendFactor 0++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE"+pattern VK_BLEND_FACTOR_ONE :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE = VkBlendFactor 1++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_COLOR"+pattern VK_BLEND_FACTOR_SRC_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_SRC_COLOR = VkBlendFactor 2++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = VkBlendFactor 3++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_COLOR"+pattern VK_BLEND_FACTOR_DST_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_DST_COLOR = VkBlendFactor 4++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"+pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = VkBlendFactor 5++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA"+pattern VK_BLEND_FACTOR_SRC_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_SRC_ALPHA = VkBlendFactor 6++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = VkBlendFactor 7++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_ALPHA"+pattern VK_BLEND_FACTOR_DST_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_DST_ALPHA = VkBlendFactor 8++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"+pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = VkBlendFactor 9++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_COLOR"+pattern VK_BLEND_FACTOR_CONSTANT_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_CONSTANT_COLOR = VkBlendFactor 10++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"+pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = VkBlendFactor 11++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_ALPHA"+pattern VK_BLEND_FACTOR_CONSTANT_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_CONSTANT_ALPHA = VkBlendFactor 12++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"+pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = VkBlendFactor 13++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"+pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE :: VkBlendFactor+pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = VkBlendFactor 14++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_COLOR"+pattern VK_BLEND_FACTOR_SRC1_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_SRC1_COLOR = VkBlendFactor 15++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = VkBlendFactor 16++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_ALPHA"+pattern VK_BLEND_FACTOR_SRC1_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_SRC1_ALPHA = VkBlendFactor 17++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: VkBlendFactor+pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = VkBlendFactor 18+-- ** VkBlendOp++-- | VkBlendOp - Framebuffer blending operations+--+-- = Description+--+-- The semantics of each basic blend operations is described in the table+-- below:+--+-- +--------------------------------+--------------------+----------------++-- | VkBlendOp | RGB Components | Alpha |+-- | | | Component |+-- +================================+====================+================++-- | @VK_BLEND_OP_ADD@ | R = Rs0 × Sr + Rd | A = As0 × Sa + |+-- | | × Dr | Ad × Da |+-- | | G = Gs0 × Sg + Gd | |+-- | | × Dg | |+-- | | B = Bs0 × Sb + Bd | |+-- | | × Db | |+-- +--------------------------------+--------------------+----------------++-- | @VK_BLEND_OP_SUBTRACT@ | R = Rs0 × Sr - Rd | A = As0 × Sa - |+-- | | × Dr | Ad × Da |+-- | | G = Gs0 × Sg - Gd | |+-- | | × Dg | |+-- | | B = Bs0 × Sb - Bd | |+-- | | × Db | |+-- +--------------------------------+--------------------+----------------++-- | @VK_BLEND_OP_REVERSE_SUBTRACT@ | R = Rd × Dr - Rs0 | A = Ad × Da - |+-- | | × Sr | As0 × Sa |+-- | | G = Gd × Dg - Gs0 | |+-- | | × Sg | |+-- | | B = Bd × Db - Bs0 | |+-- | | × Sb | |+-- +--------------------------------+--------------------+----------------++-- | @VK_BLEND_OP_MIN@ | R = min(Rs0,Rd) | A = |+-- | | G = min(Gs0,Gd) | min(As0,Ad) |+-- | | B = min(Bs0,Bd) | |+-- +--------------------------------+--------------------+----------------++-- | @VK_BLEND_OP_MAX@ | R = max(Rs0,Rd) | A = |+-- | | G = max(Gs0,Gd) | max(As0,Ad) |+-- | | B = max(Bs0,Bd) | |+-- +--------------------------------+--------------------+----------------++--+-- Basic Blend Operations+--+-- In this table, the following conventions are used:+--+-- - Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and+-- A components, respectively.+--+-- - Rd, Gd, Bd and Ad represent the R, G, B, and A components of the+-- destination color. That is, the color currently in the corresponding+-- color attachment for this fragment\/sample.+--+-- - Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A+-- components, respectively.+--+-- - Dr, Dg, Db and Da represent the destination blend factor R, G, B,+-- and A components, respectively.+--+-- The blending operation produces a new set of values R, G, B and A, which+-- are written to the framebuffer attachment. If blending is not enabled+-- for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and+-- As0, respectively.+--+-- If the color attachment is fixed-point, the components of the source and+-- destination values and blend factors are each clamped to [0,1] or [-1,1]+-- respectively for an unsigned normalized or signed normalized color+-- attachment prior to evaluating the blend operations. If the color+-- attachment is floating-point, no clamping occurs.+--+-- = See Also+--+-- 'VkPipelineColorBlendAttachmentState'+newtype VkBlendOp = VkBlendOp Int32+ deriving (Eq, Ord, Storable)++instance Show VkBlendOp where+ showsPrec _ VK_BLEND_OP_ADD = showString "VK_BLEND_OP_ADD"+ showsPrec _ VK_BLEND_OP_SUBTRACT = showString "VK_BLEND_OP_SUBTRACT"+ showsPrec _ VK_BLEND_OP_REVERSE_SUBTRACT = showString "VK_BLEND_OP_REVERSE_SUBTRACT"+ showsPrec _ VK_BLEND_OP_MIN = showString "VK_BLEND_OP_MIN"+ showsPrec _ VK_BLEND_OP_MAX = showString "VK_BLEND_OP_MAX"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkBlendOp 1000148000) = showString "VK_BLEND_OP_ZERO_EXT"+ showsPrec _ (VkBlendOp 1000148001) = showString "VK_BLEND_OP_SRC_EXT"+ showsPrec _ (VkBlendOp 1000148002) = showString "VK_BLEND_OP_DST_EXT"+ showsPrec _ (VkBlendOp 1000148003) = showString "VK_BLEND_OP_SRC_OVER_EXT"+ showsPrec _ (VkBlendOp 1000148004) = showString "VK_BLEND_OP_DST_OVER_EXT"+ showsPrec _ (VkBlendOp 1000148005) = showString "VK_BLEND_OP_SRC_IN_EXT"+ showsPrec _ (VkBlendOp 1000148006) = showString "VK_BLEND_OP_DST_IN_EXT"+ showsPrec _ (VkBlendOp 1000148007) = showString "VK_BLEND_OP_SRC_OUT_EXT"+ showsPrec _ (VkBlendOp 1000148008) = showString "VK_BLEND_OP_DST_OUT_EXT"+ showsPrec _ (VkBlendOp 1000148009) = showString "VK_BLEND_OP_SRC_ATOP_EXT"+ showsPrec _ (VkBlendOp 1000148010) = showString "VK_BLEND_OP_DST_ATOP_EXT"+ showsPrec _ (VkBlendOp 1000148011) = showString "VK_BLEND_OP_XOR_EXT"+ showsPrec _ (VkBlendOp 1000148012) = showString "VK_BLEND_OP_MULTIPLY_EXT"+ showsPrec _ (VkBlendOp 1000148013) = showString "VK_BLEND_OP_SCREEN_EXT"+ showsPrec _ (VkBlendOp 1000148014) = showString "VK_BLEND_OP_OVERLAY_EXT"+ showsPrec _ (VkBlendOp 1000148015) = showString "VK_BLEND_OP_DARKEN_EXT"+ showsPrec _ (VkBlendOp 1000148016) = showString "VK_BLEND_OP_LIGHTEN_EXT"+ showsPrec _ (VkBlendOp 1000148017) = showString "VK_BLEND_OP_COLORDODGE_EXT"+ showsPrec _ (VkBlendOp 1000148018) = showString "VK_BLEND_OP_COLORBURN_EXT"+ showsPrec _ (VkBlendOp 1000148019) = showString "VK_BLEND_OP_HARDLIGHT_EXT"+ showsPrec _ (VkBlendOp 1000148020) = showString "VK_BLEND_OP_SOFTLIGHT_EXT"+ showsPrec _ (VkBlendOp 1000148021) = showString "VK_BLEND_OP_DIFFERENCE_EXT"+ showsPrec _ (VkBlendOp 1000148022) = showString "VK_BLEND_OP_EXCLUSION_EXT"+ showsPrec _ (VkBlendOp 1000148023) = showString "VK_BLEND_OP_INVERT_EXT"+ showsPrec _ (VkBlendOp 1000148024) = showString "VK_BLEND_OP_INVERT_RGB_EXT"+ showsPrec _ (VkBlendOp 1000148025) = showString "VK_BLEND_OP_LINEARDODGE_EXT"+ showsPrec _ (VkBlendOp 1000148026) = showString "VK_BLEND_OP_LINEARBURN_EXT"+ showsPrec _ (VkBlendOp 1000148027) = showString "VK_BLEND_OP_VIVIDLIGHT_EXT"+ showsPrec _ (VkBlendOp 1000148028) = showString "VK_BLEND_OP_LINEARLIGHT_EXT"+ showsPrec _ (VkBlendOp 1000148029) = showString "VK_BLEND_OP_PINLIGHT_EXT"+ showsPrec _ (VkBlendOp 1000148030) = showString "VK_BLEND_OP_HARDMIX_EXT"+ showsPrec _ (VkBlendOp 1000148031) = showString "VK_BLEND_OP_HSL_HUE_EXT"+ showsPrec _ (VkBlendOp 1000148032) = showString "VK_BLEND_OP_HSL_SATURATION_EXT"+ showsPrec _ (VkBlendOp 1000148033) = showString "VK_BLEND_OP_HSL_COLOR_EXT"+ showsPrec _ (VkBlendOp 1000148034) = showString "VK_BLEND_OP_HSL_LUMINOSITY_EXT"+ showsPrec _ (VkBlendOp 1000148035) = showString "VK_BLEND_OP_PLUS_EXT"+ showsPrec _ (VkBlendOp 1000148036) = showString "VK_BLEND_OP_PLUS_CLAMPED_EXT"+ showsPrec _ (VkBlendOp 1000148037) = showString "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"+ showsPrec _ (VkBlendOp 1000148038) = showString "VK_BLEND_OP_PLUS_DARKER_EXT"+ showsPrec _ (VkBlendOp 1000148039) = showString "VK_BLEND_OP_MINUS_EXT"+ showsPrec _ (VkBlendOp 1000148040) = showString "VK_BLEND_OP_MINUS_CLAMPED_EXT"+ showsPrec _ (VkBlendOp 1000148041) = showString "VK_BLEND_OP_CONTRAST_EXT"+ showsPrec _ (VkBlendOp 1000148042) = showString "VK_BLEND_OP_INVERT_OVG_EXT"+ showsPrec _ (VkBlendOp 1000148043) = showString "VK_BLEND_OP_RED_EXT"+ showsPrec _ (VkBlendOp 1000148044) = showString "VK_BLEND_OP_GREEN_EXT"+ showsPrec _ (VkBlendOp 1000148045) = showString "VK_BLEND_OP_BLUE_EXT"+ showsPrec p (VkBlendOp x) = showParen (p >= 11) (showString "VkBlendOp " . showsPrec 11 x)++instance Read VkBlendOp where+ readPrec = parens ( choose [ ("VK_BLEND_OP_ADD", pure VK_BLEND_OP_ADD)+ , ("VK_BLEND_OP_SUBTRACT", pure VK_BLEND_OP_SUBTRACT)+ , ("VK_BLEND_OP_REVERSE_SUBTRACT", pure VK_BLEND_OP_REVERSE_SUBTRACT)+ , ("VK_BLEND_OP_MIN", pure VK_BLEND_OP_MIN)+ , ("VK_BLEND_OP_MAX", pure VK_BLEND_OP_MAX)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_BLEND_OP_ZERO_EXT", pure (VkBlendOp 1000148000))+ , ("VK_BLEND_OP_SRC_EXT", pure (VkBlendOp 1000148001))+ , ("VK_BLEND_OP_DST_EXT", pure (VkBlendOp 1000148002))+ , ("VK_BLEND_OP_SRC_OVER_EXT", pure (VkBlendOp 1000148003))+ , ("VK_BLEND_OP_DST_OVER_EXT", pure (VkBlendOp 1000148004))+ , ("VK_BLEND_OP_SRC_IN_EXT", pure (VkBlendOp 1000148005))+ , ("VK_BLEND_OP_DST_IN_EXT", pure (VkBlendOp 1000148006))+ , ("VK_BLEND_OP_SRC_OUT_EXT", pure (VkBlendOp 1000148007))+ , ("VK_BLEND_OP_DST_OUT_EXT", pure (VkBlendOp 1000148008))+ , ("VK_BLEND_OP_SRC_ATOP_EXT", pure (VkBlendOp 1000148009))+ , ("VK_BLEND_OP_DST_ATOP_EXT", pure (VkBlendOp 1000148010))+ , ("VK_BLEND_OP_XOR_EXT", pure (VkBlendOp 1000148011))+ , ("VK_BLEND_OP_MULTIPLY_EXT", pure (VkBlendOp 1000148012))+ , ("VK_BLEND_OP_SCREEN_EXT", pure (VkBlendOp 1000148013))+ , ("VK_BLEND_OP_OVERLAY_EXT", pure (VkBlendOp 1000148014))+ , ("VK_BLEND_OP_DARKEN_EXT", pure (VkBlendOp 1000148015))+ , ("VK_BLEND_OP_LIGHTEN_EXT", pure (VkBlendOp 1000148016))+ , ("VK_BLEND_OP_COLORDODGE_EXT", pure (VkBlendOp 1000148017))+ , ("VK_BLEND_OP_COLORBURN_EXT", pure (VkBlendOp 1000148018))+ , ("VK_BLEND_OP_HARDLIGHT_EXT", pure (VkBlendOp 1000148019))+ , ("VK_BLEND_OP_SOFTLIGHT_EXT", pure (VkBlendOp 1000148020))+ , ("VK_BLEND_OP_DIFFERENCE_EXT", pure (VkBlendOp 1000148021))+ , ("VK_BLEND_OP_EXCLUSION_EXT", pure (VkBlendOp 1000148022))+ , ("VK_BLEND_OP_INVERT_EXT", pure (VkBlendOp 1000148023))+ , ("VK_BLEND_OP_INVERT_RGB_EXT", pure (VkBlendOp 1000148024))+ , ("VK_BLEND_OP_LINEARDODGE_EXT", pure (VkBlendOp 1000148025))+ , ("VK_BLEND_OP_LINEARBURN_EXT", pure (VkBlendOp 1000148026))+ , ("VK_BLEND_OP_VIVIDLIGHT_EXT", pure (VkBlendOp 1000148027))+ , ("VK_BLEND_OP_LINEARLIGHT_EXT", pure (VkBlendOp 1000148028))+ , ("VK_BLEND_OP_PINLIGHT_EXT", pure (VkBlendOp 1000148029))+ , ("VK_BLEND_OP_HARDMIX_EXT", pure (VkBlendOp 1000148030))+ , ("VK_BLEND_OP_HSL_HUE_EXT", pure (VkBlendOp 1000148031))+ , ("VK_BLEND_OP_HSL_SATURATION_EXT", pure (VkBlendOp 1000148032))+ , ("VK_BLEND_OP_HSL_COLOR_EXT", pure (VkBlendOp 1000148033))+ , ("VK_BLEND_OP_HSL_LUMINOSITY_EXT", pure (VkBlendOp 1000148034))+ , ("VK_BLEND_OP_PLUS_EXT", pure (VkBlendOp 1000148035))+ , ("VK_BLEND_OP_PLUS_CLAMPED_EXT", pure (VkBlendOp 1000148036))+ , ("VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", pure (VkBlendOp 1000148037))+ , ("VK_BLEND_OP_PLUS_DARKER_EXT", pure (VkBlendOp 1000148038))+ , ("VK_BLEND_OP_MINUS_EXT", pure (VkBlendOp 1000148039))+ , ("VK_BLEND_OP_MINUS_CLAMPED_EXT", pure (VkBlendOp 1000148040))+ , ("VK_BLEND_OP_CONTRAST_EXT", pure (VkBlendOp 1000148041))+ , ("VK_BLEND_OP_INVERT_OVG_EXT", pure (VkBlendOp 1000148042))+ , ("VK_BLEND_OP_RED_EXT", pure (VkBlendOp 1000148043))+ , ("VK_BLEND_OP_GREEN_EXT", pure (VkBlendOp 1000148044))+ , ("VK_BLEND_OP_BLUE_EXT", pure (VkBlendOp 1000148045))+ ] ++++ prec 10 (do+ expectP (Ident "VkBlendOp")+ v <- step readPrec+ pure (VkBlendOp v)+ )+ )++-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"+pattern VK_BLEND_OP_ADD :: VkBlendOp+pattern VK_BLEND_OP_ADD = VkBlendOp 0++-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"+pattern VK_BLEND_OP_SUBTRACT :: VkBlendOp+pattern VK_BLEND_OP_SUBTRACT = VkBlendOp 1++-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"+pattern VK_BLEND_OP_REVERSE_SUBTRACT :: VkBlendOp+pattern VK_BLEND_OP_REVERSE_SUBTRACT = VkBlendOp 2++-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"+pattern VK_BLEND_OP_MIN :: VkBlendOp+pattern VK_BLEND_OP_MIN = VkBlendOp 3++-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"+pattern VK_BLEND_OP_MAX :: VkBlendOp+pattern VK_BLEND_OP_MAX = VkBlendOp 4+-- ** VkCompareOp++-- | VkCompareOp - Stencil comparison function+--+-- = See Also+--+-- 'VkPipelineDepthStencilStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Sampler.VkSamplerCreateInfo', 'VkStencilOpState'+newtype VkCompareOp = VkCompareOp Int32+ deriving (Eq, Ord, Storable)++instance Show VkCompareOp where+ showsPrec _ VK_COMPARE_OP_NEVER = showString "VK_COMPARE_OP_NEVER"+ showsPrec _ VK_COMPARE_OP_LESS = showString "VK_COMPARE_OP_LESS"+ showsPrec _ VK_COMPARE_OP_EQUAL = showString "VK_COMPARE_OP_EQUAL"+ showsPrec _ VK_COMPARE_OP_LESS_OR_EQUAL = showString "VK_COMPARE_OP_LESS_OR_EQUAL"+ showsPrec _ VK_COMPARE_OP_GREATER = showString "VK_COMPARE_OP_GREATER"+ showsPrec _ VK_COMPARE_OP_NOT_EQUAL = showString "VK_COMPARE_OP_NOT_EQUAL"+ showsPrec _ VK_COMPARE_OP_GREATER_OR_EQUAL = showString "VK_COMPARE_OP_GREATER_OR_EQUAL"+ showsPrec _ VK_COMPARE_OP_ALWAYS = showString "VK_COMPARE_OP_ALWAYS"+ showsPrec p (VkCompareOp x) = showParen (p >= 11) (showString "VkCompareOp " . showsPrec 11 x)++instance Read VkCompareOp where+ readPrec = parens ( choose [ ("VK_COMPARE_OP_NEVER", pure VK_COMPARE_OP_NEVER)+ , ("VK_COMPARE_OP_LESS", pure VK_COMPARE_OP_LESS)+ , ("VK_COMPARE_OP_EQUAL", pure VK_COMPARE_OP_EQUAL)+ , ("VK_COMPARE_OP_LESS_OR_EQUAL", pure VK_COMPARE_OP_LESS_OR_EQUAL)+ , ("VK_COMPARE_OP_GREATER", pure VK_COMPARE_OP_GREATER)+ , ("VK_COMPARE_OP_NOT_EQUAL", pure VK_COMPARE_OP_NOT_EQUAL)+ , ("VK_COMPARE_OP_GREATER_OR_EQUAL", pure VK_COMPARE_OP_GREATER_OR_EQUAL)+ , ("VK_COMPARE_OP_ALWAYS", pure VK_COMPARE_OP_ALWAYS)+ ] ++++ prec 10 (do+ expectP (Ident "VkCompareOp")+ v <- step readPrec+ pure (VkCompareOp v)+ )+ )++-- | @VK_COMPARE_OP_NEVER@ specifies that the test never passes.+pattern VK_COMPARE_OP_NEVER :: VkCompareOp+pattern VK_COMPARE_OP_NEVER = VkCompareOp 0++-- | @VK_COMPARE_OP_LESS@ specifies that the test passes when R \< S.+pattern VK_COMPARE_OP_LESS :: VkCompareOp+pattern VK_COMPARE_OP_LESS = VkCompareOp 1++-- | @VK_COMPARE_OP_EQUAL@ specifies that the test passes when R = S.+pattern VK_COMPARE_OP_EQUAL :: VkCompareOp+pattern VK_COMPARE_OP_EQUAL = VkCompareOp 2++-- | @VK_COMPARE_OP_LESS_OR_EQUAL@ specifies that the test passes when R ≤ S.+pattern VK_COMPARE_OP_LESS_OR_EQUAL :: VkCompareOp+pattern VK_COMPARE_OP_LESS_OR_EQUAL = VkCompareOp 3++-- | @VK_COMPARE_OP_GREATER@ specifies that the test passes when R > S.+pattern VK_COMPARE_OP_GREATER :: VkCompareOp+pattern VK_COMPARE_OP_GREATER = VkCompareOp 4++-- | @VK_COMPARE_OP_NOT_EQUAL@ specifies that the test passes when R ≠ S.+pattern VK_COMPARE_OP_NOT_EQUAL :: VkCompareOp+pattern VK_COMPARE_OP_NOT_EQUAL = VkCompareOp 5++-- | @VK_COMPARE_OP_GREATER_OR_EQUAL@ specifies that the test passes when R ≥+-- S.+pattern VK_COMPARE_OP_GREATER_OR_EQUAL :: VkCompareOp+pattern VK_COMPARE_OP_GREATER_OR_EQUAL = VkCompareOp 6++-- | @VK_COMPARE_OP_ALWAYS@ specifies that the test always passes.+pattern VK_COMPARE_OP_ALWAYS :: VkCompareOp+pattern VK_COMPARE_OP_ALWAYS = VkCompareOp 7+-- ** VkDynamicState++-- | VkDynamicState - Indicate which dynamic state is taken from dynamic+-- state commands+--+-- = See Also+--+-- 'VkPipelineDynamicStateCreateInfo'+newtype VkDynamicState = VkDynamicState Int32+ deriving (Eq, Ord, Storable)++instance Show VkDynamicState where+ showsPrec _ VK_DYNAMIC_STATE_VIEWPORT = showString "VK_DYNAMIC_STATE_VIEWPORT"+ showsPrec _ VK_DYNAMIC_STATE_SCISSOR = showString "VK_DYNAMIC_STATE_SCISSOR"+ showsPrec _ VK_DYNAMIC_STATE_LINE_WIDTH = showString "VK_DYNAMIC_STATE_LINE_WIDTH"+ showsPrec _ VK_DYNAMIC_STATE_DEPTH_BIAS = showString "VK_DYNAMIC_STATE_DEPTH_BIAS"+ showsPrec _ VK_DYNAMIC_STATE_BLEND_CONSTANTS = showString "VK_DYNAMIC_STATE_BLEND_CONSTANTS"+ showsPrec _ VK_DYNAMIC_STATE_DEPTH_BOUNDS = showString "VK_DYNAMIC_STATE_DEPTH_BOUNDS"+ showsPrec _ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"+ showsPrec _ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"+ showsPrec _ VK_DYNAMIC_STATE_STENCIL_REFERENCE = showString "VK_DYNAMIC_STATE_STENCIL_REFERENCE"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkDynamicState 1000087000) = showString "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"+ showsPrec _ (VkDynamicState 1000099000) = showString "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"+ showsPrec _ (VkDynamicState 1000143000) = showString "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"+ showsPrec p (VkDynamicState x) = showParen (p >= 11) (showString "VkDynamicState " . showsPrec 11 x)++instance Read VkDynamicState where+ readPrec = parens ( choose [ ("VK_DYNAMIC_STATE_VIEWPORT", pure VK_DYNAMIC_STATE_VIEWPORT)+ , ("VK_DYNAMIC_STATE_SCISSOR", pure VK_DYNAMIC_STATE_SCISSOR)+ , ("VK_DYNAMIC_STATE_LINE_WIDTH", pure VK_DYNAMIC_STATE_LINE_WIDTH)+ , ("VK_DYNAMIC_STATE_DEPTH_BIAS", pure VK_DYNAMIC_STATE_DEPTH_BIAS)+ , ("VK_DYNAMIC_STATE_BLEND_CONSTANTS", pure VK_DYNAMIC_STATE_BLEND_CONSTANTS)+ , ("VK_DYNAMIC_STATE_DEPTH_BOUNDS", pure VK_DYNAMIC_STATE_DEPTH_BOUNDS)+ , ("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK", pure VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK)+ , ("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK", pure VK_DYNAMIC_STATE_STENCIL_WRITE_MASK)+ , ("VK_DYNAMIC_STATE_STENCIL_REFERENCE", pure VK_DYNAMIC_STATE_STENCIL_REFERENCE)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", pure (VkDynamicState 1000087000))+ , ("VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", pure (VkDynamicState 1000099000))+ , ("VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", pure (VkDynamicState 1000143000))+ ] ++++ prec 10 (do+ expectP (Ident "VkDynamicState")+ v <- step readPrec+ pure (VkDynamicState v)+ )+ )++-- | @VK_DYNAMIC_STATE_VIEWPORT@ specifies that the @pViewports@ state in+-- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set+-- dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport' before+-- any draw commands. The number of viewports used by a pipeline is still+-- specified by the @viewportCount@ member of+-- @VkPipelineViewportStateCreateInfo@.+pattern VK_DYNAMIC_STATE_VIEWPORT :: VkDynamicState+pattern VK_DYNAMIC_STATE_VIEWPORT = VkDynamicState 0++-- | @VK_DYNAMIC_STATE_SCISSOR@ specifies that the @pScissors@ state in+-- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set+-- dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor' before+-- any draw commands. The number of scissor rectangles used by a pipeline+-- is still specified by the @scissorCount@ member of+-- @VkPipelineViewportStateCreateInfo@.+pattern VK_DYNAMIC_STATE_SCISSOR :: VkDynamicState+pattern VK_DYNAMIC_STATE_SCISSOR = VkDynamicState 1++-- | @VK_DYNAMIC_STATE_LINE_WIDTH@ specifies that the @lineWidth@ state in+-- @VkPipelineRasterizationStateCreateInfo@ will be ignored and /must/ be+-- set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetLineWidth' before+-- any draw commands that generate line primitives for the rasterizer.+pattern VK_DYNAMIC_STATE_LINE_WIDTH :: VkDynamicState+pattern VK_DYNAMIC_STATE_LINE_WIDTH = VkDynamicState 2++-- | @VK_DYNAMIC_STATE_DEPTH_BIAS@ specifies that the+-- @depthBiasConstantFactor@, @depthBiasClamp@ and @depthBiasSlopeFactor@+-- states in @VkPipelineRasterizationStateCreateInfo@ will be ignored and+-- /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBias' before+-- any draws are performed with @depthBiasEnable@ in+-- @VkPipelineRasterizationStateCreateInfo@ set to @VK_TRUE@.+pattern VK_DYNAMIC_STATE_DEPTH_BIAS :: VkDynamicState+pattern VK_DYNAMIC_STATE_DEPTH_BIAS = VkDynamicState 3++-- | @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ specifies that the @blendConstants@+-- state in @VkPipelineColorBlendStateCreateInfo@ will be ignored and+-- /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetBlendConstants'+-- before any draws are performed with a pipeline state with+-- @VkPipelineColorBlendAttachmentState@ member @blendEnable@ set to+-- @VK_TRUE@ and any of the blend functions using a constant blend color.+pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS :: VkDynamicState+pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS = VkDynamicState 4++-- | @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ specifies that the @minDepthBounds@ and+-- @maxDepthBounds@ states of 'VkPipelineDepthStencilStateCreateInfo' will+-- be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBounds'+-- before any draws are performed with a pipeline state with+-- @VkPipelineDepthStencilStateCreateInfo@ member @depthBoundsTestEnable@+-- set to @VK_TRUE@.+pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS :: VkDynamicState+pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS = VkDynamicState 5++-- | @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ specifies that the @compareMask@+-- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and+-- @back@ will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilCompareMask'+-- before any draws are performed with a pipeline state with+-- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set+-- to @VK_TRUE@+pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK :: VkDynamicState+pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = VkDynamicState 6++-- | @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ specifies that the @writeMask@+-- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and+-- @back@ will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilWriteMask'+-- before any draws are performed with a pipeline state with+-- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set+-- to @VK_TRUE@+pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK :: VkDynamicState+pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = VkDynamicState 7++-- | @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ specifies that the @reference@+-- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and+-- @back@ will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilReference'+-- before any draws are performed with a pipeline state with+-- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set+-- to @VK_TRUE@+pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE :: VkDynamicState+pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE = VkDynamicState 8+-- ** VkPolygonMode++-- | VkPolygonMode - Control polygon rasterization mode+--+-- = Description+--+-- - @VK_POLYGON_MODE_POINT@ specifies that polygon vertices are drawn as+-- points.+--+-- - @VK_POLYGON_MODE_LINE@ specifies that polygon edges are drawn as+-- line segments.+--+-- - @VK_POLYGON_MODE_FILL@ specifies that polygons are rendered using+-- the polygon rasterization rules in this section.+--+-- - @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ specifies that polygons are+-- rendered using polygon rasterization rules, modified to consider a+-- sample within the primitive if the sample location is inside the+-- axis-aligned bounding box of the triangle after projection. Note+-- that the barycentric weights used in attribute interpolation /can/+-- extend outside the range [0,1] when these primitives are shaded.+-- Special treatment is given to a sample position on the boundary edge+-- of the bounding box. In such a case, if two rectangles lie on either+-- side of a common edge (with identical endpoints) on which a sample+-- position lies, then exactly one of the triangles /must/ produce a+-- fragment that covers that sample during rasterization.+--+-- Polygons rendered in @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ mode /may/+-- be clipped by the frustum or by user clip planes. If clipping is+-- applied, the triangle is culled rather than clipped.+--+-- Area calculation and facingness are determined for+-- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ mode using the triangle’s+-- vertices.+--+-- These modes affect only the final rasterization of polygons: in+-- particular, a polygon’s vertices are shaded and the polygon is clipped+-- and possibly culled before these modes are applied.+--+-- = See Also+--+-- 'VkPipelineRasterizationStateCreateInfo'+newtype VkPolygonMode = VkPolygonMode Int32+ deriving (Eq, Ord, Storable)++instance Show VkPolygonMode where+ showsPrec _ VK_POLYGON_MODE_FILL = showString "VK_POLYGON_MODE_FILL"+ showsPrec _ VK_POLYGON_MODE_LINE = showString "VK_POLYGON_MODE_LINE"+ showsPrec _ VK_POLYGON_MODE_POINT = showString "VK_POLYGON_MODE_POINT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkPolygonMode 1000153000) = showString "VK_POLYGON_MODE_FILL_RECTANGLE_NV"+ showsPrec p (VkPolygonMode x) = showParen (p >= 11) (showString "VkPolygonMode " . showsPrec 11 x)++instance Read VkPolygonMode where+ readPrec = parens ( choose [ ("VK_POLYGON_MODE_FILL", pure VK_POLYGON_MODE_FILL)+ , ("VK_POLYGON_MODE_LINE", pure VK_POLYGON_MODE_LINE)+ , ("VK_POLYGON_MODE_POINT", pure VK_POLYGON_MODE_POINT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_POLYGON_MODE_FILL_RECTANGLE_NV", pure (VkPolygonMode 1000153000))+ ] ++++ prec 10 (do+ expectP (Ident "VkPolygonMode")+ v <- step readPrec+ pure (VkPolygonMode v)+ )+ )++-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL"+pattern VK_POLYGON_MODE_FILL :: VkPolygonMode+pattern VK_POLYGON_MODE_FILL = VkPolygonMode 0++-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_LINE"+pattern VK_POLYGON_MODE_LINE :: VkPolygonMode+pattern VK_POLYGON_MODE_LINE = VkPolygonMode 1++-- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_POINT"+pattern VK_POLYGON_MODE_POINT :: VkPolygonMode+pattern VK_POLYGON_MODE_POINT = VkPolygonMode 2+-- ** VkFrontFace++-- | VkFrontFace - Interpret polygon front-facing orientation+--+-- = Description+--+-- - @VK_FRONT_FACE_COUNTER_CLOCKWISE@ specifies that a triangle with+-- positive area is considered front-facing.+--+-- - @VK_FRONT_FACE_CLOCKWISE@ specifies that a triangle with negative+-- area is considered front-facing.+--+-- Any triangle which is not front-facing is back-facing, including+-- zero-area triangles.+--+-- = See Also+--+-- 'VkPipelineRasterizationStateCreateInfo'+newtype VkFrontFace = VkFrontFace Int32+ deriving (Eq, Ord, Storable)++instance Show VkFrontFace where+ showsPrec _ VK_FRONT_FACE_COUNTER_CLOCKWISE = showString "VK_FRONT_FACE_COUNTER_CLOCKWISE"+ showsPrec _ VK_FRONT_FACE_CLOCKWISE = showString "VK_FRONT_FACE_CLOCKWISE"+ showsPrec p (VkFrontFace x) = showParen (p >= 11) (showString "VkFrontFace " . showsPrec 11 x)++instance Read VkFrontFace where+ readPrec = parens ( choose [ ("VK_FRONT_FACE_COUNTER_CLOCKWISE", pure VK_FRONT_FACE_COUNTER_CLOCKWISE)+ , ("VK_FRONT_FACE_CLOCKWISE", pure VK_FRONT_FACE_CLOCKWISE)+ ] ++++ prec 10 (do+ expectP (Ident "VkFrontFace")+ v <- step readPrec+ pure (VkFrontFace v)+ )+ )++-- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_COUNTER_CLOCKWISE"+pattern VK_FRONT_FACE_COUNTER_CLOCKWISE :: VkFrontFace+pattern VK_FRONT_FACE_COUNTER_CLOCKWISE = VkFrontFace 0++-- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_CLOCKWISE"+pattern VK_FRONT_FACE_CLOCKWISE :: VkFrontFace+pattern VK_FRONT_FACE_CLOCKWISE = VkFrontFace 1+-- ** VkLogicOp++-- | VkLogicOp - Framebuffer logical operations+--+-- = Description+--+-- The logical operations supported by Vulkan are summarized in the+-- following table in which+--+-- - ¬ is bitwise invert,+--+-- - ∧ is bitwise and,+--+-- - ∨ is bitwise or,+--+-- - ⊕ is bitwise exclusive or,+--+-- - s is the fragment’s Rs0, Gs0, Bs0 or As0 component value for the+-- fragment output corresponding to the color attachment being updated,+-- and+--+-- - d is the color attachment’s R, G, B or A component value:+--+-- +-----------------------------------+-----------------------------------++-- | Mode | Operation |+-- +===================================+===================================++-- | @VK_LOGIC_OP_CLEAR@ | 0 |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_AND@ | s ∧ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_AND_REVERSE@ | s ∧ ¬ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_COPY@ | s |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_AND_INVERTED@ | ¬ s ∧ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_NO_OP@ | d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_XOR@ | s ⊕ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_OR@ | s ∨ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_NOR@ | ¬ (s ∨ d) |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_EQUIVALENT@ | ¬ (s ⊕ d) |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_INVERT@ | ¬ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_OR_REVERSE@ | s ∨ ¬ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_COPY_INVERTED@ | ¬ s |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_OR_INVERTED@ | ¬ s ∨ d |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_NAND@ | ¬ (s ∧ d) |+-- +-----------------------------------+-----------------------------------++-- | @VK_LOGIC_OP_SET@ | all 1s |+-- +-----------------------------------+-----------------------------------++--+-- Logical Operations+--+-- The result of the logical operation is then written to the color+-- attachment as controlled by the component write mask, described in+-- [Blend+-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendoperations).+--+-- = See Also+--+-- 'VkPipelineColorBlendStateCreateInfo'+newtype VkLogicOp = VkLogicOp Int32+ deriving (Eq, Ord, Storable)++instance Show VkLogicOp where+ showsPrec _ VK_LOGIC_OP_CLEAR = showString "VK_LOGIC_OP_CLEAR"+ showsPrec _ VK_LOGIC_OP_AND = showString "VK_LOGIC_OP_AND"+ showsPrec _ VK_LOGIC_OP_AND_REVERSE = showString "VK_LOGIC_OP_AND_REVERSE"+ showsPrec _ VK_LOGIC_OP_COPY = showString "VK_LOGIC_OP_COPY"+ showsPrec _ VK_LOGIC_OP_AND_INVERTED = showString "VK_LOGIC_OP_AND_INVERTED"+ showsPrec _ VK_LOGIC_OP_NO_OP = showString "VK_LOGIC_OP_NO_OP"+ showsPrec _ VK_LOGIC_OP_XOR = showString "VK_LOGIC_OP_XOR"+ showsPrec _ VK_LOGIC_OP_OR = showString "VK_LOGIC_OP_OR"+ showsPrec _ VK_LOGIC_OP_NOR = showString "VK_LOGIC_OP_NOR"+ showsPrec _ VK_LOGIC_OP_EQUIVALENT = showString "VK_LOGIC_OP_EQUIVALENT"+ showsPrec _ VK_LOGIC_OP_INVERT = showString "VK_LOGIC_OP_INVERT"+ showsPrec _ VK_LOGIC_OP_OR_REVERSE = showString "VK_LOGIC_OP_OR_REVERSE"+ showsPrec _ VK_LOGIC_OP_COPY_INVERTED = showString "VK_LOGIC_OP_COPY_INVERTED"+ showsPrec _ VK_LOGIC_OP_OR_INVERTED = showString "VK_LOGIC_OP_OR_INVERTED"+ showsPrec _ VK_LOGIC_OP_NAND = showString "VK_LOGIC_OP_NAND"+ showsPrec _ VK_LOGIC_OP_SET = showString "VK_LOGIC_OP_SET"+ showsPrec p (VkLogicOp x) = showParen (p >= 11) (showString "VkLogicOp " . showsPrec 11 x)++instance Read VkLogicOp where+ readPrec = parens ( choose [ ("VK_LOGIC_OP_CLEAR", pure VK_LOGIC_OP_CLEAR)+ , ("VK_LOGIC_OP_AND", pure VK_LOGIC_OP_AND)+ , ("VK_LOGIC_OP_AND_REVERSE", pure VK_LOGIC_OP_AND_REVERSE)+ , ("VK_LOGIC_OP_COPY", pure VK_LOGIC_OP_COPY)+ , ("VK_LOGIC_OP_AND_INVERTED", pure VK_LOGIC_OP_AND_INVERTED)+ , ("VK_LOGIC_OP_NO_OP", pure VK_LOGIC_OP_NO_OP)+ , ("VK_LOGIC_OP_XOR", pure VK_LOGIC_OP_XOR)+ , ("VK_LOGIC_OP_OR", pure VK_LOGIC_OP_OR)+ , ("VK_LOGIC_OP_NOR", pure VK_LOGIC_OP_NOR)+ , ("VK_LOGIC_OP_EQUIVALENT", pure VK_LOGIC_OP_EQUIVALENT)+ , ("VK_LOGIC_OP_INVERT", pure VK_LOGIC_OP_INVERT)+ , ("VK_LOGIC_OP_OR_REVERSE", pure VK_LOGIC_OP_OR_REVERSE)+ , ("VK_LOGIC_OP_COPY_INVERTED", pure VK_LOGIC_OP_COPY_INVERTED)+ , ("VK_LOGIC_OP_OR_INVERTED", pure VK_LOGIC_OP_OR_INVERTED)+ , ("VK_LOGIC_OP_NAND", pure VK_LOGIC_OP_NAND)+ , ("VK_LOGIC_OP_SET", pure VK_LOGIC_OP_SET)+ ] ++++ prec 10 (do+ expectP (Ident "VkLogicOp")+ v <- step readPrec+ pure (VkLogicOp v)+ )+ )++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_CLEAR"+pattern VK_LOGIC_OP_CLEAR :: VkLogicOp+pattern VK_LOGIC_OP_CLEAR = VkLogicOp 0++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND"+pattern VK_LOGIC_OP_AND :: VkLogicOp+pattern VK_LOGIC_OP_AND = VkLogicOp 1++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_REVERSE"+pattern VK_LOGIC_OP_AND_REVERSE :: VkLogicOp+pattern VK_LOGIC_OP_AND_REVERSE = VkLogicOp 2++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY"+pattern VK_LOGIC_OP_COPY :: VkLogicOp+pattern VK_LOGIC_OP_COPY = VkLogicOp 3++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_INVERTED"+pattern VK_LOGIC_OP_AND_INVERTED :: VkLogicOp+pattern VK_LOGIC_OP_AND_INVERTED = VkLogicOp 4++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NO_OP"+pattern VK_LOGIC_OP_NO_OP :: VkLogicOp+pattern VK_LOGIC_OP_NO_OP = VkLogicOp 5++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_XOR"+pattern VK_LOGIC_OP_XOR :: VkLogicOp+pattern VK_LOGIC_OP_XOR = VkLogicOp 6++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR"+pattern VK_LOGIC_OP_OR :: VkLogicOp+pattern VK_LOGIC_OP_OR = VkLogicOp 7++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NOR"+pattern VK_LOGIC_OP_NOR :: VkLogicOp+pattern VK_LOGIC_OP_NOR = VkLogicOp 8++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_EQUIVALENT"+pattern VK_LOGIC_OP_EQUIVALENT :: VkLogicOp+pattern VK_LOGIC_OP_EQUIVALENT = VkLogicOp 9++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_INVERT"+pattern VK_LOGIC_OP_INVERT :: VkLogicOp+pattern VK_LOGIC_OP_INVERT = VkLogicOp 10++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_REVERSE"+pattern VK_LOGIC_OP_OR_REVERSE :: VkLogicOp+pattern VK_LOGIC_OP_OR_REVERSE = VkLogicOp 11++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY_INVERTED"+pattern VK_LOGIC_OP_COPY_INVERTED :: VkLogicOp+pattern VK_LOGIC_OP_COPY_INVERTED = VkLogicOp 12++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_INVERTED"+pattern VK_LOGIC_OP_OR_INVERTED :: VkLogicOp+pattern VK_LOGIC_OP_OR_INVERTED = VkLogicOp 13++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NAND"+pattern VK_LOGIC_OP_NAND :: VkLogicOp+pattern VK_LOGIC_OP_NAND = VkLogicOp 14++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_SET"+pattern VK_LOGIC_OP_SET :: VkLogicOp+pattern VK_LOGIC_OP_SET = VkLogicOp 15+-- ** VkPrimitiveTopology++-- | VkPrimitiveTopology - Supported primitive topologies+--+-- = See Also+--+-- 'VkPipelineInputAssemblyStateCreateInfo'+newtype VkPrimitiveTopology = VkPrimitiveTopology Int32+ deriving (Eq, Ord, Storable)++instance Show VkPrimitiveTopology where+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_POINT_LIST = showString "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"+ showsPrec _ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = showString "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"+ showsPrec p (VkPrimitiveTopology x) = showParen (p >= 11) (showString "VkPrimitiveTopology " . showsPrec 11 x)++instance Read VkPrimitiveTopology where+ readPrec = parens ( choose [ ("VK_PRIMITIVE_TOPOLOGY_POINT_LIST", pure VK_PRIMITIVE_TOPOLOGY_POINT_LIST)+ , ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST)+ , ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP)+ , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)+ , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP)+ , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN)+ , ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY)+ , ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY)+ , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY)+ , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY)+ , ("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", pure VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)+ ] ++++ prec 10 (do+ expectP (Ident "VkPrimitiveTopology")+ v <- step readPrec+ pure (VkPrimitiveTopology v)+ )+ )++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"+pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST = VkPrimitiveTopology 0++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"+pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST = VkPrimitiveTopology 1++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"+pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = VkPrimitiveTopology 2++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = VkPrimitiveTopology 3++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = VkPrimitiveTopology 4++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = VkPrimitiveTopology 5++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"+pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 6++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"+pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 7++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 8++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 9++-- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"+pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST :: VkPrimitiveTopology+pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = VkPrimitiveTopology 10+-- ** VkStencilOp++-- | VkStencilOp - Stencil comparison function+--+-- = Description+--+-- - @VK_STENCIL_OP_KEEP@ keeps the current value.+--+-- - @VK_STENCIL_OP_ZERO@ sets the value to 0.+--+-- - @VK_STENCIL_OP_REPLACE@ sets the value to @reference@.+--+-- - @VK_STENCIL_OP_INCREMENT_AND_CLAMP@ increments the current value and+-- clamps to the maximum representable unsigned value.+--+-- - @VK_STENCIL_OP_DECREMENT_AND_CLAMP@ decrements the current value and+-- clamps to 0.+--+-- - @VK_STENCIL_OP_INVERT@ bitwise-inverts the current value.+--+-- - @VK_STENCIL_OP_INCREMENT_AND_WRAP@ increments the current value and+-- wraps to 0 when the maximum value would have been exceeded.+--+-- - @VK_STENCIL_OP_DECREMENT_AND_WRAP@ decrements the current value and+-- wraps to the maximum possible value when the value would go below 0.+--+-- For purposes of increment and decrement, the stencil bits are considered+-- as an unsigned integer.+--+-- If the stencil test fails, the sample’s coverage bit is cleared in the+-- fragment. If there is no stencil framebuffer attachment, stencil+-- modification /cannot/ occur, and it is as if the stencil tests always+-- pass.+--+-- If the stencil test passes, the @writeMask@ member of the+-- 'VkStencilOpState' structures controls how the updated stencil value is+-- written to the stencil framebuffer attachment.+--+-- The least significant s bits of @writeMask@, where s is the number of+-- bits in the stencil framebuffer attachment, specify an integer mask.+-- Where a 1 appears in this mask, the corresponding bit in the stencil+-- value in the depth\/stencil attachment is written; where a 0 appears,+-- the bit is not written. The @writeMask@ value uses either the+-- front-facing or back-facing state based on the facingness of the+-- fragment. Fragments generated by front-facing primitives use the front+-- mask and fragments generated by back-facing primitives use the back+-- mask.+--+-- = See Also+--+-- 'VkStencilOpState'+newtype VkStencilOp = VkStencilOp Int32+ deriving (Eq, Ord, Storable)++instance Show VkStencilOp where+ showsPrec _ VK_STENCIL_OP_KEEP = showString "VK_STENCIL_OP_KEEP"+ showsPrec _ VK_STENCIL_OP_ZERO = showString "VK_STENCIL_OP_ZERO"+ showsPrec _ VK_STENCIL_OP_REPLACE = showString "VK_STENCIL_OP_REPLACE"+ showsPrec _ VK_STENCIL_OP_INCREMENT_AND_CLAMP = showString "VK_STENCIL_OP_INCREMENT_AND_CLAMP"+ showsPrec _ VK_STENCIL_OP_DECREMENT_AND_CLAMP = showString "VK_STENCIL_OP_DECREMENT_AND_CLAMP"+ showsPrec _ VK_STENCIL_OP_INVERT = showString "VK_STENCIL_OP_INVERT"+ showsPrec _ VK_STENCIL_OP_INCREMENT_AND_WRAP = showString "VK_STENCIL_OP_INCREMENT_AND_WRAP"+ showsPrec _ VK_STENCIL_OP_DECREMENT_AND_WRAP = showString "VK_STENCIL_OP_DECREMENT_AND_WRAP"+ showsPrec p (VkStencilOp x) = showParen (p >= 11) (showString "VkStencilOp " . showsPrec 11 x)++instance Read VkStencilOp where+ readPrec = parens ( choose [ ("VK_STENCIL_OP_KEEP", pure VK_STENCIL_OP_KEEP)+ , ("VK_STENCIL_OP_ZERO", pure VK_STENCIL_OP_ZERO)+ , ("VK_STENCIL_OP_REPLACE", pure VK_STENCIL_OP_REPLACE)+ , ("VK_STENCIL_OP_INCREMENT_AND_CLAMP", pure VK_STENCIL_OP_INCREMENT_AND_CLAMP)+ , ("VK_STENCIL_OP_DECREMENT_AND_CLAMP", pure VK_STENCIL_OP_DECREMENT_AND_CLAMP)+ , ("VK_STENCIL_OP_INVERT", pure VK_STENCIL_OP_INVERT)+ , ("VK_STENCIL_OP_INCREMENT_AND_WRAP", pure VK_STENCIL_OP_INCREMENT_AND_WRAP)+ , ("VK_STENCIL_OP_DECREMENT_AND_WRAP", pure VK_STENCIL_OP_DECREMENT_AND_WRAP)+ ] ++++ prec 10 (do+ expectP (Ident "VkStencilOp")+ v <- step readPrec+ pure (VkStencilOp v)+ )+ )++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_KEEP"+pattern VK_STENCIL_OP_KEEP :: VkStencilOp+pattern VK_STENCIL_OP_KEEP = VkStencilOp 0++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_ZERO"+pattern VK_STENCIL_OP_ZERO :: VkStencilOp+pattern VK_STENCIL_OP_ZERO = VkStencilOp 1++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_REPLACE"+pattern VK_STENCIL_OP_REPLACE :: VkStencilOp+pattern VK_STENCIL_OP_REPLACE = VkStencilOp 2++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_CLAMP"+pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP :: VkStencilOp+pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP = VkStencilOp 3++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_CLAMP"+pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP :: VkStencilOp+pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP = VkStencilOp 4++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INVERT"+pattern VK_STENCIL_OP_INVERT :: VkStencilOp+pattern VK_STENCIL_OP_INVERT = VkStencilOp 5++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_WRAP"+pattern VK_STENCIL_OP_INCREMENT_AND_WRAP :: VkStencilOp+pattern VK_STENCIL_OP_INCREMENT_AND_WRAP = VkStencilOp 6++-- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_WRAP"+pattern VK_STENCIL_OP_DECREMENT_AND_WRAP :: VkStencilOp+pattern VK_STENCIL_OP_DECREMENT_AND_WRAP = VkStencilOp 7+-- ** VkVertexInputRate++-- | VkVertexInputRate - Specify rate at which vertex attributes are pulled+-- from buffers+--+-- = See Also+--+-- 'VkVertexInputBindingDescription'+newtype VkVertexInputRate = VkVertexInputRate Int32+ deriving (Eq, Ord, Storable)++instance Show VkVertexInputRate where+ showsPrec _ VK_VERTEX_INPUT_RATE_VERTEX = showString "VK_VERTEX_INPUT_RATE_VERTEX"+ showsPrec _ VK_VERTEX_INPUT_RATE_INSTANCE = showString "VK_VERTEX_INPUT_RATE_INSTANCE"+ showsPrec p (VkVertexInputRate x) = showParen (p >= 11) (showString "VkVertexInputRate " . showsPrec 11 x)++instance Read VkVertexInputRate where+ readPrec = parens ( choose [ ("VK_VERTEX_INPUT_RATE_VERTEX", pure VK_VERTEX_INPUT_RATE_VERTEX)+ , ("VK_VERTEX_INPUT_RATE_INSTANCE", pure VK_VERTEX_INPUT_RATE_INSTANCE)+ ] ++++ prec 10 (do+ expectP (Ident "VkVertexInputRate")+ v <- step readPrec+ pure (VkVertexInputRate v)+ )+ )++-- | @VK_VERTEX_INPUT_RATE_VERTEX@ specifies that vertex attribute addressing+-- is a function of the vertex index.+pattern VK_VERTEX_INPUT_RATE_VERTEX :: VkVertexInputRate+pattern VK_VERTEX_INPUT_RATE_VERTEX = VkVertexInputRate 0++-- | @VK_VERTEX_INPUT_RATE_INSTANCE@ specifies that vertex attribute+-- addressing is a function of the instance index.+pattern VK_VERTEX_INPUT_RATE_INSTANCE :: VkVertexInputRate+pattern VK_VERTEX_INPUT_RATE_INSTANCE = VkVertexInputRate 1+-- ** VkPipelineDepthStencilStateCreateFlags++-- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineDepthStencilStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineDepthStencilStateCreateInfo'+newtype VkPipelineDepthStencilStateCreateFlags = VkPipelineDepthStencilStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineDepthStencilStateCreateFlags where+ + showsPrec p (VkPipelineDepthStencilStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDepthStencilStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineDepthStencilStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineDepthStencilStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineDepthStencilStateCreateFlags v)+ )+ )+++-- ** VkPipelineDynamicStateCreateFlags++-- | VkPipelineDynamicStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineDynamicStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineDynamicStateCreateInfo'+newtype VkPipelineDynamicStateCreateFlags = VkPipelineDynamicStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineDynamicStateCreateFlags where+ + showsPrec p (VkPipelineDynamicStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDynamicStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineDynamicStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineDynamicStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineDynamicStateCreateFlags v)+ )+ )+++-- ** VkPipelineColorBlendStateCreateFlags++-- | VkPipelineColorBlendStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineColorBlendStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineColorBlendStateCreateInfo'+newtype VkPipelineColorBlendStateCreateFlags = VkPipelineColorBlendStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineColorBlendStateCreateFlags where+ + showsPrec p (VkPipelineColorBlendStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineColorBlendStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineColorBlendStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineColorBlendStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineColorBlendStateCreateFlags v)+ )+ )+++-- ** VkPipelineMultisampleStateCreateFlags++-- | VkPipelineMultisampleStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineMultisampleStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineMultisampleStateCreateInfo'+newtype VkPipelineMultisampleStateCreateFlags = VkPipelineMultisampleStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineMultisampleStateCreateFlags where+ + showsPrec p (VkPipelineMultisampleStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineMultisampleStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineMultisampleStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineMultisampleStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineMultisampleStateCreateFlags v)+ )+ )+++-- ** VkPipelineRasterizationStateCreateFlags++-- | VkPipelineRasterizationStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineRasterizationStateCreateFlags@ is a bitmask type for setting+-- a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineRasterizationStateCreateInfo'+newtype VkPipelineRasterizationStateCreateFlags = VkPipelineRasterizationStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineRasterizationStateCreateFlags where+ + showsPrec p (VkPipelineRasterizationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineRasterizationStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineRasterizationStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineRasterizationStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineRasterizationStateCreateFlags v)+ )+ )+++-- ** VkPipelineViewportStateCreateFlags++-- | VkPipelineViewportStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineViewportStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineViewportStateCreateInfo'+newtype VkPipelineViewportStateCreateFlags = VkPipelineViewportStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineViewportStateCreateFlags where+ + showsPrec p (VkPipelineViewportStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineViewportStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineViewportStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineViewportStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineViewportStateCreateFlags v)+ )+ )+++-- ** VkPipelineTessellationStateCreateFlags++-- | VkPipelineTessellationStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineTessellationStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineTessellationStateCreateInfo'+newtype VkPipelineTessellationStateCreateFlags = VkPipelineTessellationStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineTessellationStateCreateFlags where+ + showsPrec p (VkPipelineTessellationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineTessellationStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineTessellationStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineTessellationStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineTessellationStateCreateFlags v)+ )+ )+++-- ** VkPipelineInputAssemblyStateCreateFlags++-- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineInputAssemblyStateCreateFlags@ is a bitmask type for setting+-- a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineInputAssemblyStateCreateInfo'+newtype VkPipelineInputAssemblyStateCreateFlags = VkPipelineInputAssemblyStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineInputAssemblyStateCreateFlags where+ + showsPrec p (VkPipelineInputAssemblyStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineInputAssemblyStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineInputAssemblyStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineInputAssemblyStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineInputAssemblyStateCreateFlags v)+ )+ )+++-- ** VkPipelineVertexInputStateCreateFlags++-- | VkPipelineVertexInputStateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineVertexInputStateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineVertexInputStateCreateInfo'+newtype VkPipelineVertexInputStateCreateFlags = VkPipelineVertexInputStateCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineVertexInputStateCreateFlags where+ + showsPrec p (VkPipelineVertexInputStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineVertexInputStateCreateFlags " . showsPrec 11 x)++instance Read VkPipelineVertexInputStateCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineVertexInputStateCreateFlags")+ v <- step readPrec+ pure (VkPipelineVertexInputStateCreateFlags v)+ )+ )+++-- ** VkPipelineShaderStageCreateFlags++-- | VkPipelineShaderStageCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkPipelineShaderStageCreateFlags@ is a bitmask type for setting a mask,+-- but is currently reserved for future use.+--+-- = See Also+--+-- 'VkPipelineShaderStageCreateInfo'+newtype VkPipelineShaderStageCreateFlags = VkPipelineShaderStageCreateFlags VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineShaderStageCreateFlags where+ + showsPrec p (VkPipelineShaderStageCreateFlags x) = showParen (p >= 11) (showString "VkPipelineShaderStageCreateFlags " . showsPrec 11 x)++instance Read VkPipelineShaderStageCreateFlags where+ readPrec = parens ( choose [ + ] ++++ prec 10 (do+ expectP (Ident "VkPipelineShaderStageCreateFlags")+ v <- step readPrec+ pure (VkPipelineShaderStageCreateFlags v)+ )+ )+++-- ** VkShaderStageFlagBits++-- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage+--+-- = See Also+--+-- 'VkPipelineShaderStageCreateInfo',+-- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'+newtype VkShaderStageFlagBits = VkShaderStageFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkShaderStageFlagBits where+ showsPrec _ VK_SHADER_STAGE_VERTEX_BIT = showString "VK_SHADER_STAGE_VERTEX_BIT"+ showsPrec _ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = showString "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"+ showsPrec _ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = showString "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"+ showsPrec _ VK_SHADER_STAGE_GEOMETRY_BIT = showString "VK_SHADER_STAGE_GEOMETRY_BIT"+ showsPrec _ VK_SHADER_STAGE_FRAGMENT_BIT = showString "VK_SHADER_STAGE_FRAGMENT_BIT"+ showsPrec _ VK_SHADER_STAGE_COMPUTE_BIT = showString "VK_SHADER_STAGE_COMPUTE_BIT"+ showsPrec _ VK_SHADER_STAGE_ALL_GRAPHICS = showString "VK_SHADER_STAGE_ALL_GRAPHICS"+ showsPrec _ VK_SHADER_STAGE_ALL = showString "VK_SHADER_STAGE_ALL"+ showsPrec p (VkShaderStageFlagBits x) = showParen (p >= 11) (showString "VkShaderStageFlagBits " . showsPrec 11 x)++instance Read VkShaderStageFlagBits where+ readPrec = parens ( choose [ ("VK_SHADER_STAGE_VERTEX_BIT", pure VK_SHADER_STAGE_VERTEX_BIT)+ , ("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT", pure VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT)+ , ("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT", pure VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)+ , ("VK_SHADER_STAGE_GEOMETRY_BIT", pure VK_SHADER_STAGE_GEOMETRY_BIT)+ , ("VK_SHADER_STAGE_FRAGMENT_BIT", pure VK_SHADER_STAGE_FRAGMENT_BIT)+ , ("VK_SHADER_STAGE_COMPUTE_BIT", pure VK_SHADER_STAGE_COMPUTE_BIT)+ , ("VK_SHADER_STAGE_ALL_GRAPHICS", pure VK_SHADER_STAGE_ALL_GRAPHICS)+ , ("VK_SHADER_STAGE_ALL", pure VK_SHADER_STAGE_ALL)+ ] ++++ prec 10 (do+ expectP (Ident "VkShaderStageFlagBits")+ v <- step readPrec+ pure (VkShaderStageFlagBits v)+ )+ )++-- | @VK_SHADER_STAGE_VERTEX_BIT@ specifies the vertex stage.+pattern VK_SHADER_STAGE_VERTEX_BIT :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_VERTEX_BIT = VkShaderStageFlagBits 0x00000001++-- | @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ specifies the tessellation+-- control stage.+pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = VkShaderStageFlagBits 0x00000002++-- | @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@ specifies the tessellation+-- evaluation stage.+pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = VkShaderStageFlagBits 0x00000004++-- | @VK_SHADER_STAGE_GEOMETRY_BIT@ specifies the geometry stage.+pattern VK_SHADER_STAGE_GEOMETRY_BIT :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_GEOMETRY_BIT = VkShaderStageFlagBits 0x00000008++-- | @VK_SHADER_STAGE_FRAGMENT_BIT@ specifies the fragment stage.+pattern VK_SHADER_STAGE_FRAGMENT_BIT :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_FRAGMENT_BIT = VkShaderStageFlagBits 0x00000010++-- | @VK_SHADER_STAGE_COMPUTE_BIT@ specifies the compute stage.+pattern VK_SHADER_STAGE_COMPUTE_BIT :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_COMPUTE_BIT = VkShaderStageFlagBits 0x00000020++-- | @VK_SHADER_STAGE_ALL_GRAPHICS@ is a combination of bits used as+-- shorthand to specify all graphics stages defined above (excluding the+-- compute stage).+pattern VK_SHADER_STAGE_ALL_GRAPHICS :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_ALL_GRAPHICS = VkShaderStageFlagBits 0x0000001f++-- | @VK_SHADER_STAGE_ALL@ is a combination of bits used as shorthand to+-- specify all shader stages supported by the device, including all+-- additional stages which are introduced by extensions.+pattern VK_SHADER_STAGE_ALL :: VkShaderStageFlagBits+pattern VK_SHADER_STAGE_ALL = VkShaderStageFlagBits 0x7fffffff+-- ** VkPipelineCreateFlagBits++-- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created+--+-- = Description+--+-- - @VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT@ specifies that the+-- created pipeline will not be optimized. Using this flag /may/ reduce+-- the time taken to create the pipeline.+--+-- - @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ specifies that the+-- pipeline to be created is allowed to be the parent of a pipeline+-- that will be created in a subsequent call to+-- 'vkCreateGraphicsPipelines' or 'vkCreateComputePipelines'.+--+-- - @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ specifies that the pipeline to+-- be created will be a child of a previously created parent pipeline.+--+-- - @VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT@ specifies that+-- any shader input variables decorated as @DeviceIndex@ will be+-- assigned values as if they were decorated as @ViewIndex@.+--+-- - @VK_PIPELINE_CREATE_DISPATCH_BASE@ specifies that a compute pipeline+-- /can/ be used with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkCmdDispatchBase'+-- with a non-zero base workgroup.+--+-- It is valid to set both @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ and+-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@. This allows a pipeline to be both a+-- parent and possibly a child in a pipeline hierarchy. See [Pipeline+-- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives)+-- for more information.+--+-- = See Also+--+-- 'VkPipelineCreateFlags'+newtype VkPipelineCreateFlagBits = VkPipelineCreateFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkPipelineCreateFlagBits where+ showsPrec _ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = showString "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"+ showsPrec _ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = showString "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"+ showsPrec _ VK_PIPELINE_CREATE_DERIVATIVE_BIT = showString "VK_PIPELINE_CREATE_DERIVATIVE_BIT"+ -- The following values are from extensions, the patterns themselves are exported from the extension modules+ showsPrec _ (VkPipelineCreateFlagBits 0x00000008) = showString "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"+ showsPrec _ (VkPipelineCreateFlagBits 0x00000010) = showString "VK_PIPELINE_CREATE_DISPATCH_BASE"+ showsPrec p (VkPipelineCreateFlagBits x) = showParen (p >= 11) (showString "VkPipelineCreateFlagBits " . showsPrec 11 x)++instance Read VkPipelineCreateFlagBits where+ readPrec = parens ( choose [ ("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)+ , ("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)+ , ("VK_PIPELINE_CREATE_DERIVATIVE_BIT", pure VK_PIPELINE_CREATE_DERIVATIVE_BIT)+ , -- The following values are from extensions, the patterns themselves are exported from the extension modules+ ("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure (VkPipelineCreateFlagBits 0x00000008))+ , ("VK_PIPELINE_CREATE_DISPATCH_BASE", pure (VkPipelineCreateFlagBits 0x00000010))+ ] ++++ prec 10 (do+ expectP (Ident "VkPipelineCreateFlagBits")+ v <- step readPrec+ pure (VkPipelineCreateFlagBits v)+ )+ )++-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"+pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT :: VkPipelineCreateFlagBits+pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = VkPipelineCreateFlagBits 0x00000001++-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"+pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT :: VkPipelineCreateFlagBits+pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = VkPipelineCreateFlagBits 0x00000002++-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT"+pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT :: VkPipelineCreateFlagBits+pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT = VkPipelineCreateFlagBits 0x00000004+-- ** VkColorComponentFlagBits++-- | VkColorComponentFlagBits - Bitmask controlling which components are+-- written to the framebuffer+--+-- = Description+--+-- - @VK_COLOR_COMPONENT_R_BIT@ specifies that the R value is written to+-- the color attachment for the appropriate sample. Otherwise, the+-- value in memory is unmodified.+--+-- - @VK_COLOR_COMPONENT_G_BIT@ specifies that the G value is written to+-- the color attachment for the appropriate sample. Otherwise, the+-- value in memory is unmodified.+--+-- - @VK_COLOR_COMPONENT_B_BIT@ specifies that the B value is written to+-- the color attachment for the appropriate sample. Otherwise, the+-- value in memory is unmodified.+--+-- - @VK_COLOR_COMPONENT_A_BIT@ specifies that the A value is written to+-- the color attachment for the appropriate sample. Otherwise, the+-- value in memory is unmodified.+--+-- The color write mask operation is applied regardless of whether blending+-- is enabled.+--+-- = See Also+--+-- 'VkColorComponentFlags'+newtype VkColorComponentFlagBits = VkColorComponentFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkColorComponentFlagBits where+ showsPrec _ VK_COLOR_COMPONENT_R_BIT = showString "VK_COLOR_COMPONENT_R_BIT"+ showsPrec _ VK_COLOR_COMPONENT_G_BIT = showString "VK_COLOR_COMPONENT_G_BIT"+ showsPrec _ VK_COLOR_COMPONENT_B_BIT = showString "VK_COLOR_COMPONENT_B_BIT"+ showsPrec _ VK_COLOR_COMPONENT_A_BIT = showString "VK_COLOR_COMPONENT_A_BIT"+ showsPrec p (VkColorComponentFlagBits x) = showParen (p >= 11) (showString "VkColorComponentFlagBits " . showsPrec 11 x)++instance Read VkColorComponentFlagBits where+ readPrec = parens ( choose [ ("VK_COLOR_COMPONENT_R_BIT", pure VK_COLOR_COMPONENT_R_BIT)+ , ("VK_COLOR_COMPONENT_G_BIT", pure VK_COLOR_COMPONENT_G_BIT)+ , ("VK_COLOR_COMPONENT_B_BIT", pure VK_COLOR_COMPONENT_B_BIT)+ , ("VK_COLOR_COMPONENT_A_BIT", pure VK_COLOR_COMPONENT_A_BIT)+ ] ++++ prec 10 (do+ expectP (Ident "VkColorComponentFlagBits")+ v <- step readPrec+ pure (VkColorComponentFlagBits v)+ )+ )++-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_R_BIT"+pattern VK_COLOR_COMPONENT_R_BIT :: VkColorComponentFlagBits+pattern VK_COLOR_COMPONENT_R_BIT = VkColorComponentFlagBits 0x00000001++-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_G_BIT"+pattern VK_COLOR_COMPONENT_G_BIT :: VkColorComponentFlagBits+pattern VK_COLOR_COMPONENT_G_BIT = VkColorComponentFlagBits 0x00000002++-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_B_BIT"+pattern VK_COLOR_COMPONENT_B_BIT :: VkColorComponentFlagBits+pattern VK_COLOR_COMPONENT_B_BIT = VkColorComponentFlagBits 0x00000004++-- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_A_BIT"+pattern VK_COLOR_COMPONENT_A_BIT :: VkColorComponentFlagBits+pattern VK_COLOR_COMPONENT_A_BIT = VkColorComponentFlagBits 0x00000008+-- ** VkCullModeFlagBits++-- | VkCullModeFlagBits - Bitmask controlling triangle culling+--+-- = Description+--+-- - @VK_CULL_MODE_NONE@ specifies that no triangles are discarded+--+-- - @VK_CULL_MODE_FRONT_BIT@ specifies that front-facing triangles are+-- discarded+--+-- - @VK_CULL_MODE_BACK_BIT@ specifies that back-facing triangles are+-- discarded+--+-- - @VK_CULL_MODE_FRONT_AND_BACK@ specifies that all triangles are+-- discarded.+--+-- Following culling, fragments are produced for any triangles which have+-- not been discarded.+--+-- = See Also+--+-- 'VkCullModeFlags'+newtype VkCullModeFlagBits = VkCullModeFlagBits VkFlags+ deriving (Eq, Ord, Storable, Bits, FiniteBits)++instance Show VkCullModeFlagBits where+ showsPrec _ VK_CULL_MODE_FRONT_BIT = showString "VK_CULL_MODE_FRONT_BIT"+ showsPrec _ VK_CULL_MODE_BACK_BIT = showString "VK_CULL_MODE_BACK_BIT"+ showsPrec _ VK_CULL_MODE_NONE = showString "VK_CULL_MODE_NONE"+ showsPrec _ VK_CULL_MODE_FRONT_AND_BACK = showString "VK_CULL_MODE_FRONT_AND_BACK"+ showsPrec p (VkCullModeFlagBits x) = showParen (p >= 11) (showString "VkCullModeFlagBits " . showsPrec 11 x)++instance Read VkCullModeFlagBits where+ readPrec = parens ( choose [ ("VK_CULL_MODE_FRONT_BIT", pure VK_CULL_MODE_FRONT_BIT)+ , ("VK_CULL_MODE_BACK_BIT", pure VK_CULL_MODE_BACK_BIT)+ , ("VK_CULL_MODE_NONE", pure VK_CULL_MODE_NONE)+ , ("VK_CULL_MODE_FRONT_AND_BACK", pure VK_CULL_MODE_FRONT_AND_BACK)+ ] ++++ prec 10 (do+ expectP (Ident "VkCullModeFlagBits")+ v <- step readPrec+ pure (VkCullModeFlagBits v)+ )+ )++-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_BIT"+pattern VK_CULL_MODE_FRONT_BIT :: VkCullModeFlagBits+pattern VK_CULL_MODE_FRONT_BIT = VkCullModeFlagBits 0x00000001++-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_BACK_BIT"+pattern VK_CULL_MODE_BACK_BIT :: VkCullModeFlagBits+pattern VK_CULL_MODE_BACK_BIT = VkCullModeFlagBits 0x00000002++-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_NONE"+pattern VK_CULL_MODE_NONE :: VkCullModeFlagBits+pattern VK_CULL_MODE_NONE = VkCullModeFlagBits 0x00000000++-- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_AND_BACK"+pattern VK_CULL_MODE_FRONT_AND_BACK :: VkCullModeFlagBits+pattern VK_CULL_MODE_FRONT_AND_BACK = VkCullModeFlagBits 0x00000003+-- | Dummy data to tag the 'Ptr' with+data VkPipeline_T+-- | VkPipeline - Opaque handle to a pipeline object+--+-- = See Also+--+-- 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePipelineEntryNVX',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindPipeline',+-- 'vkCreateComputePipelines', 'vkCreateGraphicsPipelines',+-- 'vkDestroyPipeline',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'+type VkPipeline = Ptr VkPipeline_T+-- | Dummy data to tag the 'Ptr' with+data VkPipelineLayout_T+-- | VkPipelineLayout - Opaque handle to a pipeline layout object+--+-- = See Also+--+-- 'VkComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',+-- 'VkGraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableDescriptorSetEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePushConstantEntryNVX',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPushConstants',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',+-- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',+-- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout'+type VkPipelineLayout = Ptr VkPipelineLayout_T+-- | Dummy data to tag the 'Ptr' with+data VkRenderPass_T+-- | VkRenderPass - Opaque handle to a render pass object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',+-- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',+-- 'VkGraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',+-- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',+-- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',+-- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'+type VkRenderPass = Ptr VkRenderPass_T+-- | vkCreateGraphicsPipelines - Create graphics pipelines+--+-- = Parameters+--+-- - @device@ is the logical device that creates the graphics pipelines.+--+-- - @pipelineCache@ is either+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that+-- pipeline caching is disabled; or the handle of a valid [pipeline+-- cache](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-cache)+-- object, in which case use of that cache is enabled for the duration+-- of the command.+--+-- - @createInfoCount@ is the length of the @pCreateInfos@ and+-- @pPipelines@ arrays.+--+-- - @pCreateInfos@ is an array of @VkGraphicsPipelineCreateInfo@+-- structures.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- - @pPipelines@ is a pointer to an array in which the resulting+-- graphics pipeline objects are returned.+--+-- = Description+--+-- The 'VkGraphicsPipelineCreateInfo' structure includes an array of shader+-- create info structures containing all the desired active shader stages,+-- as well as creation info to define all relevant fixed-function stages,+-- and a pipeline layout.+--+-- == Valid Usage+--+-- - If the @flags@ member of any element of @pCreateInfos@ contains the+-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the+-- @basePipelineIndex@ member of that same element is not @-1@,+-- @basePipelineIndex@ /must/ be less than the index into+-- @pCreateInfos@ that corresponds to that element+--+-- - If the @flags@ member of any element of @pCreateInfos@ contains the+-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/+-- have been created with the+-- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - If @pipelineCache@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@+-- /must/ be a valid @VkPipelineCache@ handle+--+-- - @pCreateInfos@ /must/ be a valid pointer to an array of+-- @createInfoCount@ valid @VkGraphicsPipelineCreateInfo@ structures+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - @pPipelines@ /must/ be a valid pointer to an array of+-- @createInfoCount@ @VkPipeline@ handles+--+-- - @createInfoCount@ /must/ be greater than @0@+--+-- - If @pipelineCache@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- - @VK_ERROR_INVALID_SHADER_NV@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkGraphicsPipelineCreateInfo', 'VkPipeline',+-- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'+foreign import ccall "vkCreateGraphicsPipelines" vkCreateGraphicsPipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult+-- | vkCreateComputePipelines - Creates a new compute pipeline object+--+-- = Parameters+--+-- - @device@ is the logical device that creates the compute pipelines.+--+-- - @pipelineCache@ is either+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that+-- pipeline caching is disabled; or the handle of a valid [pipeline+-- cache](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-cache)+-- object, in which case use of that cache is enabled for the duration+-- of the command.+--+-- - @createInfoCount@ is the length of the @pCreateInfos@ and+-- @pPipelines@ arrays.+--+-- - @pCreateInfos@ is an array of @VkComputePipelineCreateInfo@+-- structures.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- - @pPipelines@ is a pointer to an array in which the resulting compute+-- pipeline objects are returned.+--+-- == Valid Usage+--+-- - If the @flags@ member of any element of @pCreateInfos@ contains the+-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the+-- @basePipelineIndex@ member of that same element is not @-1@,+-- @basePipelineIndex@ /must/ be less than the index into+-- @pCreateInfos@ that corresponds to that element+--+-- - If the @flags@ member of any element of @pCreateInfos@ contains the+-- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/+-- have been created with the+-- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - If @pipelineCache@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@+-- /must/ be a valid @VkPipelineCache@ handle+--+-- - @pCreateInfos@ /must/ be a valid pointer to an array of+-- @createInfoCount@ valid @VkComputePipelineCreateInfo@ structures+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - @pPipelines@ /must/ be a valid pointer to an array of+-- @createInfoCount@ @VkPipeline@ handles+--+-- - @createInfoCount@ /must/ be greater than @0@+--+-- - If @pipelineCache@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- - @VK_ERROR_INVALID_SHADER_NV@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'VkComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline',+-- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'+foreign import ccall "vkCreateComputePipelines" vkCreateComputePipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult+-- | vkDestroyPipeline - Destroy a pipeline object+--+-- = Parameters+--+-- - @device@ is the logical device that destroys the pipeline.+--+-- - @pipeline@ is the handle of the pipeline to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to @pipeline@ /must/ have+-- completed execution+--+-- - If @VkAllocationCallbacks@ were provided when @pipeline@ was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no @VkAllocationCallbacks@ were provided when @pipeline@ was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - If @pipeline@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipeline@ /must/+-- be a valid @VkPipeline@ handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - If @pipeline@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from @device@+--+-- == Host Synchronization+--+-- - Host access to @pipeline@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline'+foreign import ccall "vkDestroyPipeline" vkDestroyPipeline :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- | VkOffset2D - Structure specifying a two-dimensional offset+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',+-- 'VkRect2D',+-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR'+data VkOffset2D = VkOffset2D+ { -- | @x@ is the x offset.+ vkX :: Int32+ , -- | @y@ is the y offset.+ vkY :: Int32+ }+ deriving (Eq, Show)++instance Storable VkOffset2D where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek ptr = VkOffset2D <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkOffset2D))+ *> poke (ptr `plusPtr` 4) (vkY (poked :: VkOffset2D))+-- | VkExtent2D - Structure specifying a two-dimensional extent+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeParametersKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',+-- 'VkRect2D',+-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'+data VkExtent2D = VkExtent2D+ { -- | @width@ is the width of the extent.+ vkWidth :: Word32+ , -- | @height@ is the height of the extent.+ vkHeight :: Word32+ }+ deriving (Eq, Show)++instance Storable VkExtent2D where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek ptr = VkExtent2D <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent2D))+ *> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent2D))+-- | VkViewport - Structure specifying a viewport+--+-- = Description+--+-- The framebuffer depth coordinate @z@f /may/ be represented using either+-- a fixed-point or floating-point representation. However, a+-- floating-point representation /must/ be used if the depth\/stencil+-- attachment has a floating-point depth component. If an m-bit fixed-point+-- representation is used, we assume that it represents each value+-- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …, 2m-1 }, as k (e.g. 1.0 is+-- represented in binary as a string of all ones).+--+-- The viewport parameters shown in the above equations are found from+-- these values as+--+-- - ox = @x@ + @width@ \/ 2+--+-- - oy = @y@ + @height@ \/ 2+--+-- - oz = @minDepth@+--+-- - px = @width@+--+-- - py = @height@+--+-- - pz = @maxDepth@ - @minDepth@.+--+-- The application /can/ specify a negative term for @height@, which has+-- the effect of negating the y coordinate in clip space before performing+-- the transform. When using a negative @height@, the application /should/+-- also adjust the @y@ value to point to the lower left corner of the+-- viewport instead of the upper left corner. Using the negative @height@+-- allows the application to avoid having to negate the y component of the+-- @Position@ output from the last vertex processing stage in shaders that+-- also target other graphics APIs.+--+-- The width and height of the [implementation-dependent maximum viewport+-- dimensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxViewportDimensions)+-- /must/ be greater than or equal to the width and height of the largest+-- image which /can/ be created and attached to a framebuffer.+--+-- The floating-point viewport bounds are represented with an+-- [implementation-dependent+-- precision](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-viewportSubPixelBits).+--+-- == Valid Usage+--+-- - @width@ /must/ be greater than @0.0@+--+-- - @width@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[0]+--+-- - The absolute value of @height@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[1]+--+-- - @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]+--+-- - (@x@ + @width@) /must/ be less than or equal to+-- @viewportBoundsRange@[1]+--+-- - @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]+--+-- - @y@ /must/ be less than or equal to @viewportBoundsRange@[1]+--+-- - (@y@ + @height@) /must/ be greater than or equal to+-- @viewportBoundsRange@[0]+--+-- - (@y@ + @height@) /must/ be less than or equal to+-- @viewportBoundsRange@[1]+--+-- - Unless @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is enabled @minDepth@ /must/ be between @0.0@ and @1.0@,+-- inclusive+--+-- - Unless @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is enabled @maxDepth@ /must/ be between @0.0@ and @1.0@,+-- inclusive+--+-- = See Also+--+-- 'VkPipelineViewportStateCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport'+data VkViewport = VkViewport+ { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).+ vkX :: CFloat+ , -- No documentation found for Nested "VkViewport" "y"+ vkY :: CFloat+ , -- | @width@ and @height@ are the viewport’s width and height, respectively.+ vkWidth :: CFloat+ , -- No documentation found for Nested "VkViewport" "height"+ vkHeight :: CFloat+ , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport. It is+ -- valid for @minDepth@ to be greater than or equal to @maxDepth@.+ vkMinDepth :: CFloat+ , -- No documentation found for Nested "VkViewport" "maxDepth"+ vkMaxDepth :: CFloat+ }+ deriving (Eq, Show)++instance Storable VkViewport where+ sizeOf ~_ = 24+ alignment ~_ = 4+ peek ptr = VkViewport <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkViewport))+ *> poke (ptr `plusPtr` 4) (vkY (poked :: VkViewport))+ *> poke (ptr `plusPtr` 8) (vkWidth (poked :: VkViewport))+ *> poke (ptr `plusPtr` 12) (vkHeight (poked :: VkViewport))+ *> poke (ptr `plusPtr` 16) (vkMinDepth (poked :: VkViewport))+ *> poke (ptr `plusPtr` 20) (vkMaxDepth (poked :: VkViewport))+-- | VkRect2D - Structure specifying a two-dimensional subregion+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkClearRect',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',+-- 'VkExtent2D', 'VkOffset2D',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT',+-- 'VkPipelineViewportStateCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.vkCmdSetDiscardRectangleEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR'+data VkRect2D = VkRect2D+ { -- | @offset@ is a 'VkOffset2D' specifying the rectangle offset.+ vkOffset :: VkOffset2D+ , -- | @extent@ is a 'VkExtent2D' specifying the rectangle extent.+ vkExtent :: VkExtent2D+ }+ deriving (Eq, Show)++instance Storable VkRect2D where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek ptr = VkRect2D <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkOffset (poked :: VkRect2D))+ *> poke (ptr `plusPtr` 8) (vkExtent (poked :: VkRect2D))+-- | VkSpecializationMapEntry - Structure specifying a specialization map+-- entry+--+-- = Description+--+-- If a @constantID@ value is not a specialization constant ID used in the+-- shader, that map entry does not affect the behavior of the pipeline.+--+-- == Valid Usage+--+-- - For a @constantID@ specialization constant declared in a shader,+-- @size@ /must/ match the byte size of the @constantID@. If the+-- specialization constant is of type @boolean@, @size@ /must/ be the+-- byte size of @VkBool32@+--+-- = See Also+--+-- 'VkSpecializationInfo'+data VkSpecializationMapEntry = VkSpecializationMapEntry+ { -- | @constantID@ is the ID of the specialization constant in SPIR-V.+ vkConstantID :: Word32+ , -- | @offset@ is the byte offset of the specialization constant value within+ -- the supplied data buffer.+ vkOffset :: Word32+ , -- | @size@ is the byte size of the specialization constant value within the+ -- supplied data buffer.+ vkSize :: CSize+ }+ deriving (Eq, Show)++instance Storable VkSpecializationMapEntry where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek ptr = VkSpecializationMapEntry <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkConstantID (poked :: VkSpecializationMapEntry))+ *> poke (ptr `plusPtr` 4) (vkOffset (poked :: VkSpecializationMapEntry))+ *> poke (ptr `plusPtr` 8) (vkSize (poked :: VkSpecializationMapEntry))+-- | VkSpecializationInfo - Structure specifying specialization info+--+-- = Description+--+-- @pMapEntries@ points to a structure of type 'VkSpecializationMapEntry'.+--+-- == Valid Usage+--+-- - The @offset@ member of each element of @pMapEntries@ /must/ be less+-- than @dataSize@+--+-- - The @size@ member of each element of @pMapEntries@ /must/ be less+-- than or equal to @dataSize@ minus @offset@+--+-- - If @mapEntryCount@ is not @0@, @pMapEntries@ /must/ be a valid+-- pointer to an array of @mapEntryCount@ valid+-- @VkSpecializationMapEntry@ structures+--+-- == Valid Usage (Implicit)+--+-- - If @dataSize@ is not @0@, @pData@ /must/ be a valid pointer to an+-- array of @dataSize@ bytes+--+-- = See Also+--+-- 'VkPipelineShaderStageCreateInfo', 'VkSpecializationMapEntry'+data VkSpecializationInfo = VkSpecializationInfo+ { -- | @mapEntryCount@ is the number of entries in the @pMapEntries@ array.+ vkMapEntryCount :: Word32+ , -- | @pMapEntries@ is a pointer to an array of @VkSpecializationMapEntry@+ -- which maps constant IDs to offsets in @pData@.+ vkPMapEntries :: Ptr VkSpecializationMapEntry+ , -- | @dataSize@ is the byte size of the @pData@ buffer.+ vkDataSize :: CSize+ , -- | @pData@ contains the actual constant values to specialize with.+ vkPData :: Ptr ()+ }+ deriving (Eq, Show)++instance Storable VkSpecializationInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek ptr = VkSpecializationInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 24)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkMapEntryCount (poked :: VkSpecializationInfo))+ *> poke (ptr `plusPtr` 8) (vkPMapEntries (poked :: VkSpecializationInfo))+ *> poke (ptr `plusPtr` 16) (vkDataSize (poked :: VkSpecializationInfo))+ *> poke (ptr `plusPtr` 24) (vkPData (poked :: VkSpecializationInfo))+-- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a+-- newly created pipeline shader stage+--+-- == Valid Usage+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @stage@ /must/ not be+-- @VK_SHADER_STAGE_GEOMETRY_BIT@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @stage@ /must/ not be+-- @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or+-- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@+--+-- - @stage@ /must/ not be @VK_SHADER_STAGE_ALL_GRAPHICS@, or+-- @VK_SHADER_STAGE_ALL@+--+-- - @pName@ /must/ be the name of an @OpEntryPoint@ in @module@ with an+-- execution model that matches @stage@+--+-- - If the identified entry point includes any variable in its interface+-- that is declared with the @ClipDistance@ @BuiltIn@ decoration, that+-- variable /must/ not have an array size greater than+-- @VkPhysicalDeviceLimits@::@maxClipDistances@+--+-- - If the identified entry point includes any variable in its interface+-- that is declared with the @CullDistance@ @BuiltIn@ decoration, that+-- variable /must/ not have an array size greater than+-- @VkPhysicalDeviceLimits@::@maxCullDistances@+--+-- - If the identified entry point includes any variables in its+-- interface that are declared with the @ClipDistance@ or+-- @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have+-- array sizes which sum to more than+-- @VkPhysicalDeviceLimits@::@maxCombinedClipAndCullDistances@+--+-- - If the identified entry point includes any variable in its interface+-- that is declared with the @SampleMask@ @BuiltIn@ decoration, that+-- variable /must/ not have an array size greater than+-- @VkPhysicalDeviceLimits@::@maxSampleMaskWords@+--+-- - If @stage@ is @VK_SHADER_STAGE_VERTEX_BIT@, the identified entry+-- point /must/ not include any input variable in its interface that is+-- decorated with @CullDistance@+--+-- - If @stage@ is @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or+-- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@, and the identified+-- entry point has an @OpExecutionMode@ instruction that specifies a+-- patch size with @OutputVertices@, the patch size /must/ be greater+-- than @0@ and less than or equal to+-- @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@+--+-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry+-- point /must/ have an @OpExecutionMode@ instruction that specifies a+-- maximum output vertex count that is greater than @0@ and less than+-- or equal to @VkPhysicalDeviceLimits@::@maxGeometryOutputVertices@+--+-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry+-- point /must/ have an @OpExecutionMode@ instruction that specifies an+-- invocation count that is greater than @0@ and less than or equal to+-- @VkPhysicalDeviceLimits@::@maxGeometryShaderInvocations@+--+-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified+-- entry point writes to @Layer@ for any primitive, it /must/ write the+-- same value to @Layer@ for all vertices of a given primitive+--+-- - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified+-- entry point writes to @ViewportIndex@ for any primitive, it /must/+-- write the same value to @ViewportIndex@ for all vertices of a given+-- primitive+--+-- - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, the identified entry+-- point /must/ not include any output variables in its interface+-- decorated with @CullDistance@+--+-- - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified+-- entry point writes to @FragDepth@ in any execution path, it /must/+-- write to @FragDepth@ in all execution paths+--+-- - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified+-- entry point writes to @FragStencilRefEXT@ in any execution path, it+-- /must/ write to @FragStencilRefEXT@ in all execution paths+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be @0@+--+-- - @stage@ /must/ be a valid 'VkShaderStageFlagBits' value+--+-- - @module@ /must/ be a valid @VkShaderModule@ handle+--+-- - @pName@ /must/ be a null-terminated UTF-8 string+--+-- - If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/+-- be a valid pointer to a valid @VkSpecializationInfo@ structure+--+-- = See Also+--+-- 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineShaderStageCreateFlags',+-- 'Graphics.Vulkan.Core10.Shader.VkShaderModule', 'VkShaderStageFlagBits',+-- 'VkSpecializationInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineShaderStageCreateInfo = VkPipelineShaderStageCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineShaderStageCreateFlags+ , -- | @stage@ is a 'VkShaderStageFlagBits' value specifying a single pipeline+ -- stage.+ vkStage :: VkShaderStageFlagBits+ , -- | @module@ is a @VkShaderModule@ object that contains the shader for this+ -- stage.+ vkModule :: VkShaderModule+ , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the+ -- entry point name of the shader for this stage.+ vkPName :: Ptr CChar+ , -- | @pSpecializationInfo@ is a pointer to 'VkSpecializationInfo', as+ -- described in [Specialization+ -- Constants](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-specialization-constants),+ -- and /can/ be @NULL@.+ vkPSpecializationInfo :: Ptr VkSpecializationInfo+ }+ deriving (Eq, Show)++instance Storable VkPipelineShaderStageCreateInfo where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek ptr = VkPipelineShaderStageCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineShaderStageCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineShaderStageCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineShaderStageCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkStage (poked :: VkPipelineShaderStageCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkModule (poked :: VkPipelineShaderStageCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkPName (poked :: VkPipelineShaderStageCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkPSpecializationInfo (poked :: VkPipelineShaderStageCreateInfo))+-- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly+-- created compute pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in [Pipeline+-- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives).+--+-- @stage@ points to a structure of type @VkPipelineShaderStageCreateInfo@.+--+-- == Valid Usage+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a+-- valid handle to a compute @VkPipeline@+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineHandle@ is+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @basePipelineIndex@ /must/ be a valid index into the calling+-- command’s @pCreateInfos@ parameter+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineHandle@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @basePipelineIndex@ /must/ be -1+--+-- - The @stage@ member of @stage@ /must/ be+-- @VK_SHADER_STAGE_COMPUTE_BIT@+--+-- - The shader code for the entry point identified by @stage@ and the+-- rest of the state identified by this structure /must/ adhere to the+-- pipeline linking rules described in the [Shader+-- Interfaces](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces)+-- chapter+--+-- - @layout@ /must/ be+-- [consistent](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency)+-- with the layout of the compute shader specified in @stage@+--+-- - The number of resources in @layout@ accessible to the compute shader+-- stage /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxPerStageResources@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'+-- values+--+-- - @stage@ /must/ be a valid @VkPipelineShaderStageCreateInfo@+-- structure+--+-- - @layout@ /must/ be a valid @VkPipelineLayout@ handle+--+-- - Both of @basePipelineHandle@, and @layout@ that are valid handles+-- /must/ have been created, allocated, or retrieved from the same+-- @VkDevice@+--+-- = See Also+--+-- 'VkPipeline', 'VkPipelineCreateFlags', 'VkPipelineLayout',+-- 'VkPipelineShaderStageCreateInfo',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkCreateComputePipelines'+data VkComputePipelineCreateInfo = VkComputePipelineCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is a bitmask of 'VkPipelineCreateFlagBits' specifying how the+ -- pipeline will be generated.+ vkFlags :: VkPipelineCreateFlags+ , -- | @stage@ is a 'VkPipelineShaderStageCreateInfo' describing the compute+ -- shader.+ vkStage :: VkPipelineShaderStageCreateInfo+ , -- | @layout@ is the description of binding locations used by both the+ -- pipeline and descriptor sets used with the pipeline.+ vkLayout :: VkPipelineLayout+ , -- | @basePipelineHandle@ is a pipeline to derive from+ vkBasePipelineHandle :: VkPipeline+ , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+ -- as a pipeline to derive from+ vkBasePipelineIndex :: Int32+ }+ deriving (Eq, Show)++instance Storable VkComputePipelineCreateInfo where+ sizeOf ~_ = 96+ alignment ~_ = 8+ peek ptr = VkComputePipelineCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 72)+ <*> peek (ptr `plusPtr` 80)+ <*> peek (ptr `plusPtr` 88)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkComputePipelineCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkComputePipelineCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkComputePipelineCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkStage (poked :: VkComputePipelineCreateInfo))+ *> poke (ptr `plusPtr` 72) (vkLayout (poked :: VkComputePipelineCreateInfo))+ *> poke (ptr `plusPtr` 80) (vkBasePipelineHandle (poked :: VkComputePipelineCreateInfo))+ *> poke (ptr `plusPtr` 88) (vkBasePipelineIndex (poked :: VkComputePipelineCreateInfo))+-- | VkVertexInputBindingDescription - Structure specifying vertex input+-- binding description+--+-- == Valid Usage+--+-- - @binding@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@+--+-- - @stride@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxVertexInputBindingStride@+--+-- == Valid Usage (Implicit)+--+-- - @inputRate@ /must/ be a valid 'VkVertexInputRate' value+--+-- = See Also+--+-- 'VkPipelineVertexInputStateCreateInfo', 'VkVertexInputRate'+data VkVertexInputBindingDescription = VkVertexInputBindingDescription+ { -- | @binding@ is the binding number that this structure describes.+ vkBinding :: Word32+ , -- | @stride@ is the distance in bytes between two consecutive elements+ -- within the buffer.+ vkStride :: Word32+ , -- | @inputRate@ is a 'VkVertexInputRate' value specifying whether vertex+ -- attribute addressing is a function of the vertex index or of the+ -- instance index.+ vkInputRate :: VkVertexInputRate+ }+ deriving (Eq, Show)++instance Storable VkVertexInputBindingDescription where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek ptr = VkVertexInputBindingDescription <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkBinding (poked :: VkVertexInputBindingDescription))+ *> poke (ptr `plusPtr` 4) (vkStride (poked :: VkVertexInputBindingDescription))+ *> poke (ptr `plusPtr` 8) (vkInputRate (poked :: VkVertexInputBindingDescription))+-- | VkVertexInputAttributeDescription - Structure specifying vertex input+-- attribute description+--+-- == Valid Usage+--+-- - @location@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@+--+-- - @binding@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@+--+-- - @offset@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxVertexInputAttributeOffset@+--+-- - @format@ /must/ be allowed as a vertex buffer format, as specified+-- by the @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ flag in+-- @VkFormatProperties@::@bufferFeatures@ returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- == Valid Usage (Implicit)+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkFormat',+-- 'VkPipelineVertexInputStateCreateInfo'+data VkVertexInputAttributeDescription = VkVertexInputAttributeDescription+ { -- | @location@ is the shader binding location number for this attribute.+ vkLocation :: Word32+ , -- | @binding@ is the binding number which this attribute takes its data+ -- from.+ vkBinding :: Word32+ , -- | @format@ is the size and type of the vertex attribute data.+ vkFormat :: VkFormat+ , -- | @offset@ is a byte offset of this attribute relative to the start of an+ -- element in the vertex input binding.+ vkOffset :: Word32+ }+ deriving (Eq, Show)++instance Storable VkVertexInputAttributeDescription where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek ptr = VkVertexInputAttributeDescription <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkLocation (poked :: VkVertexInputAttributeDescription))+ *> poke (ptr `plusPtr` 4) (vkBinding (poked :: VkVertexInputAttributeDescription))+ *> poke (ptr `plusPtr` 8) (vkFormat (poked :: VkVertexInputAttributeDescription))+ *> poke (ptr `plusPtr` 12) (vkOffset (poked :: VkVertexInputAttributeDescription))+-- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline vertex input state+--+-- == Valid Usage+--+-- - @vertexBindingDescriptionCount@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@+--+-- - @vertexAttributeDescriptionCount@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@+--+-- - For every @binding@ specified by each element of+-- @pVertexAttributeDescriptions@, a @VkVertexInputBindingDescription@+-- /must/ exist in @pVertexBindingDescriptions@ with the same value of+-- @binding@+--+-- - All elements of @pVertexBindingDescriptions@ /must/ describe+-- distinct binding numbers+--+-- - All elements of @pVertexAttributeDescriptions@ /must/ describe+-- distinct attribute locations+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPipelineVertexInputDivisorStateCreateInfoEXT'+--+-- - @flags@ /must/ be @0@+--+-- - If @vertexBindingDescriptionCount@ is not @0@,+-- @pVertexBindingDescriptions@ /must/ be a valid pointer to an array+-- of @vertexBindingDescriptionCount@ valid+-- @VkVertexInputBindingDescription@ structures+--+-- - If @vertexAttributeDescriptionCount@ is not @0@,+-- @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array+-- of @vertexAttributeDescriptionCount@ valid+-- @VkVertexInputAttributeDescription@ structures+--+-- = See Also+--+-- 'VkGraphicsPipelineCreateInfo', 'VkPipelineVertexInputStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'VkVertexInputAttributeDescription', 'VkVertexInputBindingDescription'+data VkPipelineVertexInputStateCreateInfo = VkPipelineVertexInputStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineVertexInputStateCreateFlags+ , -- | @vertexBindingDescriptionCount@ is the number of vertex binding+ -- descriptions provided in @pVertexBindingDescriptions@.+ vkVertexBindingDescriptionCount :: Word32+ , -- | @pVertexBindingDescriptions@ is a pointer to an array of+ -- @VkVertexInputBindingDescription@ structures.+ vkPVertexBindingDescriptions :: Ptr VkVertexInputBindingDescription+ , -- | @vertexAttributeDescriptionCount@ is the number of vertex attribute+ -- descriptions provided in @pVertexAttributeDescriptions@.+ vkVertexAttributeDescriptionCount :: Word32+ , -- | @pVertexAttributeDescriptions@ is a pointer to an array of+ -- @VkVertexInputAttributeDescription@ structures.+ vkPVertexAttributeDescriptions :: Ptr VkVertexInputAttributeDescription+ }+ deriving (Eq, Show)++instance Storable VkPipelineVertexInputStateCreateInfo where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek ptr = VkPipelineVertexInputStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineVertexInputStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineVertexInputStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineVertexInputStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkVertexBindingDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkPVertexBindingDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkVertexAttributeDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkPVertexAttributeDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))+-- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline input assembly state+--+-- = Description+--+-- Restarting the assembly of primitives discards the most recent index+-- values if those elements formed an incomplete primitive, and restarts+-- the primitive assembly using the subsequent indices, but only assembling+-- the immediately following element through the end of the originally+-- specified elements. The primitive restart index value comparison is+-- performed before adding the @vertexOffset@ value to the index value.+--+-- == Valid Usage+--+-- - If @topology@ is @VK_PRIMITIVE_TOPOLOGY_POINT_LIST@,+-- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST@,+-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST@,+-- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,+-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or+-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @primitiveRestartEnable@ /must/+-- be @VK_FALSE@+--+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)+-- feature is not enabled, @topology@ /must/ not be any of+-- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,+-- @VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY@,+-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or+-- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY@+--+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)+-- feature is not enabled, @topology@ /must/ not be+-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be @0@+--+-- - @topology@ /must/ be a valid 'VkPrimitiveTopology' value+--+-- = See Also+--+-- @VkBool32@, 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineInputAssemblyStateCreateFlags', 'VkPrimitiveTopology',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineInputAssemblyStateCreateInfo = VkPipelineInputAssemblyStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineInputAssemblyStateCreateFlags+ , -- | @topology@ is a 'VkPrimitiveTopology' defining the primitive topology,+ -- as described below.+ vkTopology :: VkPrimitiveTopology+ , -- | @primitiveRestartEnable@ controls whether a special vertex index value+ -- is treated as restarting the assembly of primitives. This enable only+ -- applies to indexed draws+ -- ('Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexed' and+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect'),+ -- and the special index value is either 0xFFFFFFFF when the @indexType@+ -- parameter of @vkCmdBindIndexBuffer@ is equal to @VK_INDEX_TYPE_UINT32@,+ -- or 0xFFFF when @indexType@ is equal to @VK_INDEX_TYPE_UINT16@. Primitive+ -- restart is not allowed for “list” topologies.+ vkPrimitiveRestartEnable :: VkBool32+ }+ deriving (Eq, Show)++instance Storable VkPipelineInputAssemblyStateCreateInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek ptr = VkPipelineInputAssemblyStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineInputAssemblyStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineInputAssemblyStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineInputAssemblyStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkTopology (poked :: VkPipelineInputAssemblyStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkPrimitiveRestartEnable (poked :: VkPipelineInputAssemblyStateCreateInfo))+-- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline tessellation state+--+-- == Valid Usage+--+-- - @patchControlPoints@ /must/ be greater than zero and less than or+-- equal to @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPipelineTessellationDomainOriginStateCreateInfo'+--+-- - @flags@ /must/ be @0@+--+-- = See Also+--+-- 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineTessellationStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineTessellationStateCreateInfo = VkPipelineTessellationStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineTessellationStateCreateFlags+ , -- | @patchControlPoints@ number of control points per patch.+ vkPatchControlPoints :: Word32+ }+ deriving (Eq, Show)++instance Storable VkPipelineTessellationStateCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek ptr = VkPipelineTessellationStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineTessellationStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineTessellationStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineTessellationStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkPatchControlPoints (poked :: VkPipelineTessellationStateCreateInfo))+-- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a+-- newly created pipeline viewport state+--+-- == Valid Usage+--+-- - If the [multiple+-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)+-- feature is not enabled, @viewportCount@ /must/ be @1@+--+-- - If the [multiple+-- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)+-- feature is not enabled, @scissorCount@ /must/ be @1@+--+-- - @viewportCount@ /must/ be between @1@ and+-- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive+--+-- - @scissorCount@ /must/ be between @1@ and+-- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive+--+-- - @scissorCount@ and @viewportCount@ /must/ be identical+--+-- - If the @viewportWScalingEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'+-- structure chained to the @pNext@ chain is @VK_TRUE@, the+-- @viewportCount@ member of the+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'+-- structure /must/ be equal to @viewportCount@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.VkPipelineViewportSwizzleStateCreateInfoNV'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- - @flags@ /must/ be @0@+--+-- - @viewportCount@ /must/ be greater than @0@+--+-- - @scissorCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'VkGraphicsPipelineCreateInfo', 'VkPipelineViewportStateCreateFlags',+-- 'VkRect2D', 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkViewport'+data VkPipelineViewportStateCreateInfo = VkPipelineViewportStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineViewportStateCreateFlags+ , -- | @viewportCount@ is the number of viewports used by the pipeline.+ vkViewportCount :: Word32+ , -- | @pViewports@ is a pointer to an array of 'VkViewport' structures,+ -- defining the viewport transforms. If the viewport state is dynamic, this+ -- member is ignored.+ vkPViewports :: Ptr VkViewport+ , -- | @scissorCount@ is the number of+ -- [scissors](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-scissor)+ -- and /must/ match the number of viewports.+ vkScissorCount :: Word32+ , -- | @pScissors@ is a pointer to an array of @VkRect2D@ structures which+ -- define the rectangular bounds of the scissor for the corresponding+ -- viewport. If the scissor state is dynamic, this member is ignored.+ vkPScissors :: Ptr VkRect2D+ }+ deriving (Eq, Show)++instance Storable VkPipelineViewportStateCreateInfo where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek ptr = VkPipelineViewportStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineViewportStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkPViewports (poked :: VkPipelineViewportStateCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkScissorCount (poked :: VkPipelineViewportStateCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkPScissors (poked :: VkPipelineViewportStateCreateInfo))+-- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline rasterization state+--+-- = Description+--+-- The application /can/ also add a+-- @VkPipelineRasterizationStateRasterizationOrderAMD@ structure to the+-- @pNext@ chain of a @VkPipelineRasterizationStateCreateInfo@ structure.+-- This structure enables selecting the rasterization order to use when+-- rendering with the corresponding graphics pipeline as described in+-- [Rasterization+-- Order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primrast-order).+--+-- == Valid Usage+--+-- - If the [depth+-- clamping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthClamp)+-- feature is not enabled, @depthClampEnable@ /must/ be @VK_FALSE@+--+-- - If the [non-solid fill+-- modes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-fillModeNonSolid)+-- feature is not enabled, @polygonMode@ /must/ be+-- @VK_POLYGON_MODE_FILL@ or @VK_POLYGON_MODE_FILL_RECTANGLE_NV@+--+-- - If the @{html_spec_relative}#VK_NV_fill_rectangle@ extension is not+-- enabled, @polygonMode@ /must/ not be+-- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPipelineRasterizationConservativeStateCreateInfoEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.VkPipelineRasterizationStateRasterizationOrderAMD'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- - @flags@ /must/ be @0@+--+-- - @polygonMode@ /must/ be a valid 'VkPolygonMode' value+--+-- - @cullMode@ /must/ be a valid combination of 'VkCullModeFlagBits'+-- values+--+-- - @frontFace@ /must/ be a valid 'VkFrontFace' value+--+-- = See Also+--+-- @VkBool32@, 'VkCullModeFlags', 'VkFrontFace',+-- 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineRasterizationStateCreateFlags', 'VkPolygonMode',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineRasterizationStateCreateInfo = VkPipelineRasterizationStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineRasterizationStateCreateFlags+ , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values+ -- instead of clipping primitives to the z planes of the frustum, as+ -- described in [Primitive+ -- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping).+ vkDepthClampEnable :: VkBool32+ , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded+ -- immediately before the rasterization stage.+ vkRasterizerDiscardEnable :: VkBool32+ , -- | @polygonMode@ is the triangle rendering mode. See 'VkPolygonMode'.+ vkPolygonMode :: VkPolygonMode+ , -- | @cullMode@ is the triangle facing direction used for primitive culling.+ -- See 'VkCullModeFlagBits'.+ vkCullMode :: VkCullModeFlags+ , -- | @frontFace@ is a 'VkFrontFace' value specifying the front-facing+ -- triangle orientation to be used for culling.+ vkFrontFace :: VkFrontFace+ , -- | @depthBiasEnable@ controls whether to bias fragment depth values.+ vkDepthBiasEnable :: VkBool32+ , -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant+ -- depth value added to each fragment.+ vkDepthBiasConstantFactor :: CFloat+ , -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.+ vkDepthBiasClamp :: CFloat+ , -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope+ -- in depth bias calculations.+ vkDepthBiasSlopeFactor :: CFloat+ , -- | @lineWidth@ is the width of rasterized line segments.+ vkLineWidth :: CFloat+ }+ deriving (Eq, Show)++instance Storable VkPipelineRasterizationStateCreateInfo where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek ptr = VkPipelineRasterizationStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 36)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 44)+ <*> peek (ptr `plusPtr` 48)+ <*> peek (ptr `plusPtr` 52)+ <*> peek (ptr `plusPtr` 56)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkDepthClampEnable (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkRasterizerDiscardEnable (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 28) (vkPolygonMode (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkCullMode (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 36) (vkFrontFace (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkDepthBiasEnable (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 44) (vkDepthBiasConstantFactor (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 52) (vkDepthBiasSlopeFactor (poked :: VkPipelineRasterizationStateCreateInfo))+ *> poke (ptr `plusPtr` 56) (vkLineWidth (poked :: VkPipelineRasterizationStateCreateInfo))+-- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline multisample state+--+-- == Valid Usage+--+-- - If the [sample rate+-- shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sampleRateShading)+-- feature is not enabled, @sampleShadingEnable@ /must/ be @VK_FALSE@+--+-- - If the [alpha to+-- one](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-alphaToOne)+-- feature is not enabled, @alphaToOneEnable@ /must/ be @VK_FALSE@+--+-- - @minSampleShading@ /must/ be in the range [0,1]+--+-- - If the subpass has any color attachments and @rasterizationSamples@+-- is greater than the number of color samples, then+-- @sampleShadingEnable@ /must/ be @VK_FALSE@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.VkPipelineCoverageModulationStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.VkPipelineCoverageToColorStateCreateInfoNV',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- - @flags@ /must/ be @0@+--+-- - @rasterizationSamples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'+-- value+--+-- - If @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid+-- pointer to an array of+-- \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)+-- @VkSampleMask@ values+--+-- = See Also+--+-- @VkBool32@, 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineMultisampleStateCreateFlags',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',+-- @VkSampleMask@, 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineMultisampleStateCreateInfo = VkPipelineMultisampleStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineMultisampleStateCreateFlags+ , -- | @rasterizationSamples@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'+ -- specifying the number of samples per pixel used in rasterization.+ vkRasterizationSamples :: VkSampleCountFlagBits+ , -- | @sampleShadingEnable@ /can/ be used to enable [Sample+ -- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading).+ vkSampleShadingEnable :: VkBool32+ , -- | @minSampleShading@ specifies a minimum fraction of sample shading if+ -- @sampleShadingEnable@ is set to @VK_TRUE@.+ vkMinSampleShading :: CFloat+ , -- | @pSampleMask@ is a bitmask of static coverage information that is ANDed+ -- with the coverage information generated during rasterization, as+ -- described in [Sample+ -- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-samplemask).+ vkPSampleMask :: Ptr VkSampleMask+ , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is+ -- generated based on the alpha component of the fragment’s first color+ -- output as specified in the [Multisample+ -- Coverage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-covg)+ -- section.+ vkAlphaToCoverageEnable :: VkBool32+ , -- | @alphaToOneEnable@ controls whether the alpha component of the+ -- fragment’s first color output is replaced with one as described in+ -- [Multisample+ -- Coverage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-covg).+ vkAlphaToOneEnable :: VkBool32+ }+ deriving (Eq, Show)++instance Storable VkPipelineMultisampleStateCreateInfo where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek ptr = VkPipelineMultisampleStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 44)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkRasterizationSamples (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkSampleShadingEnable (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 28) (vkMinSampleShading (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkPSampleMask (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkAlphaToCoverageEnable (poked :: VkPipelineMultisampleStateCreateInfo))+ *> poke (ptr `plusPtr` 44) (vkAlphaToOneEnable (poked :: VkPipelineMultisampleStateCreateInfo))+-- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline+-- color blend attachment state+--+-- == Valid Usage+--+-- - If the [dual source+-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)+-- feature is not enabled, @srcColorBlendFactor@ /must/ not be+-- @VK_BLEND_FACTOR_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@+--+-- - If the [dual source+-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)+-- feature is not enabled, @dstColorBlendFactor@ /must/ not be+-- @VK_BLEND_FACTOR_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@+--+-- - If the [dual source+-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)+-- feature is not enabled, @srcAlphaBlendFactor@ /must/ not be+-- @VK_BLEND_FACTOR_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@+--+-- - If the [dual source+-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)+-- feature is not enabled, @dstAlphaBlendFactor@ /must/ not be+-- @VK_BLEND_FACTOR_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,+-- @VK_BLEND_FACTOR_SRC1_ALPHA@, or+-- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@+--+-- - If either of @colorBlendOp@ or @alphaBlendOp@ is an [advanced blend+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),+-- then @colorBlendOp@ /must/ equal @alphaBlendOp@+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@+-- is @VK_FALSE@ and @colorBlendOp@ is an [advanced blend+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),+-- then @colorBlendOp@ /must/ be the same for all attachments.+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@+-- is @VK_FALSE@ and @alphaBlendOp@ is an [advanced blend+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),+-- then @alphaBlendOp@ /must/ be the same for all attachments.+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@+-- is @VK_FALSE@, then @colorBlendOp@ /must/ not be+-- @VK_BLEND_OP_ZERO_EXT@, @VK_BLEND_OP_SRC_EXT@,+-- @VK_BLEND_OP_DST_EXT@, @VK_BLEND_OP_SRC_OVER_EXT@,+-- @VK_BLEND_OP_DST_OVER_EXT@, @VK_BLEND_OP_SRC_IN_EXT@,+-- @VK_BLEND_OP_DST_IN_EXT@, @VK_BLEND_OP_SRC_OUT_EXT@,+-- @VK_BLEND_OP_DST_OUT_EXT@, @VK_BLEND_OP_SRC_ATOP_EXT@,+-- @VK_BLEND_OP_DST_ATOP_EXT@, @VK_BLEND_OP_XOR_EXT@,+-- @VK_BLEND_OP_INVERT_EXT@, @VK_BLEND_OP_INVERT_RGB_EXT@,+-- @VK_BLEND_OP_LINEARDODGE_EXT@, @VK_BLEND_OP_LINEARBURN_EXT@,+-- @VK_BLEND_OP_VIVIDLIGHT_EXT@, @VK_BLEND_OP_LINEARLIGHT_EXT@,+-- @VK_BLEND_OP_PINLIGHT_EXT@, @VK_BLEND_OP_HARDMIX_EXT@,+-- @VK_BLEND_OP_PLUS_EXT@, @VK_BLEND_OP_PLUS_CLAMPED_EXT@,+-- @VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT@, @VK_BLEND_OP_PLUS_DARKER_EXT@,+-- @VK_BLEND_OP_MINUS_EXT@, @VK_BLEND_OP_MINUS_CLAMPED_EXT@,+-- @VK_BLEND_OP_CONTRAST_EXT@, @VK_BLEND_OP_INVERT_OVG_EXT@,+-- @VK_BLEND_OP_RED_EXT@, @VK_BLEND_OP_GREEN_EXT@, or+-- @VK_BLEND_OP_BLUE_EXT@+--+-- - If @colorBlendOp@ or @alphaBlendOp@ is an [advanced blend+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),+-- then+-- 'Graphics.Vulkan.Core10.Pass.VkSubpassDescription'::@colorAttachmentCount@+-- of the subpass this pipeline is compiled against /must/ be less than+-- or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::advancedBlendMaxColorAttachments+--+-- == Valid Usage (Implicit)+--+-- - @srcColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value+--+-- - @dstColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value+--+-- - @colorBlendOp@ /must/ be a valid 'VkBlendOp' value+--+-- - @srcAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value+--+-- - @dstAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value+--+-- - @alphaBlendOp@ /must/ be a valid 'VkBlendOp' value+--+-- - @colorWriteMask@ /must/ be a valid combination of+-- 'VkColorComponentFlagBits' values+--+-- = See Also+--+-- 'VkBlendFactor', 'VkBlendOp', @VkBool32@, 'VkColorComponentFlags',+-- 'VkPipelineColorBlendStateCreateInfo'+data VkPipelineColorBlendAttachmentState = VkPipelineColorBlendAttachmentState+ { -- | @blendEnable@ controls whether blending is enabled for the corresponding+ -- color attachment. If blending is not enabled, the source fragment’s+ -- color for that attachment is passed through unmodified.+ vkBlendEnable :: VkBool32+ , -- | @srcColorBlendFactor@ selects which blend factor is used to determine+ -- the source factors (Sr,Sg,Sb).+ vkSrcColorBlendFactor :: VkBlendFactor+ , -- | @dstColorBlendFactor@ selects which blend factor is used to determine+ -- the destination factors (Dr,Dg,Db).+ vkDstColorBlendFactor :: VkBlendFactor+ , -- | @colorBlendOp@ selects which blend operation is used to calculate the+ -- RGB values to write to the color attachment.+ vkColorBlendOp :: VkBlendOp+ , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine+ -- the source factor Sa.+ vkSrcAlphaBlendFactor :: VkBlendFactor+ , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine+ -- the destination factor Da.+ vkDstAlphaBlendFactor :: VkBlendFactor+ , -- | @alphaBlendOp@ selects which blend operation is use to calculate the+ -- alpha values to write to the color attachment.+ vkAlphaBlendOp :: VkBlendOp+ , -- | @colorWriteMask@ is a bitmask of 'VkColorComponentFlagBits' specifying+ -- which of the R, G, B, and\/or A components are enabled for writing, as+ -- described for the [Color Write+ -- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-color-write-mask).+ vkColorWriteMask :: VkColorComponentFlags+ }+ deriving (Eq, Show)++instance Storable VkPipelineColorBlendAttachmentState where+ sizeOf ~_ = 32+ alignment ~_ = 4+ peek ptr = VkPipelineColorBlendAttachmentState <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkBlendEnable (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 4) (vkSrcColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 8) (vkDstColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 12) (vkColorBlendOp (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 16) (vkSrcAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 20) (vkDstAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 24) (vkAlphaBlendOp (poked :: VkPipelineColorBlendAttachmentState))+ *> poke (ptr `plusPtr` 28) (vkColorWriteMask (poked :: VkPipelineColorBlendAttachmentState))+-- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of+-- a newly created pipeline color blend state+--+-- = Description+--+-- Each element of the @pAttachments@ array is a+-- 'VkPipelineColorBlendAttachmentState' structure specifying per-target+-- blending state for each individual color attachment. If the [independent+-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-independentBlend)+-- feature is not enabled on the device, all+-- 'VkPipelineColorBlendAttachmentState' elements in the @pAttachments@+-- array /must/ be identical.+--+-- == Valid Usage+--+-- - If the [independent+-- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-independentBlend)+-- feature is not enabled, all elements of @pAttachments@ /must/ be+-- identical+--+-- - If the [logic+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-logicOp)+-- feature is not enabled, @logicOpEnable@ /must/ be @VK_FALSE@+--+-- - If @logicOpEnable@ is @VK_TRUE@, @logicOp@ /must/ be a valid+-- 'VkLogicOp' value+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPipelineColorBlendAdvancedStateCreateInfoEXT'+--+-- - @flags@ /must/ be @0@+--+-- - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid+-- pointer to an array of @attachmentCount@ valid+-- @VkPipelineColorBlendAttachmentState@ structures+--+-- = See Also+--+-- @VkBool32@, 'VkGraphicsPipelineCreateInfo', 'VkLogicOp',+-- 'VkPipelineColorBlendAttachmentState',+-- 'VkPipelineColorBlendStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineColorBlendStateCreateInfo = VkPipelineColorBlendStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineColorBlendStateCreateFlags+ , -- | @logicOpEnable@ controls whether to apply [Logical+ -- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-logicop).+ vkLogicOpEnable :: VkBool32+ , -- | @logicOp@ selects which logical operation to apply.+ vkLogicOp :: VkLogicOp+ , -- | @attachmentCount@ is the number of @VkPipelineColorBlendAttachmentState@+ -- elements in @pAttachments@. This value /must/ equal the+ -- @colorAttachmentCount@ for the subpass in which this pipeline is used.+ vkAttachmentCount :: Word32+ , -- | @pAttachments@: is a pointer to array of per target attachment states.+ vkPAttachments :: Ptr VkPipelineColorBlendAttachmentState+ , -- | @blendConstants@ is an array of four values used as the R, G, B, and A+ -- components of the blend constant that are used in blending, depending on+ -- the [blend+ -- factor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendfactors).+ vkBlendConstants :: Vector 4 CFloat+ }+ deriving (Eq, Show)++instance Storable VkPipelineColorBlendStateCreateInfo where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek ptr = VkPipelineColorBlendStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkLogicOpEnable (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkLogicOp (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 28) (vkAttachmentCount (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkPAttachments (poked :: VkPipelineColorBlendStateCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkBlendConstants (poked :: VkPipelineColorBlendStateCreateInfo))+-- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a+-- newly created pipeline dynamic state+--+-- == Valid Usage+--+-- - Each element of @pDynamicStates@ /must/ be unique+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be @0@+--+-- - @pDynamicStates@ /must/ be a valid pointer to an array of+-- @dynamicStateCount@ valid 'VkDynamicState' values+--+-- - @dynamicStateCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'VkDynamicState', 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineDynamicStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineDynamicStateCreateInfo = VkPipelineDynamicStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineDynamicStateCreateFlags+ , -- | @dynamicStateCount@ is the number of elements in the @pDynamicStates@+ -- array.+ vkDynamicStateCount :: Word32+ , -- | @pDynamicStates@ is an array of 'VkDynamicState' values specifying which+ -- pieces of pipeline state will use the values from dynamic state commands+ -- rather than from pipeline state creation info.+ vkPDynamicStates :: Ptr VkDynamicState+ }+ deriving (Eq, Show)++instance Storable VkPipelineDynamicStateCreateInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek ptr = VkPipelineDynamicStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDynamicStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDynamicStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDynamicStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkDynamicStateCount (poked :: VkPipelineDynamicStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkPDynamicStates (poked :: VkPipelineDynamicStateCreateInfo))+-- | VkStencilOpState - Structure specifying stencil operation state+--+-- == Valid Usage (Implicit)+--+-- - @failOp@ /must/ be a valid 'VkStencilOp' value+--+-- - @passOp@ /must/ be a valid 'VkStencilOp' value+--+-- - @depthFailOp@ /must/ be a valid 'VkStencilOp' value+--+-- - @compareOp@ /must/ be a valid 'VkCompareOp' value+--+-- = See Also+--+-- 'VkCompareOp', 'VkPipelineDepthStencilStateCreateInfo', 'VkStencilOp'+data VkStencilOpState = VkStencilOpState+ { -- | @failOp@ is a 'VkStencilOp' value specifying the action performed on+ -- samples that fail the stencil test.+ vkFailOp :: VkStencilOp+ , -- | @passOp@ is a 'VkStencilOp' value specifying the action performed on+ -- samples that pass both the depth and stencil tests.+ vkPassOp :: VkStencilOp+ , -- | @depthFailOp@ is a 'VkStencilOp' value specifying the action performed+ -- on samples that pass the stencil test and fail the depth test.+ vkDepthFailOp :: VkStencilOp+ , -- | @compareOp@ is a 'VkCompareOp' value specifying the comparison operator+ -- used in the stencil test.+ vkCompareOp :: VkCompareOp+ , -- | @compareMask@ selects the bits of the unsigned integer stencil values+ -- participating in the stencil test.+ vkCompareMask :: Word32+ , -- | @writeMask@ selects the bits of the unsigned integer stencil values+ -- updated by the stencil test in the stencil framebuffer attachment.+ vkWriteMask :: Word32+ , -- | @reference@ is an integer reference value that is used in the unsigned+ -- stencil comparison.+ vkReference :: Word32+ }+ deriving (Eq, Show)++instance Storable VkStencilOpState where+ sizeOf ~_ = 28+ alignment ~_ = 4+ peek ptr = VkStencilOpState <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 4)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 12)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkFailOp (poked :: VkStencilOpState))+ *> poke (ptr `plusPtr` 4) (vkPassOp (poked :: VkStencilOpState))+ *> poke (ptr `plusPtr` 8) (vkDepthFailOp (poked :: VkStencilOpState))+ *> poke (ptr `plusPtr` 12) (vkCompareOp (poked :: VkStencilOpState))+ *> poke (ptr `plusPtr` 16) (vkCompareMask (poked :: VkStencilOpState))+ *> poke (ptr `plusPtr` 20) (vkWriteMask (poked :: VkStencilOpState))+ *> poke (ptr `plusPtr` 24) (vkReference (poked :: VkStencilOpState))+-- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline depth stencil state+--+-- == Valid Usage+--+-- - If the [depth bounds+-- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthBounds)+-- feature is not enabled, @depthBoundsTestEnable@ /must/ be @VK_FALSE@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be @0@+--+-- - @depthCompareOp@ /must/ be a valid 'VkCompareOp' value+--+-- - @front@ /must/ be a valid @VkStencilOpState@ structure+--+-- - @back@ /must/ be a valid @VkStencilOpState@ structure+--+-- = See Also+--+-- @VkBool32@, 'VkCompareOp', 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineDepthStencilStateCreateFlags', 'VkStencilOpState',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType'+data VkPipelineDepthStencilStateCreateInfo = VkPipelineDepthStencilStateCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is reserved for future use.+ vkFlags :: VkPipelineDepthStencilStateCreateFlags+ , -- | @depthTestEnable@ controls whether [depth+ -- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth)+ -- is enabled.+ vkDepthTestEnable :: VkBool32+ , -- | @depthWriteEnable@ controls whether [depth+ -- writes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth-write)+ -- are enabled when @depthTestEnable@ is @VK_TRUE@. Depth writes are always+ -- disabled when @depthTestEnable@ is @VK_FALSE@.+ vkDepthWriteEnable :: VkBool32+ , -- | @depthCompareOp@ is the comparison operator used in the [depth+ -- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth).+ vkDepthCompareOp :: VkCompareOp+ , -- | @depthBoundsTestEnable@ controls whether [depth bounds+ -- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-dbt)+ -- is enabled.+ vkDepthBoundsTestEnable :: VkBool32+ , -- | @stencilTestEnable@ controls whether [stencil+ -- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-stencil)+ -- is enabled.+ vkStencilTestEnable :: VkBool32+ , -- | @front@ and @back@ control the parameters of the [stencil+ -- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-stencil).+ vkFront :: VkStencilOpState+ , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"+ vkBack :: VkStencilOpState+ , -- | @minDepthBounds@ and @maxDepthBounds@ define the range of values used in+ -- the [depth bounds+ -- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-dbt).+ vkMinDepthBounds :: CFloat+ , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "maxDepthBounds"+ vkMaxDepthBounds :: CFloat+ }+ deriving (Eq, Show)++instance Storable VkPipelineDepthStencilStateCreateInfo where+ sizeOf ~_ = 104+ alignment ~_ = 8+ peek ptr = VkPipelineDepthStencilStateCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 28)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 36)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 68)+ <*> peek (ptr `plusPtr` 96)+ <*> peek (ptr `plusPtr` 100)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkDepthTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkDepthWriteEnable (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 28) (vkDepthCompareOp (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkDepthBoundsTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 36) (vkStencilTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkFront (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 68) (vkBack (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 96) (vkMinDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))+ *> poke (ptr `plusPtr` 100) (vkMaxDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))+-- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a+-- newly created graphics pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in [Pipeline+-- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives).+--+-- @pStages@ points to an array of 'VkPipelineShaderStageCreateInfo'+-- structures, which were previously described in [Compute+-- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-compute).+--+-- @pDynamicState@ points to a structure of type+-- 'VkPipelineDynamicStateCreateInfo'.+--+-- If any shader stage fails to compile, the compile log will be reported+-- back to the application, and @VK_ERROR_INVALID_SHADER_NV@ will be+-- generated.+--+-- == Valid Usage+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a+-- valid handle to a graphics @VkPipeline@+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineHandle@ is+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @basePipelineIndex@ /must/ be a valid index into the calling+-- command’s @pCreateInfos@ parameter+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+--+-- - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,+-- and @basePipelineHandle@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @basePipelineIndex@ /must/ be -1+--+-- - The @stage@ member of each element of @pStages@ /must/ be unique+--+-- - The @stage@ member of one element of @pStages@ /must/ be+-- @VK_SHADER_STAGE_VERTEX_BIT@+--+-- - The @stage@ member of each element of @pStages@ /must/ not be+-- @VK_SHADER_STAGE_COMPUTE_BIT@+--+-- - If @pStages@ includes a tessellation control shader stage, it /must/+-- include a tessellation evaluation shader stage+--+-- - If @pStages@ includes a tessellation evaluation shader stage, it+-- /must/ include a tessellation control shader stage+--+-- - If @pStages@ includes a tessellation control shader stage and a+-- tessellation evaluation shader stage, @pTessellationState@ /must/ be+-- a valid pointer to a valid @VkPipelineTessellationStateCreateInfo@+-- structure+--+-- - If @pStages@ includes tessellation shader stages, the shader code of+-- at least one stage /must/ contain an @OpExecutionMode@ instruction+-- that specifies the type of subdivision in the pipeline+--+-- - If @pStages@ includes tessellation shader stages, and the shader+-- code of both stages contain an @OpExecutionMode@ instruction that+-- specifies the type of subdivision in the pipeline, they /must/ both+-- specify the same subdivision mode+--+-- - If @pStages@ includes tessellation shader stages, the shader code of+-- at least one stage /must/ contain an @OpExecutionMode@ instruction+-- that specifies the output patch size in the pipeline+--+-- - If @pStages@ includes tessellation shader stages, and the shader+-- code of both contain an @OpExecutionMode@ instruction that specifies+-- the out patch size in the pipeline, they /must/ both specify the+-- same patch size+--+-- - If @pStages@ includes tessellation shader stages, the @topology@+-- member of @pInputAssembly@ /must/ be+-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@+--+-- - If the @topology@ member of @pInputAssembly@ is+-- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @pStages@ /must/ include+-- tessellation shader stages+--+-- - If @pStages@ includes a geometry shader stage, and does not include+-- any tessellation shader stages, its shader code /must/ contain an+-- @OpExecutionMode@ instruction that specifies an input primitive type+-- that is+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution)+-- with the primitive topology specified in @pInputAssembly@+--+-- - If @pStages@ includes a geometry shader stage, and also includes+-- tessellation shader stages, its shader code /must/ contain an+-- @OpExecutionMode@ instruction that specifies an input primitive type+-- that is+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution)+-- with the primitive topology that is output by the tessellation+-- stages+--+-- - If @pStages@ includes a fragment shader stage and a geometry shader+-- stage, and the fragment shader code reads from an input variable+-- that is decorated with @PrimitiveID@, then the geometry shader code+-- /must/ write to a matching output variable, decorated with+-- @PrimitiveID@, in all execution paths+--+-- - If @pStages@ includes a fragment shader stage, its shader code+-- /must/ not read from any input attachment that is defined as+-- @VK_ATTACHMENT_UNUSED@ in @subpass@+--+-- - The shader code for the entry points identified by @pStages@, and+-- the rest of the state identified by this structure /must/ adhere to+-- the pipeline linking rules described in the [Shader+-- Interfaces](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces)+-- chapter+--+-- - If rasterization is not disabled and @subpass@ uses a depth\/stencil+-- attachment in @renderPass@ that has a layout of+-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or+-- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ in the+-- @VkAttachmentReference@ defined by @subpass@, the @depthWriteEnable@+-- member of @pDepthStencilState@ /must/ be @VK_FALSE@+--+-- - If rasterization is not disabled and @subpass@ uses a depth\/stencil+-- attachment in @renderPass@ that has a layout of+-- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or+-- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ in the+-- @VkAttachmentReference@ defined by @subpass@, the @failOp@, @passOp@+-- and @depthFailOp@ members of each of the @front@ and @back@ members+-- of @pDepthStencilState@ /must/ be @VK_STENCIL_OP_KEEP@+--+-- - If rasterization is not disabled and the subpass uses color+-- attachments, then for each color attachment in the subpass the+-- @blendEnable@ member of the corresponding element of the+-- @pAttachment@ member of @pColorBlendState@ /must/ be @VK_FALSE@ if+-- the @format@ of the attachment does not support color blend+-- operations, as specified by the+-- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ flag in+-- @VkFormatProperties@::@linearTilingFeatures@ or+-- @VkFormatProperties@::@optimalTilingFeatures@ returned by+-- @vkGetPhysicalDeviceFormatProperties@+--+-- - If rasterization is not disabled and the subpass uses color+-- attachments, the @attachmentCount@ member of @pColorBlendState@+-- /must/ be equal to the @colorAttachmentCount@ used to create+-- @subpass@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_VIEWPORT@, the @pViewports@ member of+-- @pViewportState@ /must/ be a valid pointer to an array of+-- @pViewportState@::@viewportCount@ @VkViewport@ structures+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_SCISSOR@, the @pScissors@ member of+-- @pViewportState@ /must/ be a valid pointer to an array of+-- @pViewportState@::@scissorCount@ @VkRect2D@ structures+--+-- - If the wide lines feature is not enabled, and no element of the+-- @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_LINE_WIDTH@, the @lineWidth@ member of+-- @pRasterizationState@ /must/ be @1.0@+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- @VK_FALSE@, @pViewportState@ /must/ be a valid pointer to a valid+-- @VkPipelineViewportStateCreateInfo@ structure+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- @VK_FALSE@, @pMultisampleState@ /must/ be a valid pointer to a valid+-- @VkPipelineMultisampleStateCreateInfo@ structure+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- @VK_FALSE@, and @subpass@ uses a depth\/stencil attachment,+-- @pDepthStencilState@ /must/ be a valid pointer to a valid+-- @VkPipelineDepthStencilStateCreateInfo@ structure+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- @VK_FALSE@, and @subpass@ uses color attachments, @pColorBlendState@+-- /must/ be a valid pointer to a valid+-- @VkPipelineColorBlendStateCreateInfo@ structure+--+-- - If the depth bias clamping feature is not enabled, no element of the+-- @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_DEPTH_BIAS@, and the @depthBiasEnable@ member of+-- @pRasterizationState@ is @VK_TRUE@, the @depthBiasClamp@ member of+-- @pRasterizationState@ /must/ be @0.0@+--+-- - If the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@+-- extension is not enabled and no element of the @pDynamicStates@+-- member of @pDynamicState@ is @VK_DYNAMIC_STATE_DEPTH_BOUNDS@, and+-- the @depthBoundsTestEnable@ member of @pDepthStencilState@ is+-- @VK_TRUE@, the @minDepthBounds@ and @maxDepthBounds@ members of+-- @pDepthStencilState@ /must/ be between @0.0@ and @1.0@, inclusive+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the+-- @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+-- structure chained to the @pNext@ chain of @pMultisampleState@ is+-- @VK_TRUE@, @sampleLocationsInfo.sampleLocationGridSize.width@ /must/+-- evenly divide+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT'::@sampleLocationGridSize.width@+-- as returned by+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the+-- @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+-- structure chained to the @pNext@ chain of @pMultisampleState@ is+-- @VK_TRUE@, @sampleLocationsInfo.sampleLocationGridSize.height@+-- /must/ evenly divide+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT'::@sampleLocationGridSize.height@+-- as returned by+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the+-- @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+-- structure chained to the @pNext@ chain of @pMultisampleState@ is+-- @VK_TRUE@, @sampleLocationsInfo.sampleLocationsPerPixel@ /must/+-- equal @rasterizationSamples@+--+-- - If the @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'+-- structure chained to the @pNext@ chain of @pMultisampleState@ is+-- @VK_TRUE@, the fragment shader code /must/ not statically use the+-- extended instruction @InterpolateAtSample@+--+-- - @layout@ /must/ be+-- [consistent](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency)+-- with all shaders specified in @pStages@+--+-- - If @subpass@ uses color and\/or depth\/stencil attachments, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ equal+-- the maximum of the sample counts of those subpass attachments+--+-- - If @subpass@ has a depth\/stencil attachment and depth test, stencil+-- test, or depth bounds test are enabled, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be the+-- same as the sample count of the depth\/stencil attachment+--+-- - If @subpass@ has any color attachments, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be+-- greater than or equal to the sample count for those subpass+-- attachments+--+-- - If @subpass@ does not use any color and\/or depth\/stencil+-- attachments, then the @rasterizationSamples@ member of+-- @pMultisampleState@ /must/ follow the rules for a [zero-attachment+-- subpass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-noattachments)+--+-- - @subpass@ /must/ be a valid subpass within @renderPass@+--+-- - If the @renderPass@ has multiview enabled and @subpass@ has more+-- than one bit set in the view mask and @multiviewTessellationShader@+-- is not enabled, then @pStages@ /must/ not include tessellation+-- shaders.+--+-- - If the @renderPass@ has multiview enabled and @subpass@ has more+-- than one bit set in the view mask and @multiviewGeometryShader@ is+-- not enabled, then @pStages@ /must/ not include a geometry shader.+--+-- - If the @renderPass@ has multiview enabled and @subpass@ has more+-- than one bit set in the view mask, shaders in the pipeline /must/+-- not write to the @Layer@ built-in output+--+-- - If the @renderPass@ has multiview enabled, then all shaders /must/+-- not include variables decorated with the @Layer@ built-in decoration+-- in their interfaces.+--+-- - @flags@ /must/ not contain the @VK_PIPELINE_CREATE_DISPATCH_BASE@+-- flag.+--+-- - If @pStages@ includes a fragment shader stage and an input+-- attachment was referenced by the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkRenderPassInputAttachmentAspectCreateInfo'+-- at @renderPass@ create time, its shader code /must/ not read from+-- any aspect that was not specified in the @aspectMask@ of the+-- corresponding+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkInputAttachmentAspectReference'+-- structure.+--+-- - The number of resources in @layout@ accessible to each shader stage+-- that is used by the pipeline /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxPerStageResources@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@, and the+-- @viewportWScalingEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'+-- structure, chained to the @pNext@ chain of @pViewportState@, is+-- @VK_TRUE@, the @pViewportWScalings@ member of the+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'+-- /must/ be a pointer to an array of+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+-- valid+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkViewportWScalingNV'+-- structures+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT'+--+-- - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'+-- values+--+-- - @pStages@ /must/ be a valid pointer to an array of @stageCount@+-- valid @VkPipelineShaderStageCreateInfo@ structures+--+-- - @pVertexInputState@ /must/ be a valid pointer to a valid+-- @VkPipelineVertexInputStateCreateInfo@ structure+--+-- - @pInputAssemblyState@ /must/ be a valid pointer to a valid+-- @VkPipelineInputAssemblyStateCreateInfo@ structure+--+-- - @pRasterizationState@ /must/ be a valid pointer to a valid+-- @VkPipelineRasterizationStateCreateInfo@ structure+--+-- - If @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid+-- pointer to a valid @VkPipelineDynamicStateCreateInfo@ structure+--+-- - @layout@ /must/ be a valid @VkPipelineLayout@ handle+--+-- - @renderPass@ /must/ be a valid @VkRenderPass@ handle+--+-- - @stageCount@ /must/ be greater than @0@+--+-- - Each of @basePipelineHandle@, @layout@, and @renderPass@ that are+-- valid handles /must/ have been created, allocated, or retrieved from+-- the same @VkDevice@+--+-- = See Also+--+-- 'VkPipeline', 'VkPipelineColorBlendStateCreateInfo',+-- 'VkPipelineCreateFlags', 'VkPipelineDepthStencilStateCreateInfo',+-- 'VkPipelineDynamicStateCreateInfo',+-- 'VkPipelineInputAssemblyStateCreateInfo', 'VkPipelineLayout',+-- 'VkPipelineMultisampleStateCreateInfo',+-- 'VkPipelineRasterizationStateCreateInfo',+-- 'VkPipelineShaderStageCreateInfo',+-- 'VkPipelineTessellationStateCreateInfo',+-- 'VkPipelineVertexInputStateCreateInfo',+-- 'VkPipelineViewportStateCreateInfo', 'VkRenderPass',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkCreateGraphicsPipelines'+data VkGraphicsPipelineCreateInfo = VkGraphicsPipelineCreateInfo+ { -- | @sType@ is the type of this structure.+ vkSType :: VkStructureType+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ vkPNext :: Ptr ()+ , -- | @flags@ is a bitmask of 'VkPipelineCreateFlagBits' specifying how the+ -- pipeline will be generated.+ vkFlags :: VkPipelineCreateFlags+ , -- | @stageCount@ is the number of entries in the @pStages@ array.+ vkStageCount :: Word32+ , -- | @pStages@ is an array of size @stageCount@ structures of type+ -- 'VkPipelineShaderStageCreateInfo' describing the set of the shader+ -- stages to be included in the graphics pipeline.+ vkPStages :: Ptr VkPipelineShaderStageCreateInfo+ , -- | @pVertexInputState@ is a pointer to an instance of the+ -- 'VkPipelineVertexInputStateCreateInfo' structure.+ vkPVertexInputState :: Ptr VkPipelineVertexInputStateCreateInfo+ , -- | @pInputAssemblyState@ is a pointer to an instance of the+ -- 'VkPipelineInputAssemblyStateCreateInfo' structure which determines+ -- input assembly behavior, as described in [Drawing+ -- Commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing).+ vkPInputAssemblyState :: Ptr VkPipelineInputAssemblyStateCreateInfo+ , -- | @pTessellationState@ is a pointer to an instance of the+ -- 'VkPipelineTessellationStateCreateInfo' structure, and is ignored if the+ -- pipeline does not include a tessellation control shader stage and+ -- tessellation evaluation shader stage.+ vkPTessellationState :: Ptr VkPipelineTessellationStateCreateInfo+ , -- | @pViewportState@ is a pointer to an instance of the+ -- 'VkPipelineViewportStateCreateInfo' structure, and is ignored if the+ -- pipeline has rasterization disabled.+ vkPViewportState :: Ptr VkPipelineViewportStateCreateInfo+ , -- | @pRasterizationState@ is a pointer to an instance of the+ -- 'VkPipelineRasterizationStateCreateInfo' structure.+ vkPRasterizationState :: Ptr VkPipelineRasterizationStateCreateInfo+ , -- | @pMultisampleState@ is a pointer to an instance of the+ -- 'VkPipelineMultisampleStateCreateInfo', and is ignored if the pipeline+ -- has rasterization disabled.+ vkPMultisampleState :: Ptr VkPipelineMultisampleStateCreateInfo+ , -- | @pDepthStencilState@ is a pointer to an instance of the+ -- 'VkPipelineDepthStencilStateCreateInfo' structure, and is ignored if the+ -- pipeline has rasterization disabled or if the subpass of the render pass+ -- the pipeline is created against does not use a depth\/stencil+ -- attachment.+ vkPDepthStencilState :: Ptr VkPipelineDepthStencilStateCreateInfo+ , -- | @pColorBlendState@ is a pointer to an instance of the+ -- 'VkPipelineColorBlendStateCreateInfo' structure, and is ignored if the+ -- pipeline has rasterization disabled or if the subpass of the render pass+ -- the pipeline is created against does not use any color attachments.+ vkPColorBlendState :: Ptr VkPipelineColorBlendStateCreateInfo+ , -- | @pDynamicState@ is a pointer to 'VkPipelineDynamicStateCreateInfo' and+ -- is used to indicate which properties of the pipeline state object are+ -- dynamic and /can/ be changed independently of the pipeline state. This+ -- /can/ be @NULL@, which means no state in the pipeline is considered+ -- dynamic.+ vkPDynamicState :: Ptr VkPipelineDynamicStateCreateInfo+ , -- | @layout@ is the description of binding locations used by both the+ -- pipeline and descriptor sets used with the pipeline.+ vkLayout :: VkPipelineLayout+ , -- | @renderPass@ is a handle to a render pass object describing the+ -- environment in which the pipeline will be used; the pipeline /must/ only+ -- be used with an instance of any render pass compatible with the one+ -- provided. See [Render Pass+ -- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+ -- for more information.+ vkRenderPass :: VkRenderPass+ , -- | @subpass@ is the index of the subpass in the render pass where this+ -- pipeline will be used.+ vkSubpass :: Word32+ , -- | @basePipelineHandle@ is a pipeline to derive from.+ vkBasePipelineHandle :: VkPipeline+ , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+ -- as a pipeline to derive from.+ vkBasePipelineIndex :: Int32+ }+ deriving (Eq, Show)++instance Storable VkGraphicsPipelineCreateInfo where+ sizeOf ~_ = 144+ alignment ~_ = 8+ peek ptr = VkGraphicsPipelineCreateInfo <$> peek (ptr `plusPtr` 0)+ <*> peek (ptr `plusPtr` 8)+ <*> peek (ptr `plusPtr` 16)+ <*> peek (ptr `plusPtr` 20)+ <*> peek (ptr `plusPtr` 24)+ <*> peek (ptr `plusPtr` 32)+ <*> peek (ptr `plusPtr` 40)+ <*> peek (ptr `plusPtr` 48)+ <*> peek (ptr `plusPtr` 56)+ <*> peek (ptr `plusPtr` 64)+ <*> peek (ptr `plusPtr` 72)+ <*> peek (ptr `plusPtr` 80)+ <*> peek (ptr `plusPtr` 88)+ <*> peek (ptr `plusPtr` 96)+ <*> peek (ptr `plusPtr` 104)+ <*> peek (ptr `plusPtr` 112)+ <*> peek (ptr `plusPtr` 120)+ <*> peek (ptr `plusPtr` 128)+ <*> peek (ptr `plusPtr` 136)+ poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 20) (vkStageCount (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 24) (vkPStages (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 32) (vkPVertexInputState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 40) (vkPInputAssemblyState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 48) (vkPTessellationState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 56) (vkPViewportState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 64) (vkPRasterizationState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 72) (vkPMultisampleState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 80) (vkPDepthStencilState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 88) (vkPColorBlendState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 96) (vkPDynamicState (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 104) (vkLayout (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 112) (vkRenderPass (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 120) (vkSubpass (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 128) (vkBasePipelineHandle (poked :: VkGraphicsPipelineCreateInfo))+ *> poke (ptr `plusPtr` 136) (vkBasePipelineIndex (poked :: VkGraphicsPipelineCreateInfo))+-- | VkPipelineCreateFlags - Bitmask of VkPipelineCreateFlagBits+--+-- = Description+--+-- @VkPipelineCreateFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkPipelineCreateFlagBits'.+--+-- = See Also+--+-- 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',+-- 'VkPipelineCreateFlagBits'+type VkPipelineCreateFlags = VkPipelineCreateFlagBits+-- | VkColorComponentFlags - Bitmask of VkColorComponentFlagBits+--+-- = Description+--+-- @VkColorComponentFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkColorComponentFlagBits'.+--+-- = See Also+--+-- 'VkColorComponentFlagBits', 'VkPipelineColorBlendAttachmentState'+type VkColorComponentFlags = VkColorComponentFlagBits+-- | VkCullModeFlags - Bitmask of VkCullModeFlagBits+--+-- = Description+--+-- @VkCullModeFlags@ is a bitmask type for setting a mask of zero or more+-- 'VkCullModeFlagBits'.+--+-- = See Also+--+-- 'VkCullModeFlagBits', 'VkPipelineRasterizationStateCreateInfo'+type VkCullModeFlags = VkCullModeFlagBits+-- | VkSampleMask - Mask of sample coverage information+--+-- = See Also -- -- 'VkPipelineMultisampleStateCreateInfo' type VkSampleMask = Word32
src/Graphics/Vulkan/Core10/PipelineCache.hs view
@@ -71,13 +71,11 @@ -- | VkPipelineCacheCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkPipelineCacheCreateFlags@ is a bitmask type for setting a mask, but -- is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineCacheCreateInfo' newtype VkPipelineCacheCreateFlags = VkPipelineCacheCreateFlags VkFlags@@ -102,11 +100,7 @@ data VkPipelineCache_T -- | VkPipelineCache - Opaque handle to a pipeline cache object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines', -- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',@@ -116,7 +110,6 @@ -- | vkCreatePipelineCache - Creates a new pipeline cache -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the pipeline cache -- object.@@ -126,13 +119,14 @@ -- cache object. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pPipelineCache@ is a pointer to a @VkPipelineCache@ handle in which -- the resulting pipeline cache object is returned. -- -- = Description--- #_description# -- -- __Note__ --@@ -174,16 +168,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -192,7 +185,6 @@ -- | vkDestroyPipelineCache - Destroy a pipeline cache object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the pipeline cache -- object.@@ -200,10 +192,9 @@ -- - @pipelineCache@ is the handle of the pipeline cache to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -232,7 +223,6 @@ -- - Host access to @pipelineCache@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -241,7 +231,6 @@ -- | vkGetPipelineCacheData - Get the data store from a pipeline cache -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the pipeline cache. --@@ -253,7 +242,6 @@ -- - @pData@ is either @NULL@ or a pointer to a buffer. -- -- = Description--- #_description# -- -- If @pData@ is @NULL@, then the maximum size of the data that /can/ be -- retrieved from the pipeline cache, in bytes, is returned in @pDataSize@.@@ -282,39 +270,32 @@ -- written to @pData@ /must/ be a header consisting of the following -- members: ----- > +----+--------------+--------------------------------------------------+--- > | Of | Size | Meaning |--- > | fs | | |--- > | et | | |--- > +====+==============+==================================================+--- > | 0 | 4 | length in bytes of the entire pipeline cache |--- > | | | header written as a stream of bytes, with the |--- > | | | least significant byte first |--- > +----+--------------+--------------------------------------------------+--- > | 4 | 4 | a |--- > | | | 'Graphics.Vulkan.Core10.Constants.VkPipelineCach |--- > | | | eHeaderVersion' |--- > | | | value written as a stream of bytes, with the |--- > | | | least significant byte first |--- > +----+--------------+--------------------------------------------------+--- > | 8 | 4 | a vendor ID equal to |--- > | | | @VkPhysicalDeviceProperties@::@vendorID@ written |--- > | | | as a stream of bytes, with the least significant |--- > | | | byte first |--- > +----+--------------+--------------------------------------------------+--- > | 12 | 4 | a device ID equal to |--- > | | | @VkPhysicalDeviceProperties@::@deviceID@ written |--- > | | | as a stream of bytes, with the least significant |--- > | | | byte first |--- > +----+--------------+--------------------------------------------------+--- > | 16 | @VK_UUID_SIZ | a pipeline cache ID equal to |--- > | | E@ | @VkPhysicalDeviceProperties@::@pipelineCacheUUID |--- > | | | @ |--- > +----+--------------+--------------------------------------------------+--- >--- > Layout for pipeline cache header version--- > @VK_PIPELINE_CACHE_HEADER_VERSION_ONE@+-- +--------+----------------+-----------------------------------------------------------------++-- | Offset | Size | Meaning |+-- +========+================+=================================================================++-- | 0 | 4 | length in bytes of the entire pipeline cache header written as |+-- | | | a stream of bytes, with the least significant byte first |+-- +--------+----------------+-----------------------------------------------------------------++-- | 4 | 4 | a |+-- | | | 'Graphics.Vulkan.Core10.Constants.VkPipelineCacheHeaderVersion' |+-- | | | value written as a stream of bytes, with the least significant |+-- | | | byte first |+-- +--------+----------------+-----------------------------------------------------------------++-- | 8 | 4 | a vendor ID equal to @VkPhysicalDeviceProperties@::@vendorID@ |+-- | | | written as a stream of bytes, with the least significant byte |+-- | | | first |+-- +--------+----------------+-----------------------------------------------------------------++-- | 12 | 4 | a device ID equal to @VkPhysicalDeviceProperties@::@deviceID@ |+-- | | | written as a stream of bytes, with the least significant byte |+-- | | | first |+-- +--------+----------------+-----------------------------------------------------------------++-- | 16 | @VK_UUID_SIZE@ | a pipeline cache ID equal to |+-- | | | @VkPhysicalDeviceProperties@::@pipelineCacheUUID@ |+-- +--------+----------------+-----------------------------------------------------------------+ --+-- Layout for pipeline cache header version+-- @VK_PIPELINE_CACHE_HEADER_VERSION_ONE@+-- -- The first four bytes encode the length of the entire pipeline cache -- header, in bytes. This value includes all fields in the header including -- the pipeline cache version field and the size of the length field.@@ -345,18 +326,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkPipelineCache'@@ -364,7 +344,6 @@ -- | vkMergePipelineCaches - Combine the data stores of pipeline caches -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the pipeline cache objects. --@@ -378,7 +357,6 @@ -- included after the merge. -- -- = Description--- #_description# -- -- __Note__ --@@ -413,16 +391,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkPipelineCache'@@ -430,9 +407,6 @@ -- | VkPipelineCacheCreateInfo - Structure specifying parameters of a newly -- created pipeline cache ----- = Description--- #_description#--- -- == Valid Usage -- -- - If @initialDataSize@ is not @0@, it /must/ be equal to the size of@@ -454,20 +428,23 @@ -- pointer to an array of @initialDataSize@ bytes -- -- = See Also--- #_see_also# -- -- 'VkPipelineCacheCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreatePipelineCache' data VkPipelineCacheCreateInfo = VkPipelineCacheCreateInfo- { -- No documentation found for Nested "VkPipelineCacheCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineCacheCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineCacheCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkPipelineCacheCreateFlags- , -- No documentation found for Nested "VkPipelineCacheCreateInfo" "vkInitialDataSize"+ , -- | @initialDataSize@ is the number of bytes in @pInitialData@. If+ -- @initialDataSize@ is zero, the pipeline cache will initially be empty. vkInitialDataSize :: CSize- , -- No documentation found for Nested "VkPipelineCacheCreateInfo" "vkPInitialData"+ , -- | @pInitialData@ is a pointer to previously retrieved pipeline cache data.+ -- If the pipeline cache data is incompatible (as defined below) with the+ -- device, the pipeline cache will be initially empty. If @initialDataSize@+ -- is zero, @pInitialData@ is ignored. vkPInitialData :: Ptr () } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/PipelineLayout.hs view
@@ -72,13 +72,11 @@ -- | VkPipelineLayoutCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkPipelineLayoutCreateFlags@ is a bitmask type for setting a mask, but -- is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineLayoutCreateInfo' newtype VkPipelineLayoutCreateFlags = VkPipelineLayoutCreateFlags VkFlags@@ -103,11 +101,7 @@ data VkDescriptorSetLayout_T -- | VkDescriptorSetLayout - Opaque handle to a descriptor set layout object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',@@ -118,7 +112,6 @@ -- | vkCreatePipelineLayout - Creates a new pipeline layout object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the pipeline layout. --@@ -127,14 +120,13 @@ -- pipeline layout object. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pPipelineLayout@ points to a @VkPipelineLayout@ handle in which the -- resulting pipeline layout object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -150,16 +142,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -169,17 +160,15 @@ -- | vkDestroyPipelineLayout - Destroy a pipeline layout object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the pipeline layout. -- -- - @pipelineLayout@ is the pipeline layout to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -208,7 +197,6 @@ -- - Host access to @pipelineLayout@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -216,9 +204,6 @@ foreign import ccall "vkDestroyPipelineLayout" vkDestroyPipelineLayout :: ("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () -- | VkPushConstantRange - Structure specifying a push constant range ----- = Description--- #_description#--- -- == Valid Usage -- -- - @offset@ /must/ be less than@@ -241,15 +226,21 @@ -- - @stageFlags@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'VkPipelineLayoutCreateInfo', 'VkShaderStageFlags' data VkPushConstantRange = VkPushConstantRange- { -- No documentation found for Nested "VkPushConstantRange" "vkStageFlags"+ { -- | @stageFlags@ is a set of stage flags describing the shader stages that+ -- will access a range of push constants. If a particular stage is not+ -- included in the range, then accessing members of that range of push+ -- constants from the corresponding shader stage will result in undefined+ -- data being read. vkStageFlags :: VkShaderStageFlags- , -- No documentation found for Nested "VkPushConstantRange" "vkOffset"+ , -- | @offset@ and @size@ are the start offset and size, respectively,+ -- consumed by the range. Both @offset@ and @size@ are in units of bytes+ -- and /must/ be a multiple of 4. The layout of the push constant variables+ -- is specified in the shader. vkOffset :: Word32- , -- No documentation found for Nested "VkPushConstantRange" "vkSize"+ , -- No documentation found for Nested "VkPushConstantRange" "size" vkSize :: Word32 } deriving (Eq, Show)@@ -267,7 +258,6 @@ -- newly created pipeline layout object -- -- = Members--- #_members# -- -- - @sType@ is the type of this structure. --@@ -296,85 +286,209 @@ -- in pipelines that is expected to outperform memory-backed resource -- updates. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @setLayoutCount@ /must/ be less than or equal to -- @VkPhysicalDeviceLimits@::@maxBoundDescriptorSets@ ----- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_SAMPLER@ and--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible to any shader--- stage across all elements of @pSetLayouts@ /must/ be less than or--- equal to @VkPhysicalDeviceLimits@::@maxPerStageDescriptorSamplers@+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_SAMPLER@ and+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to+-- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorSamplers@ ----- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ and--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible to any shader--- stage across all elements of @pSetLayouts@ /must/ be less than or--- equal to+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@+-- and @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible to any+-- given shader stage across all elements of @pSetLayouts@ /must/ be+-- less than or equal to -- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorUniformBuffers@ ----- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ and--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible to any shader--- stage across all elements of @pSetLayouts@ /must/ be less than or--- equal to+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@+-- and @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible to any+-- given shader stage across all elements of @pSetLayouts@ /must/ be+-- less than or equal to -- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorStorageBuffers@ ----- - The total number of descriptors of the type+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, -- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible to any shader--- stage across all elements of @pSetLayouts@ /must/ be less than or--- equal to+-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to -- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorSampledImages@ ----- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible to any shader--- stage across all elements of @pSetLayouts@ /must/ be less than or--- equal to+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,+-- and @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible to any+-- given shader stage across all elements of @pSetLayouts@ /must/ be+-- less than or equal to -- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorStorageImages@ ----- - The total number of descriptors of the type+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorInputAttachments@+--+-- - The total number of descriptors with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_SAMPLER@ and+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindSamplers@+--+-- - The total number of descriptors with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ and+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindUniformBuffers@+--+-- - The total number of descriptors with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ and+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindStorageBuffers@+--+-- - The total number of descriptors with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,+-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and+-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindSampledImages@+--+-- - The total number of descriptors with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, and+-- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible to any given+-- shader stage across all elements of @pSetLayouts@ /must/ be less+-- than or equal to+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindStorageImages@+--+-- - The total number of descriptors with a @descriptorType@ of -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ accessible to any given shader -- stage across all elements of @pSetLayouts@ /must/ be less than or -- equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorInputAttachments@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindInputAttachments@ --+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_SAMPLER@ and+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible across all+-- shader stages and across all elements of @pSetLayouts@ /must/ be+-- less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetSamplers@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@+-- accessible across all shader stagess and and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetUniformBuffers@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible across all+-- shader stages and across all elements of @pSetLayouts@ /must/ be+-- less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetUniformBuffersDynamic@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageBuffers@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible across all+-- shader stages and across all elements of @pSetLayouts@ /must/ be+-- less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageBuffersDynamic@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of+-- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,+-- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and+-- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible across all+-- shader stages and across all elements of @pSetLayouts@ /must/ be+-- less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetSampledImages@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,+-- and @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible across all+-- shader stages and across all elements of @pSetLayouts@ /must/ be+-- less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageImages@+--+-- - The total number of descriptors in descriptor set layouts created+-- without the+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit+-- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxDescriptorSetInputAttachments@+-- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_SAMPLER@ and -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible across all -- shader stages and across all elements of @pSetLayouts@ /must/ be -- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetSamplers@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindSamplers@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ accessible across all shader -- stagess and and across all elements of @pSetLayouts@ /must/ be less -- than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetUniformBuffers@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindUniformBuffers@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible across all -- shader stages and across all elements of @pSetLayouts@ /must/ be -- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetUniformBuffersDynamic@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ accessible across all shader -- stages and across all elements of @pSetLayouts@ /must/ be less than -- or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageBuffers@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindStorageBuffers@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible across all -- shader stages and across all elements of @pSetLayouts@ /must/ be -- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageBuffersDynamic@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,@@ -382,24 +496,28 @@ -- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible across all -- shader stages and across all elements of @pSetLayouts@ /must/ be -- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetSampledImages@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindSampledImages@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, and -- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible across all -- shader stages and across all elements of @pSetLayouts@ /must/ be -- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageImages@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindStorageImages@ -- -- - The total number of descriptors of the type -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ accessible across all shader -- stages and across all elements of @pSetLayouts@ /must/ be less than -- or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetInputAttachments@+-- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindInputAttachments@ -- -- - Any two elements of @pPushConstantRanges@ /must/ not include the -- same stage in @stageFlags@ --+-- - @pSetLayouts@ /must/ not contain more than one descriptor set layout+-- that was created with+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ set+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO@@@ -417,25 +535,24 @@ -- @VkPushConstantRange@ structures -- -- = See Also--- #_see_also# -- -- 'VkDescriptorSetLayout', 'VkPipelineLayoutCreateFlags', -- 'VkPushConstantRange', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreatePipelineLayout' data VkPipelineLayoutCreateInfo = VkPipelineLayoutCreateInfo- { -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkSType"+ { -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkPNext"+ , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkFlags"+ , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "flags" vkFlags :: VkPipelineLayoutCreateFlags- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkSetLayoutCount"+ , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "setLayoutCount" vkSetLayoutCount :: Word32- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkPSetLayouts"+ , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pSetLayouts" vkPSetLayouts :: Ptr VkDescriptorSetLayout- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkPushConstantRangeCount"+ , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pushConstantRangeCount" vkPushConstantRangeCount :: Word32- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "vkPPushConstantRanges"+ , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pPushConstantRanges" vkPPushConstantRanges :: Ptr VkPushConstantRange } deriving (Eq, Show)@@ -460,13 +577,11 @@ -- | VkShaderStageFlags - Bitmask of VkShaderStageFlagBits -- -- = Description--- #_description# -- -- @VkShaderStageFlags@ is a bitmask type for setting a mask of zero or -- more 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits'. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutBinding', -- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePushConstantEntryNVX',
src/Graphics/Vulkan/Core10/Query.hs view
@@ -97,7 +97,6 @@ -- | VkQueryType - Specify the type of queries managed by a query pool -- -- = See Also--- #_see_also# -- -- 'VkQueryPoolCreateInfo' newtype VkQueryType = VkQueryType Int32@@ -121,18 +120,18 @@ ) ) --- | @VK_QUERY_TYPE_OCCLUSION@ specifies an--- <{html_spec_relative}#queries-occlusion occlusion query>.+-- | @VK_QUERY_TYPE_OCCLUSION@ specifies an [occlusion+-- query](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-occlusion). pattern VK_QUERY_TYPE_OCCLUSION :: VkQueryType pattern VK_QUERY_TYPE_OCCLUSION = VkQueryType 0 --- | @VK_QUERY_TYPE_PIPELINE_STATISTICS@ specifies a--- <{html_spec_relative}#queries-pipestats pipeline statistics query>.+-- | @VK_QUERY_TYPE_PIPELINE_STATISTICS@ specifies a [pipeline statistics+-- query](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-pipestats). pattern VK_QUERY_TYPE_PIPELINE_STATISTICS :: VkQueryType pattern VK_QUERY_TYPE_PIPELINE_STATISTICS = VkQueryType 1 --- | @VK_QUERY_TYPE_TIMESTAMP@ specifies a--- <{html_spec_relative}#queries-timestamps timestamp query>.+-- | @VK_QUERY_TYPE_TIMESTAMP@ specifies a [timestamp+-- query](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-timestamps). pattern VK_QUERY_TYPE_TIMESTAMP :: VkQueryType pattern VK_QUERY_TYPE_TIMESTAMP = VkQueryType 2 -- ** VkQueryPoolCreateFlags@@ -140,13 +139,11 @@ -- | VkQueryPoolCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkQueryPoolCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkQueryPoolCreateInfo' newtype VkQueryPoolCreateFlags = VkQueryPoolCreateFlags VkFlags@@ -173,7 +170,6 @@ -- are returned -- -- = See Also--- #_see_also# -- -- 'VkQueryResultFlags' newtype VkQueryResultFlagBits = VkQueryResultFlagBits VkFlags@@ -225,34 +221,35 @@ -- statistics -- -- = Description--- #_description# -- -- - @VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT@ specifies -- that queries managed by the pool will count the number of vertices--- processed by the <{html_spec_relative}#drawing input assembly>+-- processed by the [input+-- assembly](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing) -- stage. Vertices corresponding to incomplete primitives /may/ -- contribute to the count. -- -- - @VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT@ -- specifies that queries managed by the pool will count the number of--- primitives processed by the--- <{html_spec_relative}#drawing input assembly> stage. If primitive--- restart is enabled, restarting the primitive topology has no effect--- on the count. Incomplete primitives /may/ be counted.+-- primitives processed by the [input+-- assembly](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing)+-- stage. If primitive restart is enabled, restarting the primitive+-- topology has no effect on the count. Incomplete primitives /may/ be+-- counted. -- -- - @VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT@ -- specifies that queries managed by the pool will count the number of -- vertex shader invocations. This counter’s value is incremented each -- time a vertex shader is--- <{html_spec_relative}#shaders-vertex-execution invoked>.+-- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-vertex-execution). -- -- - @VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT@ -- specifies that queries managed by the pool will count the number of -- geometry shader invocations. This counter’s value is incremented -- each time a geometry shader is--- <{html_spec_relative}#shaders-geometry-execution invoked>. In the--- case of--- <{html_spec_relative}#geometry-invocations instanced geometry shaders>,+-- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution).+-- In the case of [instanced geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#geometry-invocations), -- the geometry shader invocations count is incremented for each -- separate instanced invocation. --@@ -266,15 +263,15 @@ -- -- - @VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT@ specifies -- that queries managed by the pool will count the number of primitives--- processed by the--- <{html_spec_relative}#vertexpostproc-clipping Primitive Clipping>+-- processed by the [Primitive+-- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping) -- stage of the pipeline. The counter’s value is incremented each time -- a primitive reaches the primitive clipping stage. -- -- - @VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT@ specifies that -- queries managed by the pool will count the number of primitives--- output by the--- <{html_spec_relative}#vertexpostproc-clipping Primitive Clipping>+-- output by the [Primitive+-- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping) -- stage of the pipeline. The counter’s value is incremented each time -- a primitive passes the primitive clipping stage. The actual number -- of primitives output by the primitive clipping stage for a@@ -290,20 +287,20 @@ -- specifies that queries managed by the pool will count the number of -- fragment shader invocations. The counter’s value is incremented each -- time the fragment shader is--- <{html_spec_relative}#shaders-fragment-execution invoked>.+-- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-fragment-execution). -- -- - @VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT@ -- specifies that queries managed by the pool will count the number of -- patches processed by the tessellation control shader. The counter’s -- value is incremented once for each patch for which a tessellation -- control shader is--- <{html_spec_relative}#shaders-tessellation-control-execution invoked>.+-- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-tessellation-control-execution). -- -- - @VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT@ -- specifies that queries managed by the pool will count the number of -- invocations of the tessellation evaluation shader. The counter’s -- value is incremented each time the tessellation evaluation shader is--- <{html_spec_relative}#shaders-tessellation-evaluation-execution invoked>.+-- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution). -- -- - @VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT@ -- specifies that queries managed by the pool will count the number of@@ -317,8 +314,8 @@ -- These values are intended to measure relative statistics on one -- implementation. Various device architectures will count these values -- differently. Any or all counters /may/ be affected by the issues--- described in--- <{html_spec_relative}#queries-operation-undefined Query Operation>.+-- described in [Query+-- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-undefined). -- -- __Note__ --@@ -336,7 +333,6 @@ -- (via @vkGetQueryPoolResults@). -- -- = See Also--- #_see_also# -- -- 'VkQueryPipelineStatisticFlags' newtype VkQueryPipelineStatisticFlagBits = VkQueryPipelineStatisticFlagBits VkFlags@@ -423,11 +419,7 @@ data VkQueryPool_T -- | VkQueryPool - Opaque handle to a query pool object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginQuery', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',@@ -439,7 +431,6 @@ -- | vkCreateQueryPool - Create a new query pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the query pool. --@@ -448,14 +439,13 @@ -- queries to be managed by the pool. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pQueryPool@ is a pointer to a @VkQueryPool@ handle in which the -- resulting query pool object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -470,16 +460,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueryPool',@@ -488,17 +477,15 @@ -- | vkDestroyQueryPool - Destroy a query pool object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the query pool. -- -- - @queryPool@ is the query pool to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -530,7 +517,6 @@ -- - Host access to @queryPool@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueryPool'@@ -539,7 +525,6 @@ -- host memory region -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the query pool. --@@ -566,12 +551,12 @@ -- when results are returned. -- -- = Description--- #_description# -- -- If no bits are set in @flags@, and all requested queries are in the -- available state, results are written as an array of 32-bit unsigned -- integer values. The behavior when not all queries are available, is--- described <{html_spec_relative}#queries-wait-bit-not-set below>.+-- described+-- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-wait-bit-not-set). -- -- If @VK_QUERY_RESULT_64_BIT@ is not set and the result overflows a 32-bit -- value, the value /may/ either wrap or saturate. Similarly, if@@ -656,7 +641,7 @@ -- -- - @dataSize@ /must/ be large enough to contain the result of each -- query, as described--- <{html_spec_relative}#queries-operation-memorylayout here>+-- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-memorylayout) -- -- - If the @queryType@ used to create @queryPool@ was -- @VK_QUERY_TYPE_TIMESTAMP@, @flags@ /must/ not contain@@ -680,12 +665,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_NOT_READY@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -693,7 +678,6 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', @VkDeviceSize@, -- 'VkQueryPool', 'VkQueryResultFlags'@@ -702,15 +686,14 @@ -- created query pool -- -- = Description--- #_description# -- -- @pipelineStatistics@ is ignored if @queryType@ is not -- @VK_QUERY_TYPE_PIPELINE_STATISTICS@. -- -- == Valid Usage ----- - If the--- <{html_spec_relative}#features-features-pipelineStatisticsQuery pipeline statistics queries>+-- - If the [pipeline statistics+-- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-pipelineStatisticsQuery) -- feature is not enabled, @queryType@ /must/ not be -- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ --@@ -729,23 +712,26 @@ -- - @queryType@ /must/ be a valid 'VkQueryType' value -- -- = See Also--- #_see_also# -- -- 'VkQueryPipelineStatisticFlags', 'VkQueryPoolCreateFlags', -- 'VkQueryType', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateQueryPool' data VkQueryPoolCreateInfo = VkQueryPoolCreateInfo- { -- No documentation found for Nested "VkQueryPoolCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkQueryPoolCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkQueryPoolCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkQueryPoolCreateFlags- , -- No documentation found for Nested "VkQueryPoolCreateInfo" "vkQueryType"+ , -- | @queryType@ is a 'VkQueryType' value specifying the type of queries+ -- managed by the pool. vkQueryType :: VkQueryType- , -- No documentation found for Nested "VkQueryPoolCreateInfo" "vkQueryCount"+ , -- | @queryCount@ is the number of queries managed by the pool. vkQueryCount :: Word32- , -- No documentation found for Nested "VkQueryPoolCreateInfo" "vkPipelineStatistics"+ , -- | @pipelineStatistics@ is a bitmask of 'VkQueryPipelineStatisticFlagBits'+ -- specifying which counters will be returned in queries on the new pool,+ -- as described below in+ -- [{html_spec_relative}#queries-pipestats](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-pipestats). vkPipelineStatistics :: VkQueryPipelineStatisticFlags } deriving (Eq, Show)@@ -768,13 +754,11 @@ -- | VkQueryResultFlags - Bitmask of VkQueryResultFlagBits -- -- = Description--- #_description# -- -- @VkQueryResultFlags@ is a bitmask type for setting a mask of zero or -- more 'VkQueryResultFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkQueryResultFlagBits', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',@@ -784,13 +768,11 @@ -- VkQueryPipelineStatisticFlagBits -- -- = Description--- #_description# -- -- @VkQueryPipelineStatisticFlags@ is a bitmask type for setting a mask of -- zero or more 'VkQueryPipelineStatisticFlagBits'. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo', -- 'VkQueryPipelineStatisticFlagBits', 'VkQueryPoolCreateInfo'
src/Graphics/Vulkan/Core10/Queue.hs view
@@ -88,13 +88,19 @@ -- | VkPipelineStageFlagBits - Bitmask specifying pipeline stages -- -- = Description--- #_description# -- -- - @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@ specifies the stage of the -- pipeline where any commands are initially received by the queue. --+-- - @VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX@ specifies the stage of+-- the pipeline where device-side generation of commands via+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'+-- is handled.+-- -- - @VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT@ specifies the stage of the -- pipeline where Draw\/DispatchIndirect data structures are consumed.+-- This stage also includes reading commands written by+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'. -- -- - @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@ specifies the stage of the -- pipeline where vertex and index buffers are consumed.@@ -117,26 +123,31 @@ -- - @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@ specifies the stage of -- the pipeline where early fragment tests (depth and stencil tests -- before fragment shading) are performed. This stage also includes--- <{html_spec_relative}#renderpass-load-store-ops subpass load operations>+-- [subpass load+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops) -- for framebuffer attachments with a depth\/stencil format. -- -- - @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ specifies the stage of -- the pipeline where late fragment tests (depth and stencil tests -- after fragment shading) are performed. This stage also includes--- <{html_spec_relative}#renderpass-load-store-ops subpass store operations>+-- [subpass store+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops) -- for framebuffer attachments with a depth\/stencil format. -- -- - @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ specifies the stage -- of the pipeline after blending where the final color values are--- output from the pipeline. This stage also includes--- <{html_spec_relative}#renderpass-load-store-ops subpass load and store operations>+-- output from the pipeline. This stage also includes [subpass load and+-- store+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops) -- and multisample resolve operations for framebuffer attachments with -- a color format. -- -- - @VK_PIPELINE_STAGE_TRANSFER_BIT@ specifies the execution of copy--- commands. This includes the operations resulting from all--- <{html_spec_relative}#copies copy commands>,--- <{html_spec_relative}#clears clear commands> (with the exception of+-- commands. This includes the operations resulting from all [copy+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies),+-- [clear+-- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears)+-- (with the exception of -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearAttachments'), -- and -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults'.@@ -205,7 +216,6 @@ -- operations between queues. -- -- = See Also--- #_see_also# -- -- 'VkPipelineStageFlags', -- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.vkCmdWriteBufferMarkerAMD',@@ -334,11 +344,7 @@ data VkQueue_T -- | VkQueue - Opaque handle to a queue object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'vkGetDeviceQueue', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.vkGetDeviceQueue2',@@ -353,11 +359,7 @@ data VkCommandBuffer_T -- | VkCommandBuffer - Opaque handle to a command buffer object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkCmdProcessCommandsInfoNVX', -- 'VkSubmitInfo',@@ -435,11 +437,7 @@ data VkFence_T -- | VkFence - Opaque handle to a fence object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkAcquireNextImageInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkFenceGetFdInfoKHR',@@ -461,11 +459,7 @@ data VkSemaphore_T -- | VkSemaphore - Opaque handle to a semaphore object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkAcquireNextImageInfoKHR', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkBindSparseInfo',@@ -482,7 +476,6 @@ -- | vkGetDeviceQueue - Get a queue handle from a device -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the queue. --@@ -495,9 +488,6 @@ -- - @pQueue@ is a pointer to a @VkQueue@ object that will be filled with -- the handle for the requested queue. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @queueFamilyIndex@ /must/ be one of the queue family indices@@ -518,7 +508,6 @@ -- - @pQueue@ /must/ be a valid pointer to a @VkQueue@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueue' foreign import ccall "vkGetDeviceQueue" vkGetDeviceQueue :: ("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ()@@ -526,7 +515,6 @@ -- queue -- -- = Parameters--- #_parameters# -- -- - @queue@ is the queue that the command buffers will be submitted to. --@@ -538,10 +526,10 @@ -- - @fence@ is an /optional/ handle to a fence to be signaled once all -- submitted command buffers have completed execution. If @fence@ is -- not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', it defines a--- <{html_spec_relative}#synchronization-fences-signaling fence signal operation>.+-- [fence signal+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling). -- -- = Description--- #_description# -- -- __Note__ --@@ -549,8 +537,8 @@ -- attempt to batch work together into as few calls to @vkQueueSubmit@ as -- possible. ----- @vkQueueSubmit@ is a--- <{html_spec_relative}#devsandqueues-submission queue submission command>,+-- @vkQueueSubmit@ is a [queue submission+-- command](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission), -- with each batch defined by an element of @pSubmits@ as an instance of -- the 'VkSubmitInfo' structure. Batches begin execution in the order they -- appear in @pSubmits@, but /may/ complete out of order.@@ -559,35 +547,41 @@ -- additional ordering constraints compared to other submission commands, -- with dependencies involving previous and subsequent queue operations. -- Information about these additional constraints can be found in the--- <{html_spec_relative}#synchronization-semaphores semaphore> and--- <{html_spec_relative}#synchronization-fences fence> sections of--- <{html_spec_relative}#synchronization the synchronization chapter>.+-- [semaphore](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores)+-- and+-- [fence](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences)+-- sections of [the synchronization+-- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization). -- -- Details on the interaction of @pWaitDstStageMask@ with synchronization--- are described in the--- <{html_spec_relative}#synchronization-semaphores-waiting semaphore wait operation>--- section of--- <{html_spec_relative}#synchronization the synchronization chapter>.+-- are described in the [semaphore wait+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-waiting)+-- section of [the synchronization+-- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization). -- -- The order that batches appear in @pSubmits@ is used to determine--- <{html_spec_relative}#synchronization-submission-order submission order>,--- and thus all the--- <{html_spec_relative}#synchronization-implicit implicit ordering guarantees>+-- [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order),+-- and thus all the [implicit ordering+-- guarantees](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-implicit) -- that respect it. Other than these implicit ordering guarantees and any--- <{html_spec_relative}#synchronization explicit synchronization primitives>,+-- [explicit synchronization+-- primitives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization), -- these batches /may/ overlap or otherwise execute out of order. ----- If any command buffer submitted to this queue is in the--- <{html_spec_relative}#commandbuffers-lifecycle executable state>, it is--- moved to the--- <{html_spec_relative}#commandbuffers-lifecycle pending state>. Once--- execution of all submissions of a command buffer complete, it moves from--- the <{html_spec_relative}#commandbuffers-lifecycle pending state>, back--- to the <{html_spec_relative}#commandbuffers-lifecycle executable state>.+-- If any command buffer submitted to this queue is in the [executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- it is moved to the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+-- Once execution of all submissions of a command buffer complete, it moves+-- from the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- back to the [executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- If a command buffer was recorded with the -- @VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT@ flag, it instead moves--- back to the--- <{html_spec_relative}#commandbuffers-lifecycle invalid state>.+-- back to the [invalid+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- If @vkQueueSubmit@ fails, it /may/ return @VK_ERROR_OUT_OF_HOST_MEMORY@ -- or @VK_ERROR_OUT_OF_DEVICE_MEMORY@. If it does, the implementation@@ -596,8 +590,8 @@ -- and any semaphores referenced by @pSubmits@ is unaffected by the call or -- its failure. If @vkQueueSubmit@ fails in such a way that the -- implementation is unable to make that guarantee, the implementation--- /must/ return @VK_ERROR_DEVICE_LOST@. See--- <{html_spec_relative}#devsandqueues-lost-device Lost Device>.+-- /must/ return @VK_ERROR_DEVICE_LOST@. See [Lost+-- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device). -- -- == Valid Usage --@@ -621,7 +615,8 @@ -- - Any stage flag included in any element of the @pWaitDstStageMask@ -- member of any element of @pSubmits@ /must/ be a pipeline stage -- supported by one of the capabilities of @queue@, as specified in the--- <{html_spec_relative}#synchronization-pipeline-stages-supported table of supported pipeline stages>.+-- [table of supported pipeline+-- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-supported). -- -- - Each element of the @pSignalSemaphores@ member of any element of -- @pSubmits@ /must/ be unsignaled when the semaphore signal operation@@ -633,30 +628,33 @@ -- -- - All elements of the @pWaitSemaphores@ member of all elements of -- @pSubmits@ /must/ be semaphores that are signaled, or have--- <{html_spec_relative}#synchronization-semaphores-signaling semaphore signal operations>+-- [semaphore signal+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling) -- previously submitted for execution. -- -- - Each element of the @pCommandBuffers@ member of each element of--- @pSubmits@ /must/ be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending or executable state>.+-- @pSubmits@ /must/ be in the [pending or executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - If any element of the @pCommandBuffers@ member of any element of -- @pSubmits@ was not recorded with the -- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@, it /must/ not be in--- the <{html_spec_relative}#commandbuffers-lifecycle pending state>.+-- the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). ----- - Any--- <{html_spec_relative}#commandbuffers-secondary secondary command buffers recorded>+-- - Any [secondary command buffers+-- recorded](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-secondary) -- into any element of the @pCommandBuffers@ member of any element of--- @pSubmits@ /must/ be in the--- <{html_spec_relative}#commandbuffers-lifecycle pending or executable state>.+-- @pSubmits@ /must/ be in the [pending or executable+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). ----- - If any--- <{html_spec_relative}#commandbuffers-secondary secondary command buffers recorded>+-- - If any [secondary command buffers+-- recorded](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-secondary) -- into any element of the @pCommandBuffers@ member of any element of -- @pSubmits@ was not recorded with the -- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@, it /must/ not be in--- the <{html_spec_relative}#commandbuffers-lifecycle pending state>.+-- the [pending+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle). -- -- - Each element of the @pCommandBuffers@ member of each element of -- @pSubmits@ /must/ have been allocated from a @VkCommandPool@ that@@ -689,21 +687,21 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | Any | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | Any | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -711,19 +709,16 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'VkFence', 'VkQueue', 'VkSubmitInfo' foreign import ccall "vkQueueSubmit" vkQueueSubmit :: ("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult -- | vkQueueWaitIdle - Wait for a queue to become idle -- -- = Parameters--- #_parameters# -- -- - @queue@ is the queue on which to wait. -- -- = Description--- #_description# -- -- @vkQueueWaitIdle@ is equivalent to submitting a fence to a queue and -- waiting with an infinite timeout for that fence to signal.@@ -734,21 +729,21 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | Any | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | Any | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -756,19 +751,16 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'VkQueue' foreign import ccall "vkQueueWaitIdle" vkQueueWaitIdle :: ("queue" ::: VkQueue) -> IO VkResult -- | vkDeviceWaitIdle - Wait for a device to become idle -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device to idle. -- -- = Description--- #_description# -- -- @vkDeviceWaitIdle@ is equivalent to calling @vkQueueWaitIdle@ for all -- queues owned by @device@.@@ -784,10 +776,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -795,22 +787,21 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkDeviceWaitIdle" vkDeviceWaitIdle :: ("device" ::: VkDevice) -> IO VkResult -- | VkSubmitInfo - Structure specifying a queue submit operation -- -- = Description--- #_description# -- -- The order that command buffers appear in @pCommandBuffers@ is used to--- determine--- <{html_spec_relative}#synchronization-submission-order submission order>,--- and thus all the--- <{html_spec_relative}#synchronization-implicit implicit ordering guarantees>+-- determine [submission+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order),+-- and thus all the [implicit ordering+-- guarantees](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-implicit) -- that respect it. Other than these implicit ordering guarantees and any--- <{html_spec_relative}#synchronization explicit synchronization primitives>,+-- [explicit synchronization+-- primitives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization), -- these command buffers /may/ overlap or otherwise execute out of order. -- -- == Valid Usage@@ -818,13 +809,13 @@ -- - Each element of @pCommandBuffers@ /must/ not have been allocated -- with @VK_COMMAND_BUFFER_LEVEL_SECONDARY@ ----- - If the--- <{html_spec_relative}#features-features-geometryShader geometry shaders>+-- - If the [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader) -- feature is not enabled, each element of @pWaitDstStageMask@ /must/ -- not contain @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ ----- - If the--- <{html_spec_relative}#features-features-tessellationShader tessellation shaders>+-- - If the [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader) -- feature is not enabled, each element of @pWaitDstStageMask@ /must/ -- not contain @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or -- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@@@ -872,28 +863,39 @@ -- the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'VkCommandBuffer', 'VkPipelineStageFlags', 'VkSemaphore', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkQueueSubmit' data VkSubmitInfo = VkSubmitInfo- { -- No documentation found for Nested "VkSubmitInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSubmitInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSubmitInfo" "vkWaitSemaphoreCount"+ , -- | @waitSemaphoreCount@ is the number of semaphores upon which to wait+ -- before executing the command buffers for the batch. vkWaitSemaphoreCount :: Word32- , -- No documentation found for Nested "VkSubmitInfo" "vkPWaitSemaphores"+ , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to+ -- wait before the command buffers for this batch begin execution. If+ -- semaphores to wait on are provided, they define a [semaphore wait+ -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-waiting). vkPWaitSemaphores :: Ptr VkSemaphore- , -- No documentation found for Nested "VkSubmitInfo" "vkPWaitDstStageMask"+ , -- | @pWaitDstStageMask@ is a pointer to an array of pipeline stages at which+ -- each corresponding semaphore wait will occur. vkPWaitDstStageMask :: Ptr VkPipelineStageFlags- , -- No documentation found for Nested "VkSubmitInfo" "vkCommandBufferCount"+ , -- | @commandBufferCount@ is the number of command buffers to execute in the+ -- batch. vkCommandBufferCount :: Word32- , -- No documentation found for Nested "VkSubmitInfo" "vkPCommandBuffers"+ , -- | @pCommandBuffers@ is a pointer to an array of command buffers to execute+ -- in the batch. vkPCommandBuffers :: Ptr VkCommandBuffer- , -- No documentation found for Nested "VkSubmitInfo" "vkSignalSemaphoreCount"+ , -- | @signalSemaphoreCount@ is the number of semaphores to be signaled once+ -- the commands specified in @pCommandBuffers@ have completed execution. vkSignalSemaphoreCount :: Word32- , -- No documentation found for Nested "VkSubmitInfo" "vkPSignalSemaphores"+ , -- | @pSignalSemaphores@ is a pointer to an array of semaphores which will be+ -- signaled when the command buffers for this batch have completed+ -- execution. If semaphores to be signaled are provided, they define a+ -- [semaphore signal+ -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling). vkPSignalSemaphores :: Ptr VkSemaphore } deriving (Eq, Show)@@ -922,13 +924,11 @@ -- | VkPipelineStageFlags - Bitmask of VkPipelineStageFlagBits -- -- = Description--- #_description# -- -- @VkPipelineStageFlags@ is a bitmask type for setting a mask of zero or -- more 'VkPipelineStageFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkPipelineStageFlagBits', 'VkSubmitInfo', -- 'Graphics.Vulkan.Core10.Pass.VkSubpassDependency',
src/Graphics/Vulkan/Core10/QueueSemaphore.hs view
@@ -65,13 +65,11 @@ -- | VkSemaphoreCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkSemaphoreCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkSemaphoreCreateInfo' newtype VkSemaphoreCreateFlags = VkSemaphoreCreateFlags VkFlags@@ -95,7 +93,6 @@ -- | vkCreateSemaphore - Create a new queue semaphore object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the semaphore. --@@ -104,13 +101,14 @@ -- how the semaphore is to be created. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pSemaphore@ points to a handle in which the resulting semaphore -- object is returned. -- -- = Description--- #_description# -- -- When created, the semaphore is in the unsignaled state. --@@ -128,16 +126,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -146,17 +143,15 @@ -- | vkDestroySemaphore - Destroy a semaphore object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the semaphore. -- -- - @semaphore@ is the handle of the semaphore to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -188,7 +183,6 @@ -- - Host access to @semaphore@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -197,9 +191,6 @@ -- | VkSemaphoreCreateInfo - Structure specifying parameters of a newly -- created semaphore ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO@@@ -216,16 +207,15 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkSemaphoreCreateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateSemaphore' data VkSemaphoreCreateInfo = VkSemaphoreCreateInfo- { -- No documentation found for Nested "VkSemaphoreCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSemaphoreCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSemaphoreCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkSemaphoreCreateFlags } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/Sampler.hs view
@@ -91,7 +91,6 @@ -- | VkBorderColor - Specify border color used for texture lookups -- -- = Description--- #_description# -- -- - @VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK@ specifies a transparent, -- floating-point format, black color.@@ -111,11 +110,10 @@ -- - @VK_BORDER_COLOR_INT_OPAQUE_WHITE@ specifies an opaque, integer -- format, white color. ----- These colors are described in detail in--- <{html_spec_relative}#textures-texel-replacement Texel Replacement>.+-- These colors are described in detail in [Texel+-- Replacement](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-replacement). -- -- = See Also--- #_see_also# -- -- 'VkSamplerCreateInfo' newtype VkBorderColor = VkBorderColor Int32@@ -174,7 +172,6 @@ -- coordinates outside an image -- -- = See Also--- #_see_also# -- -- 'VkSamplerCreateInfo' newtype VkSamplerAddressMode = VkSamplerAddressMode Int32@@ -228,17 +225,17 @@ -- | VkFilter - Specify filters used for texture lookups -- -- = Description--- #_description# -- -- - @VK_FILTER_NEAREST@ specifies nearest filtering. -- -- - @VK_FILTER_LINEAR@ specifies linear filtering. ----- These filters are described in detail in--- <{html_spec_relative}#textures-texel-filtering Texel Filtering>.+-- - @VK_FILTER_CUBIC_IMG@ specifies cubic filtering. --+-- These filters are described in detail in [Texel+-- Filtering](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-filtering).+-- -- = See Also--- #_see_also# -- -- 'VkSamplerCreateInfo', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo',@@ -278,17 +275,15 @@ -- | VkSamplerMipmapMode - Specify mipmap mode used for texture lookups -- -- = Description--- #_description# -- -- - @VK_SAMPLER_MIPMAP_MODE_NEAREST@ specifies nearest filtering. -- -- - @VK_SAMPLER_MIPMAP_MODE_LINEAR@ specifies linear filtering. ----- These modes are described in detail in--- <{html_spec_relative}#textures-texel-filtering Texel Filtering>.+-- These modes are described in detail in [Texel+-- Filtering](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-filtering). -- -- = See Also--- #_see_also# -- -- 'VkSamplerCreateInfo' newtype VkSamplerMipmapMode = VkSamplerMipmapMode Int32@@ -322,13 +317,11 @@ -- | VkSamplerCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkSamplerCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkSamplerCreateInfo' newtype VkSamplerCreateFlags = VkSamplerCreateFlags VkFlags@@ -353,11 +346,7 @@ data VkSampler_T -- | VkSampler - Opaque handle to a sampler object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo', -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutBinding',@@ -366,7 +355,6 @@ -- | vkCreateSampler - Create a new sampler object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the sampler. --@@ -375,14 +363,13 @@ -- object. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pSampler@ points to a 'VkSampler' handle in which the resulting -- sampler object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -397,10 +384,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -408,7 +395,6 @@ -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSampler',@@ -417,17 +403,15 @@ -- | vkDestroySampler - Destroy a sampler object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the sampler. -- -- - @sampler@ is the sampler to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -459,7 +443,6 @@ -- - Host access to @sampler@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSampler'@@ -468,7 +451,6 @@ -- sampler -- -- = Members--- #_members# -- -- - @sType@ is the type of this structure. --@@ -496,13 +478,13 @@ -- -- - @mipLodBias@ is the bias to be added to mipmap LOD (level-of-detail) -- calculation and bias provided by image sampling functions in SPIR-V,--- as described in the--- <{html_spec_relative}#textures-level-of-detail-operation Level-of-Detail Operation>+-- as described in the [Level-of-Detail+-- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-level-of-detail-operation) -- section. -- -- - @anisotropyEnable@ is @VK_TRUE@ to enable anisotropic filtering, as--- described in the--- <{html_spec_relative}#textures-texel-anisotropic-filtering Texel Anisotropic Filtering>+-- described in the [Texel Anisotropic+-- Filtering](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-anisotropic-filtering) -- section, or @VK_FALSE@ otherwise. -- -- - @maxAnisotropy@ is the anisotropy value clamp used by the sampler@@ -517,13 +499,13 @@ -- -- - @compareOp@ is a 'Graphics.Vulkan.Core10.Pipeline.VkCompareOp' value -- specifying the comparison function to apply to fetched data before--- filtering as described in the--- <{html_spec_relative}#textures-depth-compare-operation Depth Compare Operation>+-- filtering as described in the [Depth Compare+-- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-depth-compare-operation) -- section. -- -- - @minLod@ and @maxLod@ are the values used to clamp the computed LOD--- value, as described in the--- <{html_spec_relative}#textures-level-of-detail-operation Level-of-Detail Operation>+-- value, as described in the [Level-of-Detail+-- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-level-of-detail-operation) -- section. @maxLod@ /must/ be greater than or equal to @minLod@. -- -- - @borderColor@ is a 'VkBorderColor' value specifying the predefined@@ -551,6 +533,8 @@ -- -- - @compareEnable@ /must/ be @VK_FALSE@. --+-- - The sampler /must/ not enable sampler Y’CBCR conversion.+-- -- - When @unnormalizedCoordinates@ is @VK_TRUE@, images the sampler is -- used with in the shader have the following requirements: --@@ -569,7 +553,6 @@ -- - The functions /must/ not use offsets. -- -- = Description--- #_description# -- -- __Note__ --@@ -588,16 +571,17 @@ -- @minFilter@ = @VK_FILTER_NEAREST@, respectively. -- -- Note that using a @maxLod@ of zero would cause--- <{html_spec_relative}#textures-texel-filtering magnification> to always--- be performed, and the @magFilter@ to always be used. This is valid, just--- not an exact match for OpenGL behavior. Clamping the maximum LOD to 0.25--- allows the λ value to be non-zero and minification to be performed,--- while still always rounding down to the base level. If the @minFilter@--- and @magFilter@ are equal, then using a @maxLod@ of zero also works.+-- [magnification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-filtering)+-- to always be performed, and the @magFilter@ to always be used. This is+-- valid, just not an exact match for OpenGL behavior. Clamping the maximum+-- LOD to 0.25 allows the λ value to be non-zero and minification to be+-- performed, while still always rounding down to the base level. If the+-- @minFilter@ and @magFilter@ are equal, then using a @maxLod@ of zero+-- also works. -- -- The maximum number of sampler objects which /can/ be simultaneously -- created on a device is implementation-dependent and specified by the--- <{html_spec_relative}#features-limits-maxSamplerAllocationCount maxSamplerAllocationCount>+-- [maxSamplerAllocationCount](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxSamplerAllocationCount) -- member of the -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits' -- structure. If @maxSamplerAllocationCount@ is exceeded, @vkCreateSampler@@@ -613,14 +597,21 @@ -- - The absolute value of @mipLodBias@ /must/ be less than or equal to -- @VkPhysicalDeviceLimits@::@maxSamplerLodBias@ ----- - If the--- <{html_spec_relative}#features-features-samplerAnisotropy anisotropic sampling>+-- - If the [anisotropic+-- sampling](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-samplerAnisotropy) -- feature is not enabled, @anisotropyEnable@ /must/ be @VK_FALSE@ -- -- - If @anisotropyEnable@ is @VK_TRUE@, @maxAnisotropy@ /must/ be -- between @1.0@ and @VkPhysicalDeviceLimits@::@maxSamplerAnisotropy@, -- inclusive --+-- - If [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- is enabled and+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT@+-- is not set for the format, @minFilter@ and @magFilter@ /must/ be+-- equal to the sampler Y’CBCR conversion’s @chromaFilter@+-- -- - If @unnormalizedCoordinates@ is @VK_TRUE@, @minFilter@ and -- @magFilter@ /must/ be equal --@@ -645,6 +636,18 @@ -- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER@, @borderColor@ /must/ be a -- valid 'VkBorderColor' value --+-- - If [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- is enabled, @addressModeU@, @addressModeV@, and @addressModeW@+-- /must/ be @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@,+-- @anisotropyEnable@ /must/ be @VK_FALSE@, and+-- @unnormalizedCoordinates@ /must/ be @VK_FALSE@+--+-- - The sampler reduction mode /must/ be set to+-- @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@ if [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)+-- is enabled+-- -- - If the @{html_spec_relative}#VK_KHR_sampler_mirror_clamp_to_edge@ -- extension is not enabled, @addressModeU@, @addressModeV@ and -- @addressModeW@ /must/ not be@@ -653,6 +656,18 @@ -- - If @compareEnable@ is @VK_TRUE@, @compareOp@ /must/ be a valid -- 'Graphics.Vulkan.Core10.Pipeline.VkCompareOp' value --+-- - If either @magFilter@ or @minFilter@ is @VK_FILTER_CUBIC_IMG@,+-- @anisotropyEnable@ /must/ be @VK_FALSE@+--+-- - If either @magFilter@ or @minFilter@ is @VK_FILTER_CUBIC_IMG@, the+-- @reductionMode@ member of+-- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeCreateInfoEXT'+-- /must/ be @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@+--+-- - If @compareEnable@ is @VK_TRUE@, the @reductionMode@ member of+-- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeCreateInfoEXT'+-- /must/ be @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO@@@ -681,48 +696,47 @@ -- - @addressModeW@ /must/ be a valid 'VkSamplerAddressMode' value -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'VkBorderColor', -- 'Graphics.Vulkan.Core10.Pipeline.VkCompareOp', 'VkFilter', -- 'VkSamplerAddressMode', 'VkSamplerCreateFlags', 'VkSamplerMipmapMode', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateSampler' data VkSamplerCreateInfo = VkSamplerCreateInfo- { -- No documentation found for Nested "VkSamplerCreateInfo" "vkSType"+ { -- No documentation found for Nested "VkSamplerCreateInfo" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkPNext"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkFlags"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "flags" vkFlags :: VkSamplerCreateFlags- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMagFilter"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "magFilter" vkMagFilter :: VkFilter- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMinFilter"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "minFilter" vkMinFilter :: VkFilter- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMipmapMode"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "mipmapMode" vkMipmapMode :: VkSamplerMipmapMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkAddressModeU"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "addressModeU" vkAddressModeU :: VkSamplerAddressMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkAddressModeV"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "addressModeV" vkAddressModeV :: VkSamplerAddressMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkAddressModeW"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "addressModeW" vkAddressModeW :: VkSamplerAddressMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMipLodBias"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "mipLodBias" vkMipLodBias :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkAnisotropyEnable"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "anisotropyEnable" vkAnisotropyEnable :: VkBool32- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMaxAnisotropy"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "maxAnisotropy" vkMaxAnisotropy :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkCompareEnable"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "compareEnable" vkCompareEnable :: VkBool32- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkCompareOp"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "compareOp" vkCompareOp :: VkCompareOp- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMinLod"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "minLod" vkMinLod :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkMaxLod"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "maxLod" vkMaxLod :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkBorderColor"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "borderColor" vkBorderColor :: VkBorderColor- , -- No documentation found for Nested "VkSamplerCreateInfo" "vkUnnormalizedCoordinates"+ , -- No documentation found for Nested "VkSamplerCreateInfo" "unnormalizedCoordinates" vkUnnormalizedCoordinates :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/Shader.hs view
@@ -69,13 +69,11 @@ -- | VkShaderModuleCreateFlags - Reserved for future use -- -- = Description--- #_description# -- -- @VkShaderModuleCreateFlags@ is a bitmask type for setting a mask, but is -- currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkShaderModuleCreateInfo' newtype VkShaderModuleCreateFlags = VkShaderModuleCreateFlags VkFlags@@ -100,11 +98,7 @@ data VkShaderModule_T -- | VkShaderModule - Opaque handle to a shader module object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineShaderStageCreateInfo', -- 'vkCreateShaderModule', 'vkDestroyShaderModule'@@ -112,7 +106,6 @@ -- | vkCreateShaderModule - Creates a new shader module object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the shader module. --@@ -120,19 +113,25 @@ -- @VkShaderModuleCreateInfo@ structure. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pShaderModule@ points to a @VkShaderModule@ handle in which the -- resulting shader module object is returned. -- -- = Description--- #_description# -- -- Once a shader module has been created, any entry points it contains--- /can/ be used in pipeline shader stages as described in--- <{html_spec_relative}#pipelines-compute Compute Pipelines> and--- <{html_spec_relative}#pipelines-graphics Graphics Pipelines>.+-- /can/ be used in pipeline shader stages as described in [Compute+-- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-compute)+-- and [Graphics+-- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-graphics). --+-- If the shader stage fails to compile @VK_ERROR_INVALID_SHADER_NV@ will+-- be generated and the compile log will be reported back to the+-- application by @{html_spec_relative}#VK_EXT_debug_report@ if enabled.+-- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -148,10 +147,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -159,7 +158,6 @@ -- - @VK_ERROR_INVALID_SHADER_NV@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -168,17 +166,17 @@ -- | vkDestroyShaderModule - Destroy a shader module module -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the shader module. -- -- - @shaderModule@ is the handle of the shader module to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- = Description--- #_description# -- -- A shader module /can/ be destroyed while pipelines created using its -- shaders are still in use.@@ -210,7 +208,6 @@ -- - Host access to @shaderModule@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkShaderModule'@@ -218,37 +215,41 @@ -- | VkShaderModuleCreateInfo - Structure specifying parameters of a newly -- created shader module ----- = Description--- #_description#--- -- == Valid Usage -- -- - @codeSize@ /must/ be greater than 0 ----- - @codeSize@ /must/ be a multiple of 4+-- - If @pCode@ points to SPIR-V code, @codeSize@ /must/ be a multiple of+-- 4 ----- - @pCode@ /must/ point to valid SPIR-V code, formatted and packed as--- described by the--- <{html_spec_relative}#spirv-spec Khronos SPIR-V Specification>+-- - @pCode@ /must/ point to either valid SPIR-V code, formatted and+-- packed as described by the [Khronos SPIR-V+-- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirv-spec)+-- or valid GLSL code which /must/ be written to the GL_KHR_vulkan_glsl+-- extension specification ----- - @pCode@ /must/ adhere to the validation rules described by the--- <{html_spec_relative}#spirvenv-module-validation Validation Rules within a Module>--- section of the--- <{html_spec_relative}#spirvenv-capabilities SPIR-V Environment>+-- - If @pCode@ points to SPIR-V code, that code /must/ adhere to the+-- validation rules described by the [Validation Rules within a+-- Module](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-module-validation)+-- section of the [SPIR-V+-- Environment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-capabilities) -- appendix --+-- - If @pCode@ points to GLSL code, it /must/ be valid GLSL code written+-- to the GL_KHR_vulkan_glsl GLSL extension specification+-- -- - @pCode@ /must/ declare the @Shader@ capability for SPIR-V code -- -- - @pCode@ /must/ not declare any capability that is not supported by -- the API, as described by the--- <{html_spec_relative}#spirvenv-module-validation Capabilities>--- section of the--- <{html_spec_relative}#spirvenv-capabilities SPIR-V Environment>+-- [Capabilities](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-module-validation)+-- section of the [SPIR-V+-- Environment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-capabilities) -- appendix -- -- - If @pCode@ declares any of the capabilities listed as /optional/ in--- the--- <{html_spec_relative}#spirvenv-capabilities-table SPIR-V Environment>+-- the [SPIR-V+-- Environment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-capabilities-table) -- appendix, the corresponding feature(s) /must/ be enabled. -- -- == Valid Usage (Implicit)@@ -261,24 +262,24 @@ -- - @flags@ /must/ be @0@ -- -- - @pCode@ /must/ be a valid pointer to an array of--- <<data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARoAAABCCAYAAACIGRmUAAAABmJLR0QA/wD/AP+gvaeTAAAQE0lEQVR4nO2dabAVxRWAv/vgyQMeIiqLEBWMhpSARiUxatwNGKMmISbErayUS1yiJiJquYFRy7iVIZaaRaMxRdRE44IakxhBIVEQBDcUUYKioj5EHiCKPt7Nj3On7kxPz70zPT0zb+mvqkvfcPvMmZ6Znu7T55wGh8PhCDIG+BvwGVDWlLXAxUBjUQo6HI7OSwNwGdCOdCjvApcC44GDgcmVY16Hc3+ljsPhcMSiB3Av1U7kUaCf5nfDgA98vzs9LwUdDkfn53dUO495QK8av73Q99s3slfN4XB0Bb5HteNoA0bV+f0+BG02w7NUzuFwdH6agHeodhp3xqizI8GO5vB6FZwhx+Ho3hwDDPX9fVOMOupqU1O9Cq6jcTi6N6f4/v9NYG6MOsOUv8v1KvRMopEjE64Ctqnx763A2Tnp4uhebAl81ff3VsCrMeqpq1Hv1KvgOppi2QyYRG3Hp5k56dKR6AGMBHYGBgD9kVWQdYiz2NvAksp/635NLdAfMZj2Be4D3svhnHmwH8FZTTPS7klZbkUbR2bsgd7z0l+uKUy7fNkCOBF4HPiE+u1SBj4GZgFXAocBfTLQa1dgpe+cK5AXsiswmWB7fq1YdRx58SXCL9PEQjXKnt7ARchIJU7nUqt8AjwCHG1Jtwbgdc15vm9JftHcSPC6tsjqRG7q1LHYQ3NsQe5a5MfOwEPAF5Xjr1SOL0SmR2uR6WU/ZGl1LPADxKbgpwkZ2awH7rKg3xiNbgAfWpDd0WgD1hSthCMfriP4hVkDlArVKDv2JzyKeR44KGb9zZC4nE2ERxznWdJxBNW4H6/Mpeus1l5O9bo2Jqh3DnA38OsslHJkzyyCD/UThWqTHTsAqwhe64PINCopFxHuaA62oyYgQYWfIV/8+4BBFmUXzREE263W6qfHSKpR3T/PTjVHVpSQpWz/jb+2UI2y4z8Er/NlzA25jcD7irwBFnT004sYTmmdkGZgNdV2O6X2z+kDPEt1ZOdML50QnSH4R4VqlA2HE77OI1PKvMMn6/WUsrob/pWn94DtIn43DJhd+d2bwLa5aOewztGEX8CdCtUoG/5B8BpbSG/zuMQn756UsrobJcRw7rXfauAKxKj+DcTo/hvEh6mMRHZHdUaOTsD1dH1DcF/gU4LXea8Fuf60BbYMwd2JBuAswnYzf1kM/ATD6ZKbY3Uc1KXt55Ab3JXYm3Cek7csyJ2NjGoAHrAgr7vRjqwg3YyMYkYirgMbkYx6C4DX0pzARkfTiMRLbAcMBDZHli3XIMq9hHhw5oGqSzPi8/A+4pNh46GOS1/kxdoWGAx8jty0+YRvWgnYTTmWl/9MH2BPJIJ3MNKGLZUyD2k7W+imgja8eWdXiiMdbcjK56xi1ahSQmI/ZlCdu0WVTchLczFi8MxClwnAwzF0WYQMEbMcye2DfFU31NBjAfBNX528DcE9gOOAfxGeyvhLO9JBn1apk5apmnMsoWP4pQyi9rPjLcHndS6TksX7VRiHI6MU3YVuJDpzuvfgzsBeTMURdXTROXOVgRcQr0+bDAL+GnG+qLY4s1L3GM2/Z2UInoC83DqdNhB2UPO3mc5LNgkXR8i+MKVcGxxG/Xt2qaVzfSvGuZKWVjqwTS/Jl70X4rn6U+X4DCQr15NUjUlbIl/2Mwl+uUtIR7UUGZabEqXLgz5dPkSubwSyonMeMp0B6WQeR6JXl6TQw2MXxGV+e+X46srxF5G22Qpxn/9ORZdpiC1Gtc+sxf4ybRNwA3Cq79jnwO3IqsM8pKNpRFI5Hk9w9DcGcSDcF/Mp6LKI41ciX+PzsTtVS8p03/8PBg5R/t3WdNZ/v+9COve4DATGaY5fgbx7nZpm4L8Ee9AW9BesciXh3vfYlLqoDl8tBDs0HbsQdohbiriyp2Es4SnbRsQ9PsrJ6wvA05XfziHsETwzpU4q/YBnlHO8isQa1eIgwiPUx1LoMRTp3KK+yhuQpVTVXlUEJxHWb4gl2fdX5K1IWG9LJExD1WuKJb0KpTfhF+F96j+kHg2EpzdfNtSlCfmq+mV9QP1kyh6nE75J5xjqAmJ09qcQ8F6WQ2PUHUR124qNiozrUuik0kT4/r2CPLRxuJZwm+2bQh9/tv1aZTHyAtme4sblFkWfusmdEvBWRWYSm09/ZCFBbadfWtSrUKYTvLB24o1k/Pj9HNZhbvy7U6NLnJfaoy9hI+27hrr0QH/jk4zWvOGuWmylOQD4kyJ7AxIBHZeRGv1uTqFPX8Kjq3plKXA1wWxwWTNP0eEhS3IH+mTGtfnoZhRlZOrdJfgu4Yv7vYEcf/DWU4a6HKnR5TYDOf/WyDH5ap6tkXN3Qhl7aWSUsbd6oGuzCxLK0MVgvZBSr2bENpSks/GPxiaTbfKpRsKrcVMsyT7UJ/PbMX6vm1GUkZFhhzX+JqEP4WnBRszcj/fzybjBUBf/VpxlxHYw3EDWHYRvWtLd9rYm/PK1kWykAMGvm1dsrR7o2qwFM78Vb6jvlU0W9ANJFeHFzyQtLcAZlvRQ+YrmfHE6hTg0I8/tcOrvXd0L+KdGlz9i9oxM1ciyXaYmVeoMjZDpNWtEMxDx2zgOs5ykOtuKaWKjaRpZl9SsEeYCjYykoxmQjGaqnJkGcnTo2uxyQ1lqR1MmvRHdz26IZ6p/q9W45SFq76poQpaG4Lg0Iiu6qh73YO7TNFUjr9COpgHxXlWFHGZ4gWkooff7MP3C3KaRdXWC+g1IMmZVRt1NtDQM0cixYQiOajMTI3wJvW+Ubl/mtPRARjnTkAjhuA+3SSdfiywNwXFQ98H2ygOkczadqpGZS0cTpfRehB3GWpFhXN7sRdhm0YpEAZvQX3PsswT19yXsL2OqzwjNMRu+GnsTbrONJLfPgHxZ1SF+G9mElWxCfKCeRGxgYxFnxqOpPaKYCPwWe6NB1a8pz3SqDciih5qX+DHgh0jbdzqiOhrdqtIcirnI8ZpjaXTRGVqXJ6iv89eZg/iH2NDFxkOtu3+9gBMsyAbx/0jiZGbK/Eo5HwnJuJRoO9ix2OloGhGfKz95dTQlZLHlGOX4E0jIT5IPYqdAt5RWVPi9TV0a0G/lkST1o+doZ0OfGxQ5a7FjCNa1mc1ia+SQlCbgDxE6LbR0Dp0h2GRabMJNmnPPoerR3qUokf5l7Ki6jNbI2kR857US+iDEuAm1VZ5S5MwylOMnqs32tyC7I1BCRhjq9dkK2ThRIzsPQ7Caj6iM+PJsnsO5C2Eo+i+Gut9uZ9RFt5IWZ69hj20j9Blaq1IEPQmHLlxvIEclqs3yXjXJkvMIX5+t6c3Nitw8DMG6MJ2F2M99XBg6G832mmMfk7/lHfS6fIK5LgdqjiUx4u6gObYBM+/isYSdzmy8LLo2W09x27gOQa4VZCUzVQKlCis1x/5nQS7kbwi+hHD0+mLEFvhRxufODV0ogM4noaiNpXS6tBrK6kd4eb4dsfDHRefsttZQH51Reb6hLD8d6f6BRIHPqJQk4SK1UDeOAzuJr3qSryF4EvAL5dhSxDSwKsPz5o5uRLNecyyvDHkqNnWZQHjfoAdJNrfXrSx9aqjP8crf65CHLC26NjPVEWREMtr393ySdVz+EYKtFBC7a4793YLc0YQj7rPqaM4g7DO1HLH3FTX6zJURhOeLpoGHlyE98ypkSXRrC7q0GOhRQuJz/HLakRSWSdhTo4/JCGucRs4sAzk6hmtkm7SZh5fSoIx4CCf1wl3qq//jFHp4eKlG/de3yIJc0BuC42yqlpSTCCcYW4Her0rHnsBRSF6jrGkieA+t5kl6m2AjtFE/LkNlIMF4INNIU1WXMsnjdSZqZJhs59kHfT6VJB1oA9XE47YNwR66kAGT1Yv9CL4QJyWs31+pbxoC4ec0wtd2lAW5kI8h+DjCmR9XkiyQ1ossf966dmFUQ7XVjuZ2wjdTzTZWD396iZXo59WmuiTZcGwI4RiapZj7JuiWVk9IUP8yTf0yYSetNOjCLJLmIB6APFRe/Zkk9/E5UNHhJQMZfnYiuLNiGVk1tBXFPFeRbSs1hMdRyEdbHW3GzacEwchyk+wFSdiZcPiJ1Y5mDOFeN8n+O5N89dpJ5/Ck0yXufLwf4vCkfj2SRln70QUrLiZekOHJROfkNQk2jWIU4Qf6aeIH4/VDwgC8uh9gFrV/LuHrPMtADoj9ZJkiaxX6VTYTehL2P5piSTbIx1F9aVcjDoJJ8DsUJs06kIQS+sh66zuB6jKhnVynTi8kQNFfJ00Gu1q61HtgdyScvChJNr4oeiPGOlWf+4geJQ1EYnG8h0uNyrXlEexHnQaUgV9RP+nYbkiOY69OK3rjaxz8OyB6ZRPyAquG+Sj6I6PAjxU5q0mX6U9lV42utjyCxxN29GzFLEm/346U1MaYhFMq51gDPOI7p1FHU+vh7g08ChygHJ+OvDSLkJWSRiQqeDwyf/Z8TdqQkY2JLSSuLvcgbtsLkdWWzZEHZiJiT/AbLmcj05O3LehzEBJgqo4QViGRxK8gL8ZgJCh0HGLfWYO00zUEPXU/IjhMb0c69TR5X3ohW9CoU96ngRuR+BnPqDoI+DoSLzTBd13LKn+b2gJeI3o3hw+RUfJc5OFtRb74zUjHPBrpSMYRNkAvQQyhaRLLTyKY8Gw7wn5WDxA09k8jeajD/sgIXO1YF2HWrrsjerchI880K4pRDEJySg9AVsd2Rzo4gDdINyPQ0oy8zLqhfplwrluvvIwYEvPUJWqbl1VIUJ6NfYn8nIDe1T+qLEBeOl3GOrXY2JkBpHNTU7H6SxvhKVYZMXjfguTLScMoJOewmoDLtKwCfoadXDgrDM5vsgXOwwbniVNsrbTp+HPlHM8gI+Bbfee1PnXycwjiQRvVsZSRr/BTyAuY5QZtcXRpQ76U55JtysfRyEhL97J65TlkWdebsug2i1OLaYKxKA6o6Flrs7gy8vJdi/2NyHogW61OQUaW6jSoVmkB/oKkTYg73aqHyQZupnuhq1kqbZWsDMGe68XnyOwALHQ0SRuuH5LrZBtkeNuA3IA3SO7IlRZVF++hfA+xzeTpvj0EmSINQ0YB6xHnq2cpJnQjCm+b3qHIy9YDGV2tRKYEb+akRwmZqoys6NKvUsrIdHwtch9fRB9u4MiG3sjK4A6IM+HkyvFbyXjq5HA4ug9XIZ39coILG7lNnRwOR9dmNFU7p7ralrqj6QibqzscjmIpISvJjYibxsPFquNwOLoipyKjlbXocz25qZPD4UjFEGThpAycGfEb19E4HI5U3I10IM8SbUpxHY3D4TDG2563jdphJs4Y7HA4jOiDxMOBhKQ8V6AuDoeji+IFP79Ffe/53D2DHQ5H12AlYgheh0TC12Irqp1RG2Fv9xeokyMqy5gkh8PRcfEGGV74R1x6Es4B1KUSqTscjmJwxmCHw9HxcR2Nw+HIHNfROByOzHEdjcPhyBy3vO1wOFSmE9xhdAiSJB4k894y5fejSJff2uFwdEPULYrqlbpuMv8HtK+/BrL8EjoAAAAASUVORK5CYII= stem 3c191c7a3fc8d91b8c1ec0b877b089a5>>--- @uint32_t@ values+-- \(codeSize \over 4\) @uint32_t@ values -- -- = See Also--- #_see_also# -- -- 'VkShaderModuleCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateShaderModule' data VkShaderModuleCreateInfo = VkShaderModuleCreateInfo- { -- No documentation found for Nested "VkShaderModuleCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkShaderModuleCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkShaderModuleCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkShaderModuleCreateFlags- , -- No documentation found for Nested "VkShaderModuleCreateInfo" "vkCodeSize"+ , -- | @codeSize@ is the size, in bytes, of the code pointed to by @pCode@. vkCodeSize :: CSize- , -- No documentation found for Nested "VkShaderModuleCreateInfo" "vkPCode"+ , -- | @pCode@ points to code that is used to create the shader module. The+ -- type and format of the code is determined from the content of the memory+ -- addressed by @pCode@. vkPCode :: Ptr Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs view
@@ -112,7 +112,6 @@ -- included in a view -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo', -- 'VkImageAspectFlags',@@ -161,7 +160,9 @@ pattern VK_IMAGE_ASPECT_STENCIL_BIT = VkImageAspectFlagBits 0x00000004 -- | @VK_IMAGE_ASPECT_METADATA_BIT@ specifies the metadata aspect, used for--- sparse <{html_spec_relative}#sparsememory sparse resource> operations.+-- sparse [sparse+-- resource](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory)+-- operations. pattern VK_IMAGE_ASPECT_METADATA_BIT :: VkImageAspectFlagBits pattern VK_IMAGE_ASPECT_METADATA_BIT = VkImageAspectFlagBits 0x00000008 -- ** VkSparseMemoryBindFlagBits@@ -170,7 +171,6 @@ -- binding operation -- -- = See Also--- #_see_also# -- -- 'VkSparseMemoryBindFlags' newtype VkSparseMemoryBindFlagBits = VkSparseMemoryBindFlagBits VkFlags@@ -200,7 +200,6 @@ -- about a sparse image resource -- -- = See Also--- #_see_also# -- -- 'VkSparseImageFormatFlags' newtype VkSparseImageFormatFlagBits = VkSparseImageFormatFlagBits VkFlags@@ -246,7 +245,6 @@ -- sparse image -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the image. --@@ -260,7 +258,6 @@ -- array of @VkSparseImageMemoryRequirements@ structures. -- -- = Description--- #_description# -- -- If @pSparseMemoryRequirements@ is @NULL@, then the number of sparse -- memory requirements available is returned in@@ -305,7 +302,6 @@ -- @device@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',@@ -315,7 +311,6 @@ -- an image format applied to sparse images -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device from which to query the -- sparse image capabilities.@@ -338,7 +333,6 @@ -- 'VkSparseImageFormatProperties' structures. -- -- = Description--- #_description# -- -- If @pProperties@ is @NULL@, then the number of sparse format properties -- available is returned in @pPropertyCount@. Otherwise, @pPropertyCount@@@ -402,7 +396,6 @@ -- structures -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkFormat', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',@@ -415,7 +408,6 @@ -- | vkQueueBindSparse - Bind device memory to a sparse resource object -- -- = Parameters--- #_parameters# -- -- - @queue@ is the queue that the sparse binding operations will be -- submitted to.@@ -427,14 +419,13 @@ -- -- - @fence@ is an /optional/ handle to a fence to be signaled. If -- @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', it--- defines a--- <{html_spec_relative}#synchronization-fences-signaling fence signal operation>.+-- defines a [fence signal+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling). -- -- = Description--- #_description# ----- @vkQueueBindSparse@ is a--- <{html_spec_relative}#devsandqueues-submission queue submission command>,+-- @vkQueueBindSparse@ is a [queue submission+-- command](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission), -- with each batch defined by an element of @pBindInfo@ as an instance of -- the 'VkBindSparseInfo' structure. Batches begin execution in the order -- they appear in @pBindInfo@, but /may/ complete out of order.@@ -451,7 +442,8 @@ -- effectively only define execution dependencies. -- -- Additional information about fence and semaphore operation is described--- in <{html_spec_relative}#synchronization the synchronization chapter>.+-- in [the synchronization+-- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization). -- -- == Valid Usage --@@ -472,7 +464,8 @@ -- -- - All elements of the @pWaitSemaphores@ member of all elements of -- @pBindInfo@ /must/ be semaphores that are signaled, or have--- <{html_spec_relative}#synchronization-semaphores-signaling semaphore signal operations>+-- [semaphore signal+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling) -- previously submitted for execution. -- -- == Valid Usage (Implicit)@@ -513,21 +506,21 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | SPARSE_BINDING | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | SPARSE_BINDING | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -535,18 +528,13 @@ -- - @VK_ERROR_DEVICE_LOST@ -- -- = See Also--- #_see_also# -- -- 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.Queue.VkFence', -- 'Graphics.Vulkan.Core10.Queue.VkQueue' foreign import ccall "vkQueueBindSparse" vkQueueBindSparse :: ("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult -- | VkOffset3D - Structure specifying a three-dimensional offset ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferImageCopy', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageBlit',@@ -554,11 +542,11 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageResolve', -- 'VkSparseImageMemoryBind' data VkOffset3D = VkOffset3D- { -- No documentation found for Nested "VkOffset3D" "vkX"+ { -- | @x@ is the x offset. vkX :: Int32- , -- No documentation found for Nested "VkOffset3D" "vkY"+ , -- | @y@ is the y offset. vkY :: Int32- , -- No documentation found for Nested "VkOffset3D" "vkZ"+ , -- | @z@ is the z offset. vkZ :: Int32 } deriving (Eq, Show)@@ -575,11 +563,7 @@ -- | VkSparseImageFormatProperties - Structure specifying sparse image format -- properties ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D', -- 'VkImageAspectFlags', 'VkSparseImageFormatFlags',@@ -587,11 +571,14 @@ -- 'VkSparseImageMemoryRequirements', -- 'vkGetPhysicalDeviceSparseImageFormatProperties' data VkSparseImageFormatProperties = VkSparseImageFormatProperties- { -- No documentation found for Nested "VkSparseImageFormatProperties" "vkAspectMask"+ { -- | @aspectMask@ is a bitmask 'VkImageAspectFlagBits' specifying which+ -- aspects of the image the properties apply to. vkAspectMask :: VkImageAspectFlags- , -- No documentation found for Nested "VkSparseImageFormatProperties" "vkImageGranularity"+ , -- | @imageGranularity@ is the width, height, and depth of the sparse image+ -- block in texels or compressed texel blocks. vkImageGranularity :: VkExtent3D- , -- No documentation found for Nested "VkSparseImageFormatProperties" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkSparseImageFormatFlagBits' specifying+ -- additional information about the sparse resource. vkFlags :: VkSparseImageFormatFlags } deriving (Eq, Show)@@ -609,7 +596,6 @@ -- memory requirements -- -- = Members--- #_members# -- -- - @formatProperties.aspectMask@ is the set of aspects of the image -- that this sparse memory requirement applies to. This will usually@@ -658,25 +644,21 @@ -- @VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT@ (otherwise the value is -- undefined). ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- @VkDeviceSize@, 'VkSparseImageFormatProperties', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkSparseImageMemoryRequirements2', -- 'vkGetImageSparseMemoryRequirements' data VkSparseImageMemoryRequirements = VkSparseImageMemoryRequirements- { -- No documentation found for Nested "VkSparseImageMemoryRequirements" "vkFormatProperties"+ { -- No documentation found for Nested "VkSparseImageMemoryRequirements" "formatProperties" vkFormatProperties :: VkSparseImageFormatProperties- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "vkImageMipTailFirstLod"+ , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailFirstLod" vkImageMipTailFirstLod :: Word32- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "vkImageMipTailSize"+ , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailSize" vkImageMipTailSize :: VkDeviceSize- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "vkImageMipTailOffset"+ , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailOffset" vkImageMipTailOffset :: VkDeviceSize- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "vkImageMipTailStride"+ , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailStride" vkImageMipTailStride :: VkDeviceSize } deriving (Eq, Show)@@ -696,9 +678,6 @@ *> poke (ptr `plusPtr` 40) (vkImageMipTailStride (poked :: VkSparseImageMemoryRequirements)) -- | VkImageSubresource - Structure specifying a image subresource ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @aspectMask@ /must/ be a valid combination of@@ -707,16 +686,15 @@ -- - @aspectMask@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'VkImageAspectFlags', 'VkSparseImageMemoryBind', -- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout' data VkImageSubresource = VkImageSubresource- { -- No documentation found for Nested "VkImageSubresource" "vkAspectMask"+ { -- | @aspectMask@ is a 'VkImageAspectFlags' selecting the image /aspect/. vkAspectMask :: VkImageAspectFlags- , -- No documentation found for Nested "VkImageSubresource" "vkMipLevel"+ , -- | @mipLevel@ selects the mipmap level. vkMipLevel :: Word32- , -- No documentation found for Nested "VkImageSubresource" "vkArrayLayer"+ , -- | @arrayLayer@ selects the array layer. vkArrayLayer :: Word32 } deriving (Eq, Show)@@ -733,7 +711,6 @@ -- | VkSparseMemoryBind - Structure specifying a sparse memory bind operation -- -- = Description--- #_description# -- -- The /binding range/ [@resourceOffset@, @resourceOffset@ + @size@) has -- different constraints based on @flags@. If @flags@ contains@@ -741,11 +718,9 @@ -- the mip tail region of the metadata aspect. This metadata region is -- defined by: ----- []--- metadataRegion = [base, base + @imageMipTailSize@)+-- - metadataRegion = [base, base + @imageMipTailSize@) ----- []--- base = @imageMipTailOffset@ + @imageMipTailStride@ × n+-- - base = @imageMipTailOffset@ + @imageMipTailStride@ × n -- -- and @imageMipTailOffset@, @imageMipTailSize@, and @imageMipTailStride@ -- values are from the 'VkSparseImageMemoryRequirements' corresponding to@@ -766,7 +741,7 @@ -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ and -- @memoryOffset@ /must/ match the memory requirements of the resource, -- as described in section--- <{html_spec_relative}#resources-association {html_spec_relative}#resources-association>+-- [{html_spec_relative}#resources-association](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-association) -- -- - If @memory@ is not -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ /must/@@ -795,21 +770,26 @@ -- 'VkSparseMemoryBindFlagBits' values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@, -- 'VkSparseBufferMemoryBindInfo', 'VkSparseImageOpaqueMemoryBindInfo', -- 'VkSparseMemoryBindFlags' data VkSparseMemoryBind = VkSparseMemoryBind- { -- No documentation found for Nested "VkSparseMemoryBind" "vkResourceOffset"+ { -- | @resourceOffset@ is the offset into the resource. vkResourceOffset :: VkDeviceSize- , -- No documentation found for Nested "VkSparseMemoryBind" "vkSize"+ , -- | @size@ is the size of the memory region to be bound. vkSize :: VkDeviceSize- , -- No documentation found for Nested "VkSparseMemoryBind" "vkMemory"+ , -- | @memory@ is the @VkDeviceMemory@ object that the range of the resource+ -- is bound to. If @memory@ is+ -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the range is unbound. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkSparseMemoryBind" "vkMemoryOffset"+ , -- | @memoryOffset@ is the offset into the @VkDeviceMemory@ object to bind+ -- the resource range to. If @memory@ is+ -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', this value is+ -- ignored. vkMemoryOffset :: VkDeviceSize- , -- No documentation found for Nested "VkSparseMemoryBind" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkSparseMemoryBindFlagBits' specifying usage of+ -- the binding operation. vkFlags :: VkSparseMemoryBindFlags } deriving (Eq, Show)@@ -829,23 +809,20 @@ *> poke (ptr `plusPtr` 32) (vkFlags (poked :: VkSparseMemoryBind)) -- | VkSparseImageMemoryBind - Structure specifying sparse image memory bind ----- = Description--- #_description#--- -- == Valid Usage ----- - If the--- <{html_spec_relative}#features-features-sparseResidencyAliased sparse aliased residency>+-- - If the [sparse aliased+-- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyAliased) -- feature is not enabled, and if any other resources are bound to -- ranges of @memory@, the range of @memory@ being bound /must/ not -- overlap with those bound ranges -- -- - @memory@ and @memoryOffset@ /must/ match the memory requirements of -- the calling command’s @image@, as described in section--- <{html_spec_relative}#resources-association {html_spec_relative}#resources-association>+-- [{html_spec_relative}#resources-association](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-association) -- -- - @subresource@ /must/ be a valid image subresource for @image@ (see--- <{html_spec_relative}#resources-image-views {html_spec_relative}#resources-image-views>)+-- [{html_spec_relative}#resources-image-views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views)) -- -- - @offset.x@ /must/ be a multiple of the sparse image block width -- (@VkSparseImageFormatProperties@::@imageGranularity.width@) of the@@ -883,24 +860,34 @@ -- 'VkSparseMemoryBindFlagBits' values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@, -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D', -- 'VkImageSubresource', 'VkOffset3D', 'VkSparseImageMemoryBindInfo', -- 'VkSparseMemoryBindFlags' data VkSparseImageMemoryBind = VkSparseImageMemoryBind- { -- No documentation found for Nested "VkSparseImageMemoryBind" "vkSubresource"+ { -- | @subresource@ is the aspectMask and region of interest in the image. vkSubresource :: VkImageSubresource- , -- No documentation found for Nested "VkSparseImageMemoryBind" "vkOffset"+ , -- | @offset@ are the coordinates of the first texel within the image+ -- subresource to bind. vkOffset :: VkOffset3D- , -- No documentation found for Nested "VkSparseImageMemoryBind" "vkExtent"+ , -- | @extent@ is the size in texels of the region within the image+ -- subresource to bind. The extent /must/ be a multiple of the sparse image+ -- block dimensions, except when binding sparse image blocks along the edge+ -- of an image subresource it /can/ instead be such that any coordinate of+ -- @offset@ + @extent@ equals the corresponding dimensions of the image+ -- subresource. vkExtent :: VkExtent3D- , -- No documentation found for Nested "VkSparseImageMemoryBind" "vkMemory"+ , -- | @memory@ is the @VkDeviceMemory@ object that the sparse image blocks of+ -- the image are bound to. If @memory@ is+ -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the sparse image+ -- blocks are unbound. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkSparseImageMemoryBind" "vkMemoryOffset"+ , -- | @memoryOffset@ is an offset into @VkDeviceMemory@ object. If @memory@ is+ -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', this value is+ -- ignored. vkMemoryOffset :: VkDeviceSize- , -- No documentation found for Nested "VkSparseImageMemoryBind" "vkFlags"+ , -- | @flags@ are sparse memory binding flags. vkFlags :: VkSparseMemoryBindFlags } deriving (Eq, Show)@@ -923,9 +910,6 @@ -- | VkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer -- memory bind operation ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @buffer@ /must/ be a valid @VkBuffer@ handle@@ -936,16 +920,16 @@ -- - @bindCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'VkSparseMemoryBind' data VkSparseBufferMemoryBindInfo = VkSparseBufferMemoryBindInfo- { -- No documentation found for Nested "VkSparseBufferMemoryBindInfo" "vkBuffer"+ { -- | @buffer@ is the @VkBuffer@ object to be bound. vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkSparseBufferMemoryBindInfo" "vkBindCount"+ , -- | @bindCount@ is the number of @VkSparseMemoryBind@ structures in the+ -- @pBinds@ array. vkBindCount :: Word32- , -- No documentation found for Nested "VkSparseBufferMemoryBindInfo" "vkPBinds"+ , -- | @pBinds@ is a pointer to array of @VkSparseMemoryBind@ structures. vkPBinds :: Ptr VkSparseMemoryBind } deriving (Eq, Show)@@ -962,9 +946,6 @@ -- | VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image -- opaque memory bind info ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the @flags@ member of any element of @pBinds@ contains@@ -982,16 +963,16 @@ -- - @bindCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', -- 'VkSparseMemoryBind' data VkSparseImageOpaqueMemoryBindInfo = VkSparseImageOpaqueMemoryBindInfo- { -- No documentation found for Nested "VkSparseImageOpaqueMemoryBindInfo" "vkImage"+ { -- | @image@ is the @VkImage@ object to be bound. vkImage :: VkImage- , -- No documentation found for Nested "VkSparseImageOpaqueMemoryBindInfo" "vkBindCount"+ , -- | @bindCount@ is the number of @VkSparseMemoryBind@ structures in the+ -- @pBinds@ array. vkBindCount :: Word32- , -- No documentation found for Nested "VkSparseImageOpaqueMemoryBindInfo" "vkPBinds"+ , -- | @pBinds@ is a pointer to array of @VkSparseMemoryBind@ structures. vkPBinds :: Ptr VkSparseMemoryBind } deriving (Eq, Show)@@ -1008,9 +989,6 @@ -- | VkSparseImageMemoryBindInfo - Structure specifying sparse image memory -- bind info ----- = Description--- #_description#--- -- == Valid Usage -- -- - The @subresource.mipLevel@ member of each element of @pBinds@ /must/@@ -1033,16 +1011,16 @@ -- - @bindCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', -- 'VkSparseImageMemoryBind' data VkSparseImageMemoryBindInfo = VkSparseImageMemoryBindInfo- { -- No documentation found for Nested "VkSparseImageMemoryBindInfo" "vkImage"+ { -- | @image@ is the @VkImage@ object to be bound vkImage :: VkImage- , -- No documentation found for Nested "VkSparseImageMemoryBindInfo" "vkBindCount"+ , -- | @bindCount@ is the number of @VkSparseImageMemoryBind@ structures in+ -- pBinds array vkBindCount :: Word32- , -- No documentation found for Nested "VkSparseImageMemoryBindInfo" "vkPBinds"+ , -- | @pBinds@ is a pointer to array of @VkSparseImageMemoryBind@ structures vkPBinds :: Ptr VkSparseImageMemoryBind } deriving (Eq, Show)@@ -1058,9 +1036,6 @@ *> poke (ptr `plusPtr` 16) (vkPBinds (poked :: VkSparseImageMemoryBindInfo)) -- | VkBindSparseInfo - Structure specifying a sparse binding operation ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_SPARSE_INFO@@@ -1093,36 +1068,52 @@ -- allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', -- 'VkSparseBufferMemoryBindInfo', 'VkSparseImageMemoryBindInfo', -- 'VkSparseImageOpaqueMemoryBindInfo', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkQueueBindSparse' data VkBindSparseInfo = VkBindSparseInfo- { -- No documentation found for Nested "VkBindSparseInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindSparseInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindSparseInfo" "vkWaitSemaphoreCount"+ , -- | @waitSemaphoreCount@ is the number of semaphores upon which to wait+ -- before executing the sparse binding operations for the batch. vkWaitSemaphoreCount :: Word32- , -- No documentation found for Nested "VkBindSparseInfo" "vkPWaitSemaphores"+ , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to+ -- wait on before the sparse binding operations for this batch begin+ -- execution. If semaphores to wait on are provided, they define a+ -- [semaphore wait+ -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-waiting). vkPWaitSemaphores :: Ptr VkSemaphore- , -- No documentation found for Nested "VkBindSparseInfo" "vkBufferBindCount"+ , -- | @bufferBindCount@ is the number of sparse buffer bindings to perform in+ -- the batch. vkBufferBindCount :: Word32- , -- No documentation found for Nested "VkBindSparseInfo" "vkPBufferBinds"+ , -- | @pBufferBinds@ is a pointer to an array of+ -- 'VkSparseBufferMemoryBindInfo' structures. vkPBufferBinds :: Ptr VkSparseBufferMemoryBindInfo- , -- No documentation found for Nested "VkBindSparseInfo" "vkImageOpaqueBindCount"+ , -- | @imageOpaqueBindCount@ is the number of opaque sparse image bindings to+ -- perform. vkImageOpaqueBindCount :: Word32- , -- No documentation found for Nested "VkBindSparseInfo" "vkPImageOpaqueBinds"+ , -- | @pImageOpaqueBinds@ is a pointer to an array of+ -- 'VkSparseImageOpaqueMemoryBindInfo' structures, indicating opaque sparse+ -- image bindings to perform. vkPImageOpaqueBinds :: Ptr VkSparseImageOpaqueMemoryBindInfo- , -- No documentation found for Nested "VkBindSparseInfo" "vkImageBindCount"+ , -- | @imageBindCount@ is the number of sparse image bindings to perform. vkImageBindCount :: Word32- , -- No documentation found for Nested "VkBindSparseInfo" "vkPImageBinds"+ , -- | @pImageBinds@ is a pointer to an array of 'VkSparseImageMemoryBindInfo'+ -- structures, indicating sparse image bindings to perform. vkPImageBinds :: Ptr VkSparseImageMemoryBindInfo- , -- No documentation found for Nested "VkBindSparseInfo" "vkSignalSemaphoreCount"+ , -- | @signalSemaphoreCount@ is the number of semaphores to be signaled once+ -- the sparse binding operations specified by the structure have completed+ -- execution. vkSignalSemaphoreCount :: Word32- , -- No documentation found for Nested "VkBindSparseInfo" "vkPSignalSemaphores"+ , -- | @pSignalSemaphores@ is a pointer to an array of semaphores which will be+ -- signaled when the sparse binding operations for this batch have+ -- completed execution. If semaphores to be signaled are provided, they+ -- define a [semaphore signal+ -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling). vkPSignalSemaphores :: Ptr VkSemaphore } deriving (Eq, Show)@@ -1157,13 +1148,11 @@ -- | VkImageAspectFlags - Bitmask of VkImageAspectFlagBits -- -- = Description--- #_description# -- -- @VkImageAspectFlags@ is a bitmask type for setting a mask of zero or -- more 'VkImageAspectFlagBits'. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkClearAttachment', -- 'VkImageAspectFlagBits', 'VkImageSubresource',@@ -1175,13 +1164,11 @@ -- | VkSparseMemoryBindFlags - Bitmask of VkSparseMemoryBindFlagBits -- -- = Description--- #_description# -- -- @VkSparseMemoryBindFlags@ is a bitmask type for setting a mask of zero -- or more 'VkSparseMemoryBindFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkSparseImageMemoryBind', 'VkSparseMemoryBind', -- 'VkSparseMemoryBindFlagBits'@@ -1189,13 +1176,11 @@ -- | VkSparseImageFormatFlags - Bitmask of VkSparseImageFormatFlagBits -- -- = Description--- #_description# -- -- @VkSparseImageFormatFlags@ is a bitmask type for setting a mask of zero -- or more 'VkSparseImageFormatFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkSparseImageFormatFlagBits', 'VkSparseImageFormatProperties' type VkSparseImageFormatFlags = VkSparseImageFormatFlagBits
src/Graphics/Vulkan/Core10/Version.hs view
@@ -29,11 +29,7 @@ -- | VK_HEADER_VERSION - Vulkan header file version number ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- No cross-references are available pattern VK_HEADER_VERSION :: Integral a => a@@ -41,7 +37,6 @@ -- | VK_MAKE_VERSION - Construct an API version number -- -- = Description--- #_description# -- -- - @major@ is the major version number. --@@ -55,7 +50,6 @@ -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance'. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkApplicationInfo', -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance'@@ -66,11 +60,7 @@ -- | VK_API_VERSION_1_0 - Return API version number for Vulkan 1.0 ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance', -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceProperties'@@ -79,11 +69,7 @@ -- | VK_API_VERSION_1_1 - Return API version number for Vulkan 1.1 ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance', -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceProperties'@@ -92,11 +78,7 @@ -- | VK_VERSION_MAJOR - Extract API major version number ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- No cross-references are available _VK_VERSION_MAJOR :: Word32 -> Word32@@ -104,11 +86,7 @@ -- | VK_VERSION_MINOR - Extract API minor version number ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- No cross-references are available _VK_VERSION_MINOR :: Word32 -> Word32
src/Graphics/Vulkan/Core11/DeviceInitialization.hs view
@@ -27,28 +27,23 @@ -- instance creation -- -- = Parameters--- #_parameters# -- -- - @pApiVersion@ points to a @uint32_t@, which is the version of Vulkan -- supported by instance-level functionality, encoded as described in--- the--- <{html_spec_relative}#fundamentals-versionnum API Version Numbers and Semantics>+-- the [API Version Numbers and+-- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum) -- section. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @pApiVersion@ /must/ be a valid pointer to a @uint32_t@ value -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- = See Also--- #_see_also# -- -- No cross-references are available foreign import ccall "vkEnumerateInstanceVersion" vkEnumerateInstanceVersion :: ("pApiVersion" ::: Ptr Word32) -> IO VkResult
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs view
@@ -100,7 +100,6 @@ -- | vkGetDeviceQueue2 - Get a queue handle from a device -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the queue. --@@ -111,9 +110,6 @@ -- - @pQueue@ is a pointer to a @VkQueue@ object that will be filled with -- the handle for the requested queue. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -124,7 +120,6 @@ -- - @pQueue@ /must/ be a valid pointer to a @VkQueue@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkDeviceQueueInfo2', 'Graphics.Vulkan.Core10.Queue.VkQueue'@@ -132,9 +127,6 @@ -- | VkProtectedSubmitInfo - Structure indicating whether the submission is -- protected ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the protected memory feature is not enabled, @protectedSubmit@@@ -156,15 +148,18 @@ -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkProtectedSubmitInfo = VkProtectedSubmitInfo- { -- No documentation found for Nested "VkProtectedSubmitInfo" "vkSType"+ { -- No documentation found for Nested "VkProtectedSubmitInfo" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkProtectedSubmitInfo" "vkPNext"+ , -- No documentation found for Nested "VkProtectedSubmitInfo" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkProtectedSubmitInfo" "vkProtectedSubmit"+ , -- | @protectedSubmit@ specifies whether the batch is protected. If+ -- @protectedSubmit@ is @VK_TRUE@, the batch is protected. If+ -- @protectedSubmit@ is @VK_FALSE@, the batch is unprotected. If the+ -- @VkSubmitInfo@::@pNext@ chain does not contain this structure, the batch+ -- is unprotected. vkProtectedSubmit :: VkBool32 } deriving (Eq, Show)@@ -182,7 +177,6 @@ -- memory features that can be supported by an implementation -- -- = Description--- #_description# -- -- If the @VkPhysicalDeviceProtectedMemoryFeatures@ structure is included -- in the @pNext@ chain of@@ -195,15 +189,14 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceProtectedMemoryFeatures = VkPhysicalDeviceProtectedMemoryFeatures- { -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "vkProtectedMemory"+ , -- | @protectedMemory@ specifies whether protected memory is supported. vkProtectedMemory :: VkBool32 } deriving (Eq, Show)@@ -221,7 +214,6 @@ -- protected memory properties that can be supported by an implementation -- -- = Description--- #_description# -- -- If the @VkPhysicalDeviceProtectedMemoryProperties@ structure is included -- in the @pNext@ chain of@@ -235,15 +227,18 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceProtectedMemoryProperties = VkPhysicalDeviceProtectedMemoryProperties- { -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryProperties" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryProperties" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryProperties" "vkProtectedNoFault"+ , -- | @protectedNoFault@ specifies whether the undefined behavior will not+ -- include process termination or device loss. If @protectedNoFault@ is+ -- @VK_FALSE@, undefined behavior /may/ include process termination or+ -- device loss. If @protectedNoFault@ is @VK_TRUE@, undefined behavior will+ -- not include process termination or device loss. vkProtectedNoFault :: VkBool32 } deriving (Eq, Show)@@ -261,7 +256,6 @@ -- queue creation -- -- = Description--- #_description# -- -- The queue returned by @vkGetDeviceQueue2@ /must/ have the same @flags@ -- value from this structure as that used at device creation time in a@@ -293,20 +287,24 @@ -- - @flags@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetDeviceQueue2' data VkDeviceQueueInfo2 = VkDeviceQueueInfo2- { -- No documentation found for Nested "VkDeviceQueueInfo2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceQueueInfo2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The+ -- @pNext@ chain of @VkDeviceQueueInfo2@ is used to provide additional+ -- image parameters to @vkGetDeviceQueue2@. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceQueueInfo2" "vkFlags"+ , -- | @flags@ is a 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateFlags'+ -- value indicating the flags used to create the device queue. vkFlags :: VkDeviceQueueCreateFlags- , -- No documentation found for Nested "VkDeviceQueueInfo2" "vkQueueFamilyIndex"+ , -- | @queueFamilyIndex@ is the index of the queue family to which the queue+ -- belongs. vkQueueFamilyIndex :: Word32- , -- No documentation found for Nested "VkDeviceQueueInfo2" "vkQueueIndex"+ , -- | @queueIndex@ is the index within this queue family of the queue to+ -- retrieve. vkQueueIndex :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs view
@@ -68,7 +68,6 @@ -- supported -- -- = See Also--- #_see_also# -- -- 'VkSubgroupFeatureFlags' newtype VkSubgroupFeatureFlagBits = VkSubgroupFeatureFlagBits VkFlags@@ -156,13 +155,11 @@ -- support for an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceSubgroupProperties@ structure -- describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @sType@ is the type of this structure. --@@ -170,7 +167,7 @@ -- -- - @subgroupSize@ is the number of invocations in each subgroup. This -- will match any--- <{html_spec_relative}#interfaces-builtin-variables-sgs SubgroupSize>+-- [@SubgroupSize@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces-builtin-variables-sgs) -- decorated variable used in any shader module created on this device. -- @subgroupSize@ is at least 1 if any of the physical device’s queues -- support @VK_QUEUE_GRAPHICS_BIT@ or @VK_QUEUE_COMPUTE_BIT@.@@ -189,7 +186,8 @@ -- @VK_QUEUE_GRAPHICS_BIT@ or @VK_QUEUE_COMPUTE_BIT@. -- -- - @quadOperationsInAllStages@ is a boolean that specifies whether--- <{html_spec_relative}#features-features-subgroup-quad quad subgroup operations>+-- [quad subgroup+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-subgroup-quad) -- are available in all stages, or are restricted to fragment and -- compute stages. --@@ -204,22 +202,21 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSubgroupFeatureFlags' data VkPhysicalDeviceSubgroupProperties = VkPhysicalDeviceSubgroupProperties- { -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "vkSubgroupSize"+ , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "subgroupSize" vkSubgroupSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "vkSupportedStages"+ , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "supportedStages" vkSupportedStages :: VkShaderStageFlags- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "vkSupportedOperations"+ , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "supportedOperations" vkSupportedOperations :: VkSubgroupFeatureFlags- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "vkQuadOperationsInAllStages"+ , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "quadOperationsInAllStages" vkQuadOperationsInAllStages :: VkBool32 } deriving (Eq, Show)@@ -242,13 +239,11 @@ -- | VkSubgroupFeatureFlags - Bitmask of VkSubgroupFeatureFlagBits -- -- = Description--- #_description# -- -- @VkSubgroupFeatureFlags@ is a bitmask type for setting a mask of zero or -- more 'VkSubgroupFeatureFlagBits'. -- -- = See Also--- #_see_also# -- -- 'VkPhysicalDeviceSubgroupProperties', 'VkSubgroupFeatureFlagBits' type VkSubgroupFeatureFlags = VkSubgroupFeatureFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs view
@@ -29,18 +29,48 @@ pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = VkStructureType 1000083000 -- | VkPhysicalDevice16BitStorageFeatures - Structure describing features -- supported by VK_KHR_16bit_storage+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES@+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDevice16BitStorageFeatures = VkPhysicalDevice16BitStorageFeatures- { -- No documentation found for Nested "VkPhysicalDevice16BitStorageFeatures" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDevice16BitStorageFeatures" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDevice16BitStorageFeatures" "vkStorageBuffer16BitAccess"+ , -- | @storageBuffer16BitAccess@ specifies whether objects in the+ -- @StorageBuffer@ storage class with the @Block@ decoration /can/ have+ -- 16-bit integer and 16-bit floating-point members. If this feature is not+ -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be+ -- used in such objects. This also specifies whether shader modules /can/+ -- declare the @StorageBuffer16BitAccess@ capability. vkStorageBuffer16BitAccess :: VkBool32- , -- No documentation found for Nested "VkPhysicalDevice16BitStorageFeatures" "vkUniformAndStorageBuffer16BitAccess"+ , -- | @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the+ -- @Uniform@ storage class with the @Block@ decoration and in the+ -- @StorageBuffer@ storage class with the same decoration /can/ have 16-bit+ -- integer and 16-bit floating-point members. If this feature is not+ -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be+ -- used in such objects. This also specifies whether shader modules /can/+ -- declare the @UniformAndStorageBuffer16BitAccess@ capability. vkUniformAndStorageBuffer16BitAccess :: VkBool32- , -- No documentation found for Nested "VkPhysicalDevice16BitStorageFeatures" "vkStoragePushConstant16"+ , -- | @storagePushConstant16@ specifies whether objects in the @PushConstant@+ -- storage class /can/ have 16-bit integer and 16-bit floating-point+ -- members. If this feature is not enabled, 16-bit integer or+ -- floating-point members /must/ not be used in such objects. This also+ -- specifies whether shader modules /can/ declare the+ -- @StoragePushConstant16@ capability. vkStoragePushConstant16 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDevice16BitStorageFeatures" "vkStorageInputOutput16"+ , -- | @storageInputOutput16@ specifies whether objects in the @Input@ and+ -- @Output@ storage classes /can/ have 16-bit integer and 16-bit+ -- floating-point members. If this feature is not enabled, 16-bit integer+ -- or 16-bit floating-point members /must/ not be used in such objects.+ -- This also specifies whether shader modules /can/ declare the+ -- @StorageInputOutput16@ capability. vkStorageInputOutput16 :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs view
@@ -59,21 +59,189 @@ pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateFlagBits pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 0x00000400 -- | vkBindBufferMemory2 - Bind device memory to buffer objects+--+-- = Parameters+--+-- - @device@ is the logical device that owns the buffers and memory.+--+-- - @bindInfoCount@ is the number of elements in @pBindInfos@.+--+-- - @pBindInfos@ is a pointer to an array of structures of type+-- 'VkBindBufferMemoryInfo', describing buffers and memory to bind.+--+-- = Description+--+-- On some implementations, it /may/ be more efficient to batch memory+-- bindings into a single command.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pBindInfos@ /must/ be a valid pointer to an array of+-- @bindInfoCount@ valid @VkBindBufferMemoryInfo@ structures+--+-- - @bindInfoCount@ /must/ be greater than @0@+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- = See Also+--+-- 'VkBindBufferMemoryInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkBindBufferMemory2" vkBindBufferMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult -- | vkBindImageMemory2 - Bind device memory to image objects+--+-- = Parameters+--+-- - @device@ is the logical device that owns the images and memory.+--+-- - @bindInfoCount@ is the number of elements in @pBindInfos@.+--+-- - @pBindInfos@ is a pointer to an array of structures of type+-- 'VkBindImageMemoryInfo', describing images and memory to bind.+--+-- = Description+--+-- On some implementations, it /may/ be more efficient to batch memory+-- bindings into a single command.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pBindInfos@ /must/ be a valid pointer to an array of+-- @bindInfoCount@ valid @VkBindImageMemoryInfo@ structures+--+-- - @bindInfoCount@ /must/ be greater than @0@+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- = See Also+--+-- 'VkBindImageMemoryInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkBindImageMemory2" vkBindImageMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult -- | VkBindBufferMemoryInfo - Structure specifying how to bind a buffer to -- memory+--+-- == Valid Usage+--+-- - @buffer@ /must/ not already be backed by a memory object+--+-- - @buffer@ /must/ not have been created with any sparse memory binding+-- flags+--+-- - @memoryOffset@ /must/ be less than the size of @memory@+--+-- - If @buffer@ was created with the+-- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or+-- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@, @memoryOffset@ /must/ be+-- a multiple of+-- @VkPhysicalDeviceLimits@::@minTexelBufferOffsetAlignment@+--+-- - If @buffer@ was created with the+-- @VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT@, @memoryOffset@ /must/ be a+-- multiple of+-- @VkPhysicalDeviceLimits@::@minUniformBufferOffsetAlignment@+--+-- - If @buffer@ was created with the+-- @VK_BUFFER_USAGE_STORAGE_BUFFER_BIT@, @memoryOffset@ /must/ be a+-- multiple of+-- @VkPhysicalDeviceLimits@::@minStorageBufferOffsetAlignment@+--+-- - @memory@ /must/ have been allocated using one of the memory types+-- allowed in the @memoryTypeBits@ member of the @VkMemoryRequirements@+-- structure returned from a call to @vkGetBufferMemoryRequirements@+-- with @buffer@+--+-- - @memoryOffset@ /must/ be an integer multiple of the @alignment@+-- member of the @VkMemoryRequirements@ structure returned from a call+-- to @vkGetBufferMemoryRequirements@ with @buffer@+--+-- - The @size@ member of the @VkMemoryRequirements@ structure returned+-- from a call to @vkGetBufferMemoryRequirements@ with @buffer@ /must/+-- be less than or equal to the size of @memory@ minus @memoryOffset@+--+-- - If @buffer@ requires a dedicated allocation(as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for @buffer@), @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@+-- equal to @buffer@ and @memoryOffset@ /must/ be zero+--+-- - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated+-- included an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@+-- was not @VK_NULL_HANDLE@, then @buffer@ /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@+-- and @memoryOffset@ /must/ be zero.+--+-- - If @buffer@ was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@+-- equal to @VK_TRUE@, @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@buffer@+-- equal to @buffer@ and @memoryOffset@ /must/ be zero+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo',+-- all instances of @memory@ specified by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo'::@pDeviceIndices@+-- /must/ have been allocated+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo'+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- - @memory@ /must/ be a valid @VkDeviceMemory@ handle+--+-- - Both of @buffer@, and @memory@ /must/ have been created, allocated,+-- or retrieved from the same @VkDevice@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkBindBufferMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindBufferMemory2KHR' data VkBindBufferMemoryInfo = VkBindBufferMemoryInfo- { -- No documentation found for Nested "VkBindBufferMemoryInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindBufferMemoryInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindBufferMemoryInfo" "vkBuffer"+ , -- | @buffer@ is the buffer to be attached to memory. vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkBindBufferMemoryInfo" "vkMemory"+ , -- | @memory@ is a @VkDeviceMemory@ object describing the device memory to+ -- attach. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkBindBufferMemoryInfo" "vkMemoryOffset"+ , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to+ -- be bound to the buffer. The number of bytes returned in the+ -- @VkMemoryRequirements@::@size@ member in @memory@, starting from+ -- @memoryOffset@ bytes, will be bound to the specified buffer. vkMemoryOffset :: VkDeviceSize } deriving (Eq, Show)@@ -93,16 +261,190 @@ *> poke (ptr `plusPtr` 32) (vkMemoryOffset (poked :: VkBindBufferMemoryInfo)) -- | VkBindImageMemoryInfo - Structure specifying how to bind an image to -- memory+--+-- == Valid Usage+--+-- - @image@ /must/ not already be backed by a memory object+--+-- - @image@ /must/ not have been created with any sparse memory binding+-- flags+--+-- - @memoryOffset@ /must/ be less than the size of @memory@+--+-- - If the @pNext@ chain does not include an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, @memory@ /must/ have been allocated using one of the+-- memory types allowed in the @memoryTypeBits@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- with @image@+--+-- - If the @pNext@ chain does not include an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, @memoryOffset@ /must/ be an integer multiple of the+-- @alignment@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- with @image@+--+-- - If the @pNext@ chain does not include an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, the difference of the size of @memory@ and @memoryOffset@+-- /must/ be greater than or equal to the @size@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- with the same @image@+--+-- - If the @pNext@ chain includes an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, @image@ /must/ have been created with the+-- @VK_IMAGE_CREATE_DISJOINT_BIT@ bit set.+--+-- - If the @pNext@ chain includes an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, @memory@ /must/ have been allocated using one of the+-- memory types allowed in the @memoryTypeBits@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- with @image@ and the correct @planeAspect@ for this plane in the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+-- structure attached to the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2'’s+-- @pNext@ chain+--+-- - If the @pNext@ chain includes an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, @memoryOffset@ /must/ be an integer multiple of the+-- @alignment@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- with @image@ and the correct @planeAspect@ for this plane in the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+-- structure attached to the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2'’s+-- @pNext@ chain+--+-- - If the @pNext@ chain includes an instance of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+-- structure, the difference of the size of @memory@ and @memoryOffset@+-- /must/ be greater than or equal to the @size@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- with the same @image@ and the correct @planeAspect@ for this plane+-- in the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+-- structure attached to the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2'’s+-- @pNext@ chain+--+-- - If @image@ requires a dedicated allocation (as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for @image@), @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- equal to @image@ and @memoryOffset@ /must/ be zero+--+-- - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated+-- included an instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'+-- in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- was not @VK_NULL_HANDLE@, then @image@ /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- and @memoryOffset@ /must/ be zero.+--+-- - If @image@ was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@+-- equal to @VK_TRUE@, @memory@ /must/ have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@image@+-- equal to @image@ and @memoryOffset@ /must/ be zero+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',+-- all instances of @memory@ specified by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@pDeviceIndices@+-- /must/ have been allocated+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',+-- and+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@splitInstanceBindRegionCount@+-- is not zero, then @image@ /must/ have been created with the+-- @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@ bit set+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',+-- all elements of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@+-- /must/ be valid rectangles contained within the dimensions of+-- @image@+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',+-- the union of the areas of all elements of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@+-- that correspond to the same instance of @image@ /must/ cover the+-- entire image.+--+-- - If @image@ was created with a valid swapchain handle in+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkImageSwapchainCreateInfoKHR'::@swapchain@,+-- then the @pNext@ chain /must/ include a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR'+--+-- - If the @pNext@ chain includes an instance of+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',+-- @memory@ /must/ be 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+--+-- - If the @pNext@ chain does not include an instance of+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',+-- @memory@ /must/ be a valid @VkDeviceMemory@ handle+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',+-- or+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- - @image@ /must/ be a valid @VkImage@ handle+--+-- - Both of @image@, and @memory@ that are valid handles /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkBindImageMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindImageMemory2KHR' data VkBindImageMemoryInfo = VkBindImageMemoryInfo- { -- No documentation found for Nested "VkBindImageMemoryInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindImageMemoryInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindImageMemoryInfo" "vkImage"+ , -- | @image@ is the image to be attached to memory. vkImage :: VkImage- , -- No documentation found for Nested "VkBindImageMemoryInfo" "vkMemory"+ , -- | @memory@ is a @VkDeviceMemory@ object describing the device memory to+ -- attach. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkBindImageMemoryInfo" "vkMemoryOffset"+ , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to+ -- be bound to the image. The number of bytes returned in the+ -- @VkMemoryRequirements@::@size@ member in @memory@, starting from+ -- @memoryOffset@ bytes, will be bound to the specified image. vkMemoryOffset :: VkDeviceSize } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs view
@@ -38,14 +38,90 @@ pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = VkStructureType 1000127001 -- | VkMemoryDedicatedRequirements - Structure describing dedicated -- allocation requirements of buffer and image resources+--+-- = Description+--+-- If the @VkMemoryDedicatedRequirements@ structure is included in the+-- @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkMemoryRequirements2'+-- structure passed as the @pMemoryRequirements@ parameter of a+-- @vkGetBufferMemoryRequirements2@ call, @requiresDedicatedAllocation@+-- /may/ be @VK_TRUE@ under one of the following conditions:+--+-- - The @pNext@ chain of @VkBufferCreateInfo@ for the call to+-- @vkCreateBuffer@ used to create the buffer being queried contained+-- an instance of @VkExternalMemoryBufferCreateInfo@, and any of the+-- handle types specified in+-- @VkExternalMemoryBufferCreateInfo@::@handleTypes@ requires dedicated+-- allocation, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties'+-- in+-- @VkExternalBufferProperties@::@externalMemoryProperties@::@externalMemoryFeatures@,+-- the @requiresDedicatedAllocation@ field will be set to @VK_TRUE@.+--+-- In all other cases, @requiresDedicatedAllocation@ /must/ be set to+-- @VK_FALSE@ by the implementation whenever a+-- @VkMemoryDedicatedRequirements@ structure is included in the @pNext@+-- chain of the @VkMemoryRequirements2@ structure passed to a call to+-- @vkGetBufferMemoryRequirements2@.+--+-- If the @VkMemoryDedicatedRequirements@ structure is included in the+-- @pNext@ chain of the @VkMemoryRequirements2@ structure passed as the+-- @pMemoryRequirements@ parameter of a @vkGetBufferMemoryRequirements2@+-- call and @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ was set in+-- @VkBufferCreateInfo@::@flags@ when @buffer@ was created then the+-- implementation /must/ set both @prefersDedicatedAllocation@ and+-- @requiresDedicatedAllocation@ to @VK_FALSE@.+--+-- If the @VkMemoryDedicatedRequirements@ structure is included in the+-- @pNext@ chain of the @VkMemoryRequirements2@ structure passed as the+-- @pMemoryRequirements@ parameter of a @vkGetImageMemoryRequirements2@+-- call, @requiresDedicatedAllocation@ /may/ be @VK_TRUE@ under one of the+-- following conditions:+--+-- - The @pNext@ chain of @VkImageCreateInfo@ for the call to+-- @vkCreateImage@ used to create the image being queried contained an+-- instance of @VkExternalMemoryImageCreateInfo@, and any of the handle+-- types specified in @VkExternalMemoryImageCreateInfo@::@handleTypes@+-- requires dedicated allocation, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'+-- in+-- @VkExternalImageFormatProperties@::@externalMemoryProperties@::@externalMemoryFeatures@,+-- the @requiresDedicatedAllocation@ field will be set to @VK_TRUE@.+--+-- In all other cases, @requiresDedicatedAllocation@ /must/ be set to+-- @VK_FALSE@ by the implementation whenever a+-- @VkMemoryDedicatedRequirements@ structure is included in the @pNext@+-- chain of the @VkMemoryRequirements2@ structure passed to a call to+-- @vkGetImageMemoryRequirements2@.+--+-- If the @VkMemoryDedicatedRequirements@ structure is included in the+-- @pNext@ chain of the @VkMemoryRequirements2@ structure passed as the+-- @pMemoryRequirements@ parameter of a @vkGetImageMemoryRequirements2@+-- call and @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ was set in+-- @VkImageCreateInfo@::@flags@ when @image@ was created then the+-- implementation /must/ set both @prefersDedicatedAllocation@ and+-- @requiresDedicatedAllocation@ to @VK_FALSE@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS@+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkMemoryDedicatedRequirements = VkMemoryDedicatedRequirements- { -- No documentation found for Nested "VkMemoryDedicatedRequirements" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryDedicatedRequirements" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryDedicatedRequirements" "vkPrefersDedicatedAllocation"+ , -- | @prefersDedicatedAllocation@ specifies that the implementation would+ -- prefer a dedicated allocation for this resource. The application is+ -- still free to suballocate the resource but it /may/ get better+ -- performance if a dedicated allocation is used. vkPrefersDedicatedAllocation :: VkBool32- , -- No documentation found for Nested "VkMemoryDedicatedRequirements" "vkRequiresDedicatedAllocation"+ , -- | @requiresDedicatedAllocation@ specifies that a dedicated allocation is+ -- required for this resource. vkRequiresDedicatedAllocation :: VkBool32 } deriving (Eq, Show)@@ -63,14 +139,105 @@ *> poke (ptr `plusPtr` 20) (vkRequiresDedicatedAllocation (poked :: VkMemoryDedicatedRequirements)) -- | VkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation -- resource+--+-- == Valid Usage+--+-- - At least one of @image@ and @buffer@ /must/ be+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+--+-- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the+-- @VkMemoryRequirements@::@size@ of the image+--+-- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @image@ /must/ have been created without+-- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ set in+-- @VkImageCreateInfo@::@flags@+--+-- - If @buffer@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the+-- @VkMemoryRequirements@::@size@ of the buffer+--+-- - If @buffer@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @buffer@ /must/+-- have been created without @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ set+-- in 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo'::@flags@+--+-- - If @image@ is not @VK_NULL_HANDLE@ and+-- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a+-- memory import operation with handle type+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@, or+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@, and the+-- external handle was created by the Vulkan API, then the memory being+-- imported /must/ also be a dedicated image allocation and @image@+-- must be identical to the image associated with the imported memory.+--+-- - If @buffer@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+-- and 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a+-- memory import operation with handle type+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@,+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@, or+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@, and the+-- external handle was created by the Vulkan API, then the memory being+-- imported /must/ also be a dedicated buffer allocation and @buffer@+-- must be identical to the buffer associated with the imported memory.+--+-- - If @image@ is not @VK_NULL_HANDLE@ and+-- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a+-- memory import operation with handle type+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@, the memory being+-- imported /must/ also be a dedicated image allocation and @image@+-- must be identical to the image associated with the imported memory.+--+-- - If @buffer@ is not @VK_NULL_HANDLE@ and+-- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a+-- memory import operation with handle type+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@, the memory being+-- imported /must/ also be a dedicated buffer allocation and @buffer@+-- must be identical to the buffer associated with the imported memory.+--+-- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @image@ /must/ not have been created with+-- @VK_IMAGE_CREATE_DISJOINT_BIT@ set in+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO@+--+-- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @image@ /must/ be a valid @VkImage@ handle+--+-- - If @buffer@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @buffer@ /must/+-- be a valid @VkBuffer@ handle+--+-- - Both of @buffer@, and @image@ that are valid handles /must/ have+-- been created, allocated, or retrieved from the same @VkDevice@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkMemoryDedicatedAllocateInfo = VkMemoryDedicatedAllocateInfo- { -- No documentation found for Nested "VkMemoryDedicatedAllocateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryDedicatedAllocateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryDedicatedAllocateInfo" "vkImage"+ , -- | @image@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a handle+ -- of an image which this memory will be bound to. vkImage :: VkImage- , -- No documentation found for Nested "VkMemoryDedicatedAllocateInfo" "vkBuffer"+ , -- | @buffer@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a+ -- handle of a buffer which this memory will be bound to. vkBuffer :: VkBuffer } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs view
@@ -91,6 +91,10 @@ -- | VkDescriptorUpdateTemplateType - Indicates the valid usage of the -- descriptor update template+--+-- = See Also+--+-- 'VkDescriptorUpdateTemplateCreateInfo' newtype VkDescriptorUpdateTemplateType = VkDescriptorUpdateTemplateType Int32 deriving (Eq, Ord, Storable) @@ -113,12 +117,22 @@ ) ) --- No documentation found for Nested "VkDescriptorUpdateTemplateType" "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"+-- | @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@ specifies that the+-- descriptor update template will be used for descriptor set updates only. pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET :: VkDescriptorUpdateTemplateType pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = VkDescriptorUpdateTemplateType 0 -- ** VkDescriptorUpdateTemplateCreateFlags -- | VkDescriptorUpdateTemplateCreateFlags - Reserved for future use+--+-- = Description+--+-- @VkDescriptorUpdateTemplateCreateFlags@ is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'VkDescriptorUpdateTemplateCreateInfo' newtype VkDescriptorUpdateTemplateCreateFlags = VkDescriptorUpdateTemplateCreateFlags VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -147,30 +161,315 @@ data VkDescriptorUpdateTemplate_T -- | VkDescriptorUpdateTemplate - Opaque handle to a descriptor update -- template+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',+-- 'vkCreateDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',+-- 'vkDestroyDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',+-- 'vkUpdateDescriptorSetWithTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR' type VkDescriptorUpdateTemplate = Ptr VkDescriptorUpdateTemplate_T -- | vkCreateDescriptorUpdateTemplate - Create a new descriptor update -- template+--+-- = Parameters+--+-- - @device@ is the logical device that creates the descriptor update+-- template.+--+-- - @pCreateInfo@ is a pointer to an instance of the+-- 'VkDescriptorUpdateTemplateCreateInfo' structure specifying the set+-- of descriptors to update with a single call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR'+-- or 'vkUpdateDescriptorSetWithTemplate'.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- - @pDescriptorUpdateTemplate@ points to a @VkDescriptorUpdateTemplate@+-- handle in which the resulting descriptor update template object is+-- returned.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- @VkDescriptorUpdateTemplateCreateInfo@ structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - @pDescriptorUpdateTemplate@ /must/ be a valid pointer to a+-- @VkDescriptorUpdateTemplate@ handle+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'VkDescriptorUpdateTemplate', 'VkDescriptorUpdateTemplateCreateInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkCreateDescriptorUpdateTemplate" vkCreateDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult -- | vkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template -- object+--+-- = Parameters+--+-- - @device@ is the logical device that has been used to create the+-- descriptor update template+--+-- - @descriptorUpdateTemplate@ is the descriptor update template to+-- destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- == Valid Usage+--+-- - If @VkAllocationCallbacks@ were provided when @descriptorSetLayout@+-- was created, a compatible set of callbacks /must/ be provided here+--+-- - If no @VkAllocationCallbacks@ were provided when+-- @descriptorSetLayout@ was created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - If @descriptorUpdateTemplate@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @descriptorUpdateTemplate@ /must/ be a valid+-- @VkDescriptorUpdateTemplate@ handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - If @descriptorUpdateTemplate@ is a valid handle, it /must/ have been+-- created, allocated, or retrieved from @device@+--+-- == Host Synchronization+--+-- - Host access to @descriptorUpdateTemplate@ /must/ be externally+-- synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'VkDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkDestroyDescriptorUpdateTemplate" vkDestroyDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () -- | vkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor -- set object using an update template+--+-- = Parameters+--+-- - @device@ is the logical device that updates the descriptor sets.+--+-- - @descriptorSet@ is the descriptor set to update+--+-- - @descriptorUpdateTemplate@ is the @VkDescriptorUpdateTemplate@ which+-- specifies the update mapping between @pData@ and the descriptor set+-- to update.+--+-- - @pData@ is a pointer to memory which contains one or more structures+-- of 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo', or+-- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' used to write the+-- descriptors.+--+-- == Valid Usage+--+-- - @pData@ /must/ be a valid pointer to a memory that contains one or+-- more valid instances of+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo', or+-- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' in a layout defined+-- by @descriptorUpdateTemplate@ when it was created with+-- 'vkCreateDescriptorUpdateTemplate'+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @descriptorSet@ /must/ be a valid @VkDescriptorSet@ handle+--+-- - @descriptorUpdateTemplate@ /must/ be a valid+-- @VkDescriptorUpdateTemplate@ handle+--+-- - @descriptorUpdateTemplate@ /must/ have been created, allocated, or+-- retrieved from @device@+--+-- == Host Synchronization+--+-- - Host access to @descriptorSet@ /must/ be externally synchronized+--+-- __API example.__+--+-- > struct AppBufferView {+-- > VkBufferView bufferView;+-- > uint32_t applicationRelatedInformation;+-- > };+-- >+-- > struct AppDataStructure+-- > {+-- > VkDescriptorImageInfo imageInfo; // a single image info+-- > VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array+-- > AppBufferView bufferView[2]; // An application defined structure containing a bufferView+-- > // ... some more application related data+-- > };+-- >+-- > const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =+-- > {+-- > // binding to a single image descriptor+-- > {+-- > 0, // binding+-- > 0, // dstArrayElement+-- > 1, // descriptorCount+-- > VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType+-- > offsetof(AppDataStructure, imageInfo), // offset+-- > 0 // stride is not required if descriptorCount is 1.+-- > },+-- >+-- > // binding to an array of buffer descriptors+-- > {+-- > 0, // binding+-- > 0, // dstArrayElement+-- > 3, // descriptorCount+-- > VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType+-- > offsetof(AppDataStructure, bufferInfoArray), // offset+-- > sizeof(VkDescriptorBufferInfo) // stride, descriptor buffer infos are compact+-- > },+-- >+-- > // binding to an array of buffer views+-- > {+-- > 0, // binding+-- > 3, // dstArrayElement+-- > 1, // descriptorCount+-- > VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType+-- > offsetof(AppDataStructure, bufferView), // offset+-- > sizeof(AppBufferView) // stride, bufferViews do not have to be compact+-- > },+-- > };+-- >+-- > // create an descriptor update template for descriptor set updates+-- > const VkDescriptorUpdateTemplateCreateInfo createInfo =+-- > {+-- > VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType+-- > NULL, // pNext+-- > 0, // flags+-- > 3, // descriptorUpdateEntryCount+-- > descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries+-- > VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType+-- > myLayout, // descriptorSetLayout+-- > 0, // pipelineBindPoint, ignored by given templateType+-- > 0, // pipelineLayout, ignored by given templateType+-- > 0, // set, ignored by given templateType+-- > };+-- >+-- > VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;+-- > myResult = vkCreateDescriptorUpdateTemplate(+-- > myDevice,+-- > &createInfo,+-- > NULL,+-- > &myDescriptorUpdateTemplate);+-- > }+-- >+-- >+-- > AppDataStructure appData;+-- >+-- > // fill appData here or cache it in your engine+-- > vkUpdateDescriptorSetWithTemplate(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',+-- 'VkDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkUpdateDescriptorSetWithTemplate" vkUpdateDescriptorSetWithTemplate :: ("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO () -- | VkDescriptorUpdateTemplateEntry - Describes a single descriptor update -- of the descriptor update template+--+-- = Members+--+-- - @dstBinding@ is the descriptor binding to update when using this+-- descriptor update template.+--+-- - @dstArrayElement@ is the starting element in the array belonging to+-- @dstBinding@.+--+-- - @descriptorCount@ is the number of descriptors to update. If+-- @descriptorCount@ is greater than the number of remaining array+-- elements in the destination binding, those affect consecutive+-- bindings in a manner similar to+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet' above.+--+-- - @descriptorType@ is a+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorType' specifying+-- the type of the descriptor.+--+-- - @offset@ is the offset in bytes of the first binding in the raw data+-- structure.+--+-- - @stride@ is the stride in bytes between two consecutive array+-- elements of the descriptor update informations in the raw data+-- structure. The actual pointer ptr for each array element j of update+-- entry i is computed using the following formula:+--+-- > const char *ptr = (const char *)pData + pDescriptorUpdateEntries[i].offset + j * pDescriptorUpdateEntries[i].stride+--+-- The stride is useful in case the bindings are stored in structs+-- along with other data.+--+-- == Valid Usage+--+-- - @dstBinding@ /must/ be a valid binding in the descriptor set layout+-- implicitly specified when using a descriptor update template to+-- update descriptors.+--+-- - @dstArrayElement@ and @descriptorCount@ /must/ be less than or equal+-- to the number of array elements in the descriptor set binding+-- implicitly specified when using a descriptor update template to+-- update descriptors, and all applicable consecutive bindings, as+-- described by+-- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive)+--+-- == Valid Usage (Implicit)+--+-- - @descriptorType@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorType' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorType',+-- 'VkDescriptorUpdateTemplateCreateInfo' data VkDescriptorUpdateTemplateEntry = VkDescriptorUpdateTemplateEntry- { -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "vkDstBinding"+ { -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "dstBinding" vkDstBinding :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "vkDstArrayElement"+ , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "dstArrayElement" vkDstArrayElement :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "vkDescriptorCount"+ , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "descriptorCount" vkDescriptorCount :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "vkDescriptorType"+ , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "descriptorType" vkDescriptorType :: VkDescriptorType- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "vkOffset"+ , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "offset" vkOffset :: CSize- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "vkStride"+ , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "stride" vkStride :: CSize } deriving (Eq, Show)@@ -192,26 +491,111 @@ *> poke (ptr `plusPtr` 24) (vkStride (poked :: VkDescriptorUpdateTemplateEntry)) -- | VkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters -- of a newly created descriptor update template+--+-- == Valid Usage+--+-- - If @templateType@ is+-- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@,+-- @descriptorSetLayout@ /must/ be a valid @VkDescriptorSetLayout@+-- handle+--+-- - If @templateType@ is+-- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@,+-- @pipelineBindPoint@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value+--+-- - If @templateType@ is+-- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@,+-- @pipelineLayout@ /must/ be a valid @VkPipelineLayout@ handle+--+-- - If @templateType@ is+-- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@, @set@+-- /must/ be the unique set number in the pipeline layout that uses a+-- descriptor set layout that was created with+-- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be @0@+--+-- - @pDescriptorUpdateEntries@ /must/ be a valid pointer to an array of+-- @descriptorUpdateEntryCount@ valid @VkDescriptorUpdateTemplateEntry@+-- structures+--+-- - @templateType@ /must/ be a valid 'VkDescriptorUpdateTemplateType'+-- value+--+-- - If @descriptorSetLayout@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',+-- @descriptorSetLayout@ /must/ be a valid @VkDescriptorSetLayout@+-- handle+--+-- - @descriptorUpdateEntryCount@ /must/ be greater than @0@+--+-- - Both of @descriptorSetLayout@, and @pipelineLayout@ that are valid+-- handles /must/ have been created, allocated, or retrieved from the+-- same @VkDevice@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',+-- 'VkDescriptorUpdateTemplateCreateFlags',+-- 'VkDescriptorUpdateTemplateEntry', 'VkDescriptorUpdateTemplateType',+-- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkCreateDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR' data VkDescriptorUpdateTemplateCreateInfo = VkDescriptorUpdateTemplateCreateInfo- { -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkDescriptorUpdateTemplateCreateFlags- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkDescriptorUpdateEntryCount"+ , -- | @descriptorUpdateEntryCount@ is the number of elements in the+ -- @pDescriptorUpdateEntries@ array. vkDescriptorUpdateEntryCount :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkPDescriptorUpdateEntries"+ , -- | @pDescriptorUpdateEntries@ is a pointer to an array of+ -- 'VkDescriptorUpdateTemplateEntry' structures describing the descriptors+ -- to be updated by the descriptor update template. vkPDescriptorUpdateEntries :: Ptr VkDescriptorUpdateTemplateEntry- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkTemplateType"+ , -- | @templateType@ Specifies the type of the descriptor update template. If+ -- set to @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@ it /can/ only+ -- be used to update descriptor sets with a fixed @descriptorSetLayout@. If+ -- set to @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ it+ -- /can/ only be used to push descriptor sets using the provided+ -- @pipelineBindPoint@, @pipelineLayout@, and @set@ number. vkTemplateType :: VkDescriptorUpdateTemplateType- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkDescriptorSetLayout"+ , -- | @descriptorSetLayout@ is the descriptor set layout the parameter update+ -- template will be used with. All descriptor sets which are going to be+ -- updated through the newly created descriptor update template /must/ be+ -- created with this layout. @descriptorSetLayout@ is the descriptor set+ -- layout used to build the descriptor update template. All descriptor sets+ -- which are going to be updated through the newly created descriptor+ -- update template /must/ be created with a layout that matches (is the+ -- same as, or defined identically to) this layout. This parameter is+ -- ignored if @templateType@ is not+ -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@. vkDescriptorSetLayout :: VkDescriptorSetLayout- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkPipelineBindPoint"+ , -- | @pipelineBindPoint@ is a+ -- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' indicating whether the+ -- descriptors will be used by graphics pipelines or compute pipelines.+ -- This parameter is ignored if @templateType@ is not+ -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ vkPipelineBindPoint :: VkPipelineBindPoint- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkPipelineLayout"+ , -- | @pipelineLayout@ is a @VkPipelineLayout@ object used to program the+ -- bindings. This parameter is ignored if @templateType@ is not+ -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ vkPipelineLayout :: VkPipelineLayout- , -- No documentation found for Nested "VkDescriptorUpdateTemplateCreateInfo" "vkSet"+ , -- | @set@ is the set number of the descriptor set in the pipeline layout+ -- that will be updated. This parameter is ignored if @templateType@ is not+ -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ vkSet :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs view
@@ -93,6 +93,46 @@ -- | VkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory -- features+--+-- = Description+--+-- - @VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT@ specifies that the memory+-- /can/ be accessed as the source of a @vkCmdCopyBuffer@,+-- @vkCmdCopyImage@, @vkCmdCopyBufferToImage@, or+-- @vkCmdCopyImageToBuffer@ command.+--+-- - @VK_PEER_MEMORY_FEATURE_COPY_DST_BIT@ specifies that the memory+-- /can/ be accessed as the destination of a @vkCmdCopyBuffer@,+-- @vkCmdCopyImage@, @vkCmdCopyBufferToImage@, or+-- @vkCmdCopyImageToBuffer@ command.+--+-- - @VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT@ specifies that the memory+-- /can/ be read as any memory access type.+--+-- - @VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT@ specifies that the memory+-- /can/ be written as any memory access type. Shader atomics are+-- considered to be writes.+--+-- __Note__+--+-- The peer memory features of a memory heap also apply to any accesses+-- that /may/ be performed during [image layout+-- transitions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions).+--+-- @VK_PEER_MEMORY_FEATURE_COPY_DST_BIT@ /must/ be supported for all host+-- local heaps and for at least one device local heap.+--+-- If a device does not support a peer memory feature, it is still valid to+-- use a resource that includes both local and peer memory bindings with+-- the corresponding access type as long as only the local bindings are+-- actually accessed. For example, an application doing split-frame+-- rendering would use framebuffer attachments that include both local and+-- peer memory bindings, but would scissor the rendering to only update+-- local memory.+--+-- = See Also+--+-- 'VkPeerMemoryFeatureFlags' newtype VkPeerMemoryFeatureFlagBits = VkPeerMemoryFeatureFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -135,6 +175,10 @@ -- | VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory -- allocation+--+-- = See Also+--+-- 'VkMemoryAllocateFlags' newtype VkMemoryAllocateFlagBits = VkMemoryAllocateFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -152,7 +196,8 @@ ) ) --- No documentation found for Nested "VkMemoryAllocateFlagBits" "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"+-- | @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ specifies that memory will be+-- allocated for the devices in 'VkMemoryAllocateFlagsInfo'::@deviceMask@. pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT :: VkMemoryAllocateFlagBits pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = VkMemoryAllocateFlagBits 0x00000001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"@@ -176,26 +221,275 @@ -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE" pattern VK_PIPELINE_CREATE_DISPATCH_BASE :: VkPipelineCreateFlagBits pattern VK_PIPELINE_CREATE_DISPATCH_BASE = VkPipelineCreateFlagBits 0x00000010--- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_DEVICE_GROUP_BIT"+-- | @VK_DEPENDENCY_DEVICE_GROUP_BIT@ specifies that dependencies are+-- [non-device-local+-- dependency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-device-local-dependencies). pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 0x00000004 -- | vkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory -- features of a device+--+-- = Parameters+--+-- - @device@ is the logical device that owns the memory.+--+-- - @heapIndex@ is the index of the memory heap from which the memory is+-- allocated.+--+-- - @localDeviceIndex@ is the device index of the physical device that+-- performs the memory access.+--+-- - @remoteDeviceIndex@ is the device index of the physical device that+-- the memory is allocated for.+--+-- - @pPeerMemoryFeatures@ is a pointer to a bitmask of+-- 'VkPeerMemoryFeatureFlagBits' indicating which types of memory+-- accesses are supported for the combination of heap, local, and+-- remote devices.+--+-- == Valid Usage+--+-- - @heapIndex@ /must/ be less than @memoryHeapCount@+--+-- - @localDeviceIndex@ /must/ be a valid device index+--+-- - @remoteDeviceIndex@ /must/ be a valid device index+--+-- - @localDeviceIndex@ /must/ not equal remoteDeviceIndex+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pPeerMemoryFeatures@ /must/ be a valid pointer to a+-- 'VkPeerMemoryFeatureFlags' value+--+-- - @pPeerMemoryFeatures@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkPeerMemoryFeatureFlags' foreign import ccall "vkGetDeviceGroupPeerMemoryFeatures" vkGetDeviceGroupPeerMemoryFeatures :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO () -- | vkCmdSetDeviceMask - Modify device mask of a command buffer+--+-- = Parameters+--+-- - @commandBuffer@ is command buffer whose current device mask is+-- modified.+--+-- - @deviceMask@ is the new value of the current device mask.+--+-- = Description+--+-- @deviceMask@ is used to filter out subsequent commands from executing on+-- all physical devices whose bit indices are not set in the mask.+--+-- == Valid Usage+--+-- - @deviceMask@ /must/ be a valid device mask value+--+-- - @deviceMask@ /must/ not be zero+--+-- - @deviceMask@ /must/ not include any set bits that were not in the+-- 'VkDeviceGroupCommandBufferBeginInfo'::@deviceMask@ value when the+-- command buffer began recording.+--+-- - If @vkCmdSetDeviceMask@ is called inside a render pass instance,+-- @deviceMask@ /must/ not include any set bits that were not in the+-- 'VkDeviceGroupRenderPassBeginInfo'::@deviceMask@ value when the+-- render pass instance began recording.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support graphics, compute, or transfer operations+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- | | | Transfer | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' foreign import ccall "vkCmdSetDeviceMask" vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO () -- | vkCmdDispatchBase - Dispatch compute work items+--+-- = Parameters+--+-- - @commandBuffer@ is the command buffer into which the command will be+-- recorded.+--+-- - @baseGroupX@ is the start value for the X component of+-- @WorkgroupId@.+--+-- - @baseGroupY@ is the start value for the Y component of+-- @WorkgroupId@.+--+-- - @baseGroupZ@ is the start value for the Z component of+-- @WorkgroupId@.+--+-- - @groupCountX@ is the number of local workgroups to dispatch in the X+-- dimension.+--+-- - @groupCountY@ is the number of local workgroups to dispatch in the Y+-- dimension.+--+-- - @groupCountZ@ is the number of local workgroups to dispatch in the Z+-- dimension.+--+-- = Description+--+-- When the command is executed, a global workgroup consisting of+-- groupCountX × groupCountY × groupCountZ local workgroups is assembled,+-- with @WorkgroupId@ values ranging from [baseGroup, baseGroup ++-- groupCount) in each component.+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatch' is+-- equivalent to+-- vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ).+--+-- == Valid Usage+--+-- - All valid usage rules from+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatch' apply+--+-- - @baseGroupX@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]+--+-- - @baseGroupX@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]+--+-- - @baseGroupZ@ /must/ be less than+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]+--+-- - @groupCountX@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0] minus+-- @baseGroupX@+--+-- - @groupCountY@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1] minus+-- @baseGroupY@+--+-- - @groupCountZ@ /must/ be less than or equal to+-- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2] minus+-- @baseGroupZ@+--+-- - If any of @baseGroupX@, @baseGroupY@, or @baseGroupZ@ are not zero,+-- then the bound compute pipeline /must/ have been created with the+-- @VK_PIPELINE_CREATE_DISPATCH_BASE@ flag.+--+-- == Valid Usage (Implicit)+--+-- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+--+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+--+-- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/+-- support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to @commandBuffer@ /must/ be externally synchronized+--+-- - Host access to the @VkCommandPool@ that @commandBuffer@ was+-- allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Outside | Compute | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' foreign import ccall "vkCmdDispatchBase" vkCmdDispatchBase :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO () -- | VkMemoryAllocateFlagsInfo - Structure controlling how many instances of -- memory will be allocated+--+-- = Description+--+-- If @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is not set, the number of+-- instances allocated depends on whether+-- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ is set in the memory heap. If+-- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ is set, then memory is allocated for+-- every physical device in the logical device (as if @deviceMask@ has bits+-- set for all device indices). If @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ is+-- not set, then a single instance of memory is allocated (as if+-- @deviceMask@ is set to one).+--+-- On some implementations, allocations from a multi-instance heap /may/+-- consume memory on all physical devices even if the @deviceMask@ excludes+-- some devices. If+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties'::@subsetAllocation@+-- is @VK_TRUE@, then memory is only consumed for the devices in the device+-- mask.+--+-- __Note__+--+-- In practice, most allocations on a multi-instance heap will be allocated+-- across all physical devices. Unicast allocation support is an optional+-- optimization for a minority of allocations.+--+-- == Valid Usage+--+-- - If @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is set, @deviceMask@ /must/+-- be a valid device mask.+--+-- - If @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is set, @deviceMask@ /must/+-- not be zero+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO@+--+-- - @flags@ /must/ be a valid combination of 'VkMemoryAllocateFlagBits'+-- values+--+-- = See Also+--+-- 'VkMemoryAllocateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkMemoryAllocateFlagsInfo = VkMemoryAllocateFlagsInfo- { -- No documentation found for Nested "VkMemoryAllocateFlagsInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryAllocateFlagsInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryAllocateFlagsInfo" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkMemoryAllocateFlagBits' controlling the+ -- allocation. vkFlags :: VkMemoryAllocateFlags- , -- No documentation found for Nested "VkMemoryAllocateFlagsInfo" "vkDeviceMask"+ , -- | @deviceMask@ is a mask of physical devices in the logical device,+ -- indicating that memory /must/ be allocated on each device in the mask,+ -- if @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is set in @flags@. vkDeviceMask :: Word32 } deriving (Eq, Show)@@ -213,16 +507,70 @@ *> poke (ptr `plusPtr` 20) (vkDeviceMask (poked :: VkMemoryAllocateFlagsInfo)) -- | VkDeviceGroupRenderPassBeginInfo - Set the initial device mask and -- render areas for a render pass instance+--+-- = Description+--+-- The @deviceMask@ serves several purposes. It is an upper bound on the+-- set of physical devices that /can/ be used during the render pass+-- instance, and the initial device mask when the render pass instance+-- begins. Render pass attachment load, store, and resolve operations only+-- apply to physical devices included in the device mask. Subpass+-- dependencies only apply to the physical devices in the device mask.+--+-- If @deviceRenderAreaCount@ is not zero, then the elements of+-- @pDeviceRenderAreas@ override the value of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderArea@,+-- and provide a render area specific to each physical device. These render+-- areas serve the same purpose as+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderArea@,+-- including controlling the region of attachments that are cleared by+-- @VK_ATTACHMENT_LOAD_OP_CLEAR@ and that are resolved into resolve+-- attachments.+--+-- If this structure is not present, the render pass instance’s device mask+-- is the value of 'VkDeviceGroupCommandBufferBeginInfo'::@deviceMask@. If+-- this structure is not present or if @deviceRenderAreaCount@ is zero,+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderArea@+-- is used for all physical devices.+--+-- == Valid Usage+--+-- - @deviceMask@ /must/ be a valid device mask value+--+-- - @deviceMask@ /must/ not be zero+--+-- - @deviceMask@ /must/ be a subset of the command buffer’s initial+-- device mask+--+-- - @deviceRenderAreaCount@ /must/ either be zero or equal to the number+-- of physical devices in the logical device.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO@+--+-- - If @deviceRenderAreaCount@ is not @0@, @pDeviceRenderAreas@ /must/+-- be a valid pointer to an array of @deviceRenderAreaCount@ @VkRect2D@+-- structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupRenderPassBeginInfo = VkDeviceGroupRenderPassBeginInfo- { -- No documentation found for Nested "VkDeviceGroupRenderPassBeginInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupRenderPassBeginInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupRenderPassBeginInfo" "vkDeviceMask"+ , -- | @deviceMask@ is the device mask for the render pass instance. vkDeviceMask :: Word32- , -- No documentation found for Nested "VkDeviceGroupRenderPassBeginInfo" "vkDeviceRenderAreaCount"+ , -- | @deviceRenderAreaCount@ is the number of elements in the+ -- @pDeviceRenderAreas@ array. vkDeviceRenderAreaCount :: Word32- , -- No documentation found for Nested "VkDeviceGroupRenderPassBeginInfo" "vkPDeviceRenderAreas"+ , -- | @pDeviceRenderAreas@ is an array of structures of type+ -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' defining the render area for+ -- each physical device. vkPDeviceRenderAreas :: Ptr VkRect2D } deriving (Eq, Show)@@ -242,12 +590,36 @@ *> poke (ptr `plusPtr` 24) (vkPDeviceRenderAreas (poked :: VkDeviceGroupRenderPassBeginInfo)) -- | VkDeviceGroupCommandBufferBeginInfo - Set the initial device mask for a -- command buffer+--+-- = Description+--+-- The initial device mask also acts as an upper bound on the set of+-- devices that /can/ ever be in the device mask in the command buffer.+--+-- If this structure is not present, the initial value of a command+-- buffer’s device mask is set to include all physical devices in the+-- logical device when the command buffer begins recording.+--+-- == Valid Usage+--+-- - @deviceMask@ /must/ be a valid device mask value+--+-- - @deviceMask@ /must/ not be zero+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupCommandBufferBeginInfo = VkDeviceGroupCommandBufferBeginInfo- { -- No documentation found for Nested "VkDeviceGroupCommandBufferBeginInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupCommandBufferBeginInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupCommandBufferBeginInfo" "vkDeviceMask"+ , -- | @deviceMask@ is the initial value of the command buffer’s device mask. vkDeviceMask :: Word32 } deriving (Eq, Show)@@ -263,22 +635,77 @@ *> poke (ptr `plusPtr` 16) (vkDeviceMask (poked :: VkDeviceGroupCommandBufferBeginInfo)) -- | VkDeviceGroupSubmitInfo - Structure indicating which physical devices -- execute semaphore operations and command buffers+--+-- = Description+--+-- If this structure is not present, semaphore operations and command+-- buffers execute on device index zero.+--+-- == Valid Usage+--+-- - @waitSemaphoreCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@waitSemaphoreCount@+--+-- - @commandBufferCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@commandBufferCount@+--+-- - @signalSemaphoreCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@signalSemaphoreCount@+--+-- - All elements of @pWaitSemaphoreDeviceIndices@ and+-- @pSignalSemaphoreDeviceIndices@ /must/ be valid device indices+--+-- - All elements of @pCommandBufferDeviceMasks@ /must/ be valid device+-- masks+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO@+--+-- - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphoreDeviceIndices@+-- /must/ be a valid pointer to an array of @waitSemaphoreCount@+-- @uint32_t@ values+--+-- - If @commandBufferCount@ is not @0@, @pCommandBufferDeviceMasks@+-- /must/ be a valid pointer to an array of @commandBufferCount@+-- @uint32_t@ values+--+-- - If @signalSemaphoreCount@ is not @0@,+-- @pSignalSemaphoreDeviceIndices@ /must/ be a valid pointer to an+-- array of @signalSemaphoreCount@ @uint32_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupSubmitInfo = VkDeviceGroupSubmitInfo- { -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkWaitSemaphoreCount"+ , -- | @waitSemaphoreCount@ is the number of elements in the+ -- @pWaitSemaphoreDeviceIndices@ array. vkWaitSemaphoreCount :: Word32- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkPWaitSemaphoreDeviceIndices"+ , -- | @pWaitSemaphoreDeviceIndices@ is an array of device indices indicating+ -- which physical device executes the semaphore wait operation in the+ -- corresponding element of+ -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pWaitSemaphores@. vkPWaitSemaphoreDeviceIndices :: Ptr Word32- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkCommandBufferCount"+ , -- | @commandBufferCount@ is the number of elements in the+ -- @pCommandBufferDeviceMasks@ array. vkCommandBufferCount :: Word32- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkPCommandBufferDeviceMasks"+ , -- | @pCommandBufferDeviceMasks@ is an array of device masks indicating which+ -- physical devices execute the command buffer in the corresponding element+ -- of 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pCommandBuffers@. A+ -- physical device executes the command buffer if the corresponding bit is+ -- set in the mask. vkPCommandBufferDeviceMasks :: Ptr Word32- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkSignalSemaphoreCount"+ , -- | @signalSemaphoreCount@ is the number of elements in the+ -- @pSignalSemaphoreDeviceIndices@ array. vkSignalSemaphoreCount :: Word32- , -- No documentation found for Nested "VkDeviceGroupSubmitInfo" "vkPSignalSemaphoreDeviceIndices"+ , -- | @pSignalSemaphoreDeviceIndices@ is an array of device indices indicating+ -- which physical device executes the semaphore signal operation in the+ -- corresponding element of+ -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pSignalSemaphores@. vkPSignalSemaphoreDeviceIndices :: Ptr Word32 } deriving (Eq, Show)@@ -304,14 +731,42 @@ *> poke (ptr `plusPtr` 56) (vkPSignalSemaphoreDeviceIndices (poked :: VkDeviceGroupSubmitInfo)) -- | VkDeviceGroupBindSparseInfo - Structure indicating which instances are -- bound+--+-- = Description+--+-- These device indices apply to all buffer and image memory binds included+-- in the batch that points to this structure. The semaphore waits and+-- signals for the batch are executed only by the physical device specified+-- by the @resourceDeviceIndex@.+--+-- If this structure is not present, @resourceDeviceIndex@ and+-- @memoryDeviceIndex@ are assumed to be zero.+--+-- == Valid Usage+--+-- - @resourceDeviceIndex@ and @memoryDeviceIndex@ /must/ both be valid+-- device indices.+--+-- - Each memory allocation bound in this batch /must/ have allocated an+-- instance for @memoryDeviceIndex@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupBindSparseInfo = VkDeviceGroupBindSparseInfo- { -- No documentation found for Nested "VkDeviceGroupBindSparseInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupBindSparseInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupBindSparseInfo" "vkResourceDeviceIndex"+ , -- | @resourceDeviceIndex@ is a device index indicating which instance of the+ -- resource is bound. vkResourceDeviceIndex :: Word32- , -- No documentation found for Nested "VkDeviceGroupBindSparseInfo" "vkMemoryDeviceIndex"+ , -- | @memoryDeviceIndex@ is a device index indicating which instance of the+ -- memory the resource instance is bound to. vkMemoryDeviceIndex :: Word32 } deriving (Eq, Show)@@ -328,6 +783,25 @@ *> poke (ptr `plusPtr` 16) (vkResourceDeviceIndex (poked :: VkDeviceGroupBindSparseInfo)) *> poke (ptr `plusPtr` 20) (vkMemoryDeviceIndex (poked :: VkDeviceGroupBindSparseInfo)) -- | VkPeerMemoryFeatureFlags - Bitmask of VkPeerMemoryFeatureFlagBits+--+-- = Description+--+-- @VkPeerMemoryFeatureFlags@ is a bitmask type for setting a mask of zero+-- or more 'VkPeerMemoryFeatureFlagBits'.+--+-- = See Also+--+-- 'VkPeerMemoryFeatureFlagBits', 'vkGetDeviceGroupPeerMemoryFeatures',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeaturesKHR' type VkPeerMemoryFeatureFlags = VkPeerMemoryFeatureFlagBits -- | VkMemoryAllocateFlags - Bitmask of VkMemoryAllocateFlagBits+--+-- = Description+--+-- @VkMemoryAllocateFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkMemoryAllocateFlagBits'.+--+-- = See Also+--+-- 'VkMemoryAllocateFlagBits', 'VkMemoryAllocateFlagsInfo' type VkMemoryAllocateFlags = VkMemoryAllocateFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs view
@@ -46,14 +46,68 @@ pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = VkImageCreateFlagBits 0x00000040 -- | VkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a -- group to bind to+--+-- = Members+--+-- If the @pNext@ list of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo'+-- includes a @VkBindBufferMemoryDeviceGroupInfo@ structure, then that+-- structure determines how memory is bound to buffers across multiple+-- devices in a device group.+--+-- = Description+--+-- The @VkBindBufferMemoryDeviceGroupInfo@ structure is defined as:+--+-- - @sType@ is the type of this structure.+--+-- - @pNext@ is @NULL@ or a pointer to an extension-specific structure.+--+-- - @deviceIndexCount@ is the number of elements in @pDeviceIndices@.+--+-- - @pDeviceIndices@ is a pointer to an array of device indices.+--+-- If @deviceIndexCount@ is greater than zero, then on device index i the+-- buffer is attached to the instance of @memory@ on the physical device+-- with device index pDeviceIndices[i].+--+-- If @deviceIndexCount@ is zero and @memory@ comes from a memory heap with+-- the @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as if+-- @pDeviceIndices@ contains consecutive indices from zero to the number of+-- physical devices in the logical device, minus one. In other words, by+-- default each physical device attaches to its own instance of @memory@.+--+-- If @deviceIndexCount@ is zero and @memory@ comes from a memory heap+-- without the @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as+-- if @pDeviceIndices@ contains an array of zeros. In other words, by+-- default each physical device attaches to instance zero.+--+-- == Valid Usage+--+-- - @deviceIndexCount@ /must/ either be zero or equal to the number of+-- physical devices in the logical device+--+-- - All elements of @pDeviceIndices@ /must/ be valid device indices+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO@+--+-- - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+-- pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkBindBufferMemoryDeviceGroupInfo = VkBindBufferMemoryDeviceGroupInfo- { -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "vkSType"+ { -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "vkPNext"+ , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "vkDeviceIndexCount"+ , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "deviceIndexCount" vkDeviceIndexCount :: Word32- , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "vkPDeviceIndices"+ , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "pDeviceIndices" vkPDeviceIndices :: Ptr Word32 } deriving (Eq, Show)@@ -71,18 +125,130 @@ *> poke (ptr `plusPtr` 24) (vkPDeviceIndices (poked :: VkBindBufferMemoryDeviceGroupInfo)) -- | VkBindImageMemoryDeviceGroupInfo - Structure specifying device within a -- group to bind to+--+-- = Members+--+-- If the @pNext@ list of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo'+-- includes a @VkBindImageMemoryDeviceGroupInfo@ structure, then that+-- structure determines how memory is bound to images across multiple+-- devices in a device group.+--+-- = Description+--+-- The @VkBindImageMemoryDeviceGroupInfo@ structure is defined as:+--+-- - @sType@ is the type of this structure.+--+-- - @pNext@ is @NULL@ or a pointer to an extension-specific structure.+--+-- - @deviceIndexCount@ is the number of elements in @pDeviceIndices@.+--+-- - @pDeviceIndices@ is a pointer to an array of device indices.+--+-- - @splitInstanceBindRegionCount@ is the number of elements in+-- @pSplitInstanceBindRegions@.+--+-- - @pSplitInstanceBindRegions@ is a pointer to an array of rectangles+-- describing which regions of the image are attached to each instance+-- of memory.+--+-- If @deviceIndexCount@ is greater than zero, then on device index i+-- @image@ is attached to the instance of the memory on the physical device+-- with device index pDeviceIndices[i].+--+-- Let N be the number of physical devices in the logical device. If+-- @splitInstanceBindRegionCount@ is greater than zero, then+-- @pSplitInstanceBindRegions@ is an array of N2 rectangles, where the+-- image region specified by the rectangle at element i*N+j in resource+-- instance i is bound to the memory instance j. The blocks of the memory+-- that are bound to each sparse image block region use an offset in+-- memory, relative to @memoryOffset@, computed as if the whole image were+-- being bound to a contiguous range of memory. In other words,+-- horizontally adjacent image blocks use consecutive blocks of memory,+-- vertically adjacent image blocks are separated by the number of bytes+-- per block multiplied by the width in blocks of @image@, and the block at+-- (0,0) corresponds to memory starting at @memoryOffset@.+--+-- If @splitInstanceBindRegionCount@ and @deviceIndexCount@ are zero and+-- the memory comes from a memory heap with the+-- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as if+-- @pDeviceIndices@ contains consecutive indices from zero to the number of+-- physical devices in the logical device, minus one. In other words, by+-- default each physical device attaches to its own instance of the memory.+--+-- If @splitInstanceBindRegionCount@ and @deviceIndexCount@ are zero and+-- the memory comes from a memory heap without the+-- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as if+-- @pDeviceIndices@ contains an array of zeros. In other words, by default+-- each physical device attaches to instance zero.+--+-- == Valid Usage+--+-- - At least one of @deviceIndexCount@ and+-- @splitInstanceBindRegionCount@ /must/ be zero.+--+-- - @deviceIndexCount@ /must/ either be zero or equal to the number of+-- physical devices in the logical device+--+-- - All elements of @pDeviceIndices@ /must/ be valid device indices.+--+-- - @splitInstanceBindRegionCount@ /must/ either be zero or equal to the+-- number of physical devices in the logical device squared+--+-- - Elements of @pSplitInstanceBindRegions@ that correspond to the same+-- instance of an image /must/ not overlap.+--+-- - The @offset.x@ member of any element of @pSplitInstanceBindRegions@+-- /must/ be a multiple of the sparse image block width+-- (@VkSparseImageFormatProperties@::@imageGranularity.width@) of all+-- non-metadata aspects of the image+--+-- - The @offset.y@ member of any element of @pSplitInstanceBindRegions@+-- /must/ be a multiple of the sparse image block height+-- (@VkSparseImageFormatProperties@::@imageGranularity.height@) of all+-- non-metadata aspects of the image+--+-- - The @extent.width@ member of any element of+-- @pSplitInstanceBindRegions@ /must/ either be a multiple of the+-- sparse image block width of all non-metadata aspects of the image,+-- or else @extent.width@ + @offset.x@ /must/ equal the width of the+-- image subresource+--+-- - The @extent.height@ member of any element of+-- @pSplitInstanceBindRegions@ /must/ either be a multiple of the+-- sparse image block height of all non-metadata aspects of the image,+-- or else @extent.height@+-- @offset.y@ /must/ equal the width of the image subresource+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO@+--+-- - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+-- pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- - If @splitInstanceBindRegionCount@ is not @0@,+-- @pSplitInstanceBindRegions@ /must/ be a valid pointer to an array of+-- @splitInstanceBindRegionCount@ @VkRect2D@ structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkBindImageMemoryDeviceGroupInfo = VkBindImageMemoryDeviceGroupInfo- { -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "vkSType"+ { -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "vkPNext"+ , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "vkDeviceIndexCount"+ , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "deviceIndexCount" vkDeviceIndexCount :: Word32- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "vkPDeviceIndices"+ , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pDeviceIndices" vkPDeviceIndices :: Ptr Word32- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "vkSplitInstanceBindRegionCount"+ , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "splitInstanceBindRegionCount" vkSplitInstanceBindRegionCount :: Word32- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "vkPSplitInstanceBindRegions"+ , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pSplitInstanceBindRegions" vkPSplitInstanceBindRegions :: Ptr VkRect2D } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs view
@@ -53,7 +53,11 @@ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO" pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO :: VkStructureType pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = VkStructureType 1000070001--- No documentation found for Nested "VkMemoryHeapFlagBits" "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"+-- | @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ specifies that in a logical device+-- representing more than one physical device, there is a per-physical+-- device instance of the heap memory. By default, an allocation from such+-- a heap will be replicated to each physical device’s instance of the+-- heap. pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapFlagBits pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 0x00000002 -- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE"@@ -63,19 +67,96 @@ pattern VK_MAX_DEVICE_GROUP_SIZE = 32 -- | vkEnumeratePhysicalDeviceGroups - Enumerates groups of physical devices -- that can be used to create a single logical device+--+-- = Parameters+--+-- - @instance@ is a handle to a Vulkan instance previously created with+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance'.+--+-- - @pPhysicalDeviceGroupCount@ is a pointer to an integer related to+-- the number of device groups available or queried, as described+-- below.+--+-- - @pPhysicalDeviceGroupProperties@ is either @NULL@ or a pointer to an+-- array of 'VkPhysicalDeviceGroupProperties' structures.+--+-- = Description+--+-- If @pPhysicalDeviceGroupProperties@ is @NULL@, then the number of device+-- groups available is returned in @pPhysicalDeviceGroupCount@. Otherwise,+-- @pPhysicalDeviceGroupCount@ /must/ point to a variable set by the user+-- to the number of elements in the @pPhysicalDeviceGroupProperties@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pPhysicalDeviceGroupProperties@. If+-- @pPhysicalDeviceGroupCount@ is less than the number of device groups+-- available, at most @pPhysicalDeviceGroupCount@ structures will be+-- written. If @pPhysicalDeviceGroupCount@ is smaller than the number of+-- device groups available, @VK_INCOMPLETE@ will be returned instead of+-- @VK_SUCCESS@, to indicate that not all the available device groups were+-- returned.+--+-- Every physical device /must/ be in exactly one device group.+--+-- == Valid Usage (Implicit)+--+-- - @instance@ /must/ be a valid @VkInstance@ handle+--+-- - @pPhysicalDeviceGroupCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pPhysicalDeviceGroupCount@ is not @0@,+-- and @pPhysicalDeviceGroupProperties@ is not @NULL@,+-- @pPhysicalDeviceGroupProperties@ /must/ be a valid pointer to an+-- array of @pPhysicalDeviceGroupCount@+-- @VkPhysicalDeviceGroupProperties@ structures+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- - @VK_INCOMPLETE@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- - @VK_ERROR_INITIALIZATION_FAILED@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',+-- 'VkPhysicalDeviceGroupProperties' foreign import ccall "vkEnumeratePhysicalDeviceGroups" vkEnumeratePhysicalDeviceGroups :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult -- | VkPhysicalDeviceGroupProperties - Structure specifying physical device -- group properties+--+-- = See Also+--+-- @VkBool32@,+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkEnumeratePhysicalDeviceGroups',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroupsKHR' data VkPhysicalDeviceGroupProperties = VkPhysicalDeviceGroupProperties- { -- No documentation found for Nested "VkPhysicalDeviceGroupProperties" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceGroupProperties" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceGroupProperties" "vkPhysicalDeviceCount"+ , -- | @physicalDeviceCount@ is the number of physical devices in the group. vkPhysicalDeviceCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceGroupProperties" "vkPhysicalDevices"+ , -- | @physicalDevices@ is an array of physical device handles representing+ -- all physical devices in the group. The first @physicalDeviceCount@+ -- elements of the array will be valid. vkPhysicalDevices :: Vector VK_MAX_DEVICE_GROUP_SIZE VkPhysicalDevice- , -- No documentation found for Nested "VkPhysicalDeviceGroupProperties" "vkSubsetAllocation"+ , -- | @subsetAllocation@ specifies whether logical devices created from the+ -- group support allocating device memory on a subset of devices, via the+ -- @deviceMask@ member of the+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkMemoryAllocateFlagsInfo'.+ -- If this is @VK_FALSE@, then all device memory allocations are made+ -- across all physical devices in the group. If @physicalDeviceCount@ is+ -- @1@, then @subsetAllocation@ /must/ be @VK_FALSE@. vkSubsetAllocation :: VkBool32 } deriving (Eq, Show)@@ -95,14 +176,59 @@ *> poke (ptr `plusPtr` 280) (vkSubsetAllocation (poked :: VkPhysicalDeviceGroupProperties)) -- | VkDeviceGroupDeviceCreateInfo - Create a logical device from multiple -- physical devices+--+-- = Description+--+-- The elements of the @pPhysicalDevices@ array are an ordered list of the+-- physical devices that the logical device represents. These /must/ be a+-- subset of a single device group, and need not be in the same order as+-- they were enumerated. The order of the physical devices in the+-- @pPhysicalDevices@ array determines the /device index/ of each physical+-- device, with element i being assigned a device index of i. Certain+-- commands and structures refer to one or more physical devices by using+-- device indices or /device masks/ formed using device indices.+--+-- A logical device created without using @VkDeviceGroupDeviceCreateInfo@,+-- or with @physicalDeviceCount@ equal to zero, is equivalent to a+-- @physicalDeviceCount@ of one and @pPhysicalDevices@ pointing to the+-- @physicalDevice@ parameter to+-- 'Graphics.Vulkan.Core10.Device.vkCreateDevice'. In particular, the+-- device index of that physical device is zero.+--+-- == Valid Usage+--+-- - Each element of @pPhysicalDevices@ /must/ be unique+--+-- - All elements of @pPhysicalDevices@ /must/ be in the same device+-- group as enumerated by 'vkEnumeratePhysicalDeviceGroups'+--+-- - If @physicalDeviceCount@ is not @0@, the @physicalDevice@ parameter+-- of 'Graphics.Vulkan.Core10.Device.vkCreateDevice' /must/ be an+-- element of @pPhysicalDevices@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO@+--+-- - If @physicalDeviceCount@ is not @0@, @pPhysicalDevices@ /must/ be a+-- valid pointer to an array of @physicalDeviceCount@ valid+-- @VkPhysicalDevice@ handles+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupDeviceCreateInfo = VkDeviceGroupDeviceCreateInfo- { -- No documentation found for Nested "VkDeviceGroupDeviceCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupDeviceCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupDeviceCreateInfo" "vkPhysicalDeviceCount"+ , -- | @physicalDeviceCount@ is the number of elements in the+ -- @pPhysicalDevices@ array. vkPhysicalDeviceCount :: Word32- , -- No documentation found for Nested "VkDeviceGroupDeviceCreateInfo" "vkPPhysicalDevices"+ , -- | @pPhysicalDevices@ is an array of physical device handles belonging to+ -- the same device group. vkPPhysicalDevices :: Ptr VkPhysicalDevice } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs view
@@ -55,6 +55,10 @@ -- | VkFenceImportFlagBits - Bitmask specifying additional parameters of -- fence payload import+--+-- = See Also+--+-- 'VkFenceImportFlags' newtype VkFenceImportFlagBits = VkFenceImportFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -72,7 +76,10 @@ ) ) --- No documentation found for Nested "VkFenceImportFlagBits" "VK_FENCE_IMPORT_TEMPORARY_BIT"+-- | @VK_FENCE_IMPORT_TEMPORARY_BIT@ specifies that the fence payload will be+-- imported only temporarily, as described in [Importing Fence+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing),+-- regardless of the permanence of @handleType@. pattern VK_FENCE_IMPORT_TEMPORARY_BIT :: VkFenceImportFlagBits pattern VK_FENCE_IMPORT_TEMPORARY_BIT = VkFenceImportFlagBits 0x00000001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"@@ -80,12 +87,35 @@ pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = VkStructureType 1000113000 -- | VkExportFenceCreateInfo - Structure specifying handle types that can be -- exported from a fence+--+-- == Valid Usage+--+-- - The bits in @handleTypes@ must be supported and compatible, as+-- reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO@+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportFenceCreateInfo = VkExportFenceCreateInfo- { -- No documentation found for Nested "VkExportFenceCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportFenceCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportFenceCreateInfo" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+ -- specifying one or more fence handle types the application /can/ export+ -- from the resulting fence. The application /can/ request multiple handle+ -- types for the same fence. vkHandleTypes :: VkExternalFenceHandleTypeFlags } deriving (Eq, Show)@@ -100,4 +130,15 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportFenceCreateInfo)) *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExportFenceCreateInfo)) -- | VkFenceImportFlags - Bitmask of VkFenceImportFlagBits+--+-- = Description+--+-- @VkFenceImportFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkFenceImportFlagBits'.+--+-- = See Also+--+-- 'VkFenceImportFlagBits',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkImportFenceFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkImportFenceWin32HandleInfoKHR' type VkFenceImportFlags = VkFenceImportFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs view
@@ -70,6 +70,68 @@ -- | VkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence -- handle types+--+-- = Description+--+-- - @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT@ specifies a POSIX file+-- descriptor handle that has only limited valid usage outside of+-- Vulkan and other compatible APIs. It /must/ be compatible with the+-- POSIX system calls @dup@, @dup2@, @close@, and the non-standard+-- system call @dup3@. Additionally, it /must/ be transportable over a+-- socket using an @SCM_RIGHTS@ control message. It owns a reference to+-- the underlying synchronization primitive represented by its Vulkan+-- fence object.+--+-- - @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ specifies an NT+-- handle that has only limited valid usage outside of Vulkan and other+-- compatible APIs. It /must/ be compatible with the functions+-- @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,+-- @GetHandleInformation@, and @SetHandleInformation@. It owns a+-- reference to the underlying synchronization primitive represented by+-- its Vulkan fence object.+--+-- - @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ specifies a+-- global share handle that has only limited valid usage outside of+-- Vulkan and other compatible APIs. It is not compatible with any+-- native APIs. It does not own a reference to the underlying+-- synchronization primitive represented by its Vulkan fence object,+-- and will therefore become invalid when all Vulkan fence objects+-- associated with it are destroyed.+--+-- - @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ specifies a POSIX file+-- descriptor handle to a Linux Sync File or Android Fence. It can be+-- used with any native API accepting a valid sync file or fence as+-- input. It owns a reference to the underlying synchronization+-- primitive associated with the file descriptor. Implementations which+-- support importing this handle type /must/ accept any type of sync or+-- fence FD supported by the native system they are running on.+--+-- Some external fence handle types can only be shared within the same+-- underlying physical device and\/or the same driver version, as defined+-- in the following table:+--+-- +------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | Handle type | @VkPhysicalDeviceIDProperties@::@driverUUID@ | @VkPhysicalDeviceIDProperties@::@deviceUUID@ |+-- +------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Must match | Must match |+-- +------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Must match | Must match |+-- +------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Must match | Must match |+-- +------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ | No restriction | No restriction |+-- +------------------------------------------------------+----------------------------------------------+----------------------------------------------++--+-- External fence handle types compatibility+--+-- = See Also+--+-- 'VkExternalFenceHandleTypeFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkFenceGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkFenceGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkImportFenceFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkImportFenceWin32HandleInfoKHR',+-- 'VkPhysicalDeviceExternalFenceInfo' newtype VkExternalFenceHandleTypeFlagBits = VkExternalFenceHandleTypeFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -112,6 +174,10 @@ -- | VkExternalFenceFeatureFlagBits - Bitfield describing features of an -- external fence handle type+--+-- = See Also+--+-- 'VkExternalFenceFeatureFlags' newtype VkExternalFenceFeatureFlagBits = VkExternalFenceFeatureFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -131,11 +197,13 @@ ) ) --- No documentation found for Nested "VkExternalFenceFeatureFlagBits" "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"+-- | @VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT@ specifies handles of this+-- type /can/ be exported from Vulkan fence objects. pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT :: VkExternalFenceFeatureFlagBits pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = VkExternalFenceFeatureFlagBits 0x00000001 --- No documentation found for Nested "VkExternalFenceFeatureFlagBits" "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"+-- | @VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT@ specifies handles of this+-- type /can/ be imported to Vulkan fence objects. pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT :: VkExternalFenceFeatureFlagBits pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = VkExternalFenceFeatureFlagBits 0x00000002 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"@@ -146,15 +214,75 @@ pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = VkStructureType 1000112001 -- | vkGetPhysicalDeviceExternalFenceProperties - Function for querying -- external fence handle capabilities.+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- fence capabilities.+--+-- - @pExternalFenceInfo@ points to an instance of the+-- 'VkPhysicalDeviceExternalFenceInfo' structure, describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Fence.vkCreateFence'.+--+-- - @pExternalFenceProperties@ points to an instance of the+-- 'VkExternalFenceProperties' structure in which capabilities are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pExternalFenceInfo@ /must/ be a valid pointer to a valid+-- @VkPhysicalDeviceExternalFenceInfo@ structure+--+-- - @pExternalFenceProperties@ /must/ be a valid pointer to a+-- @VkExternalFenceProperties@ structure+--+-- = See Also+--+-- 'VkExternalFenceProperties',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceExternalFenceInfo' foreign import ccall "vkGetPhysicalDeviceExternalFenceProperties" vkGetPhysicalDeviceExternalFenceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO () -- | VkPhysicalDeviceExternalFenceInfo - Structure specifying fence creation -- parameters.+--+-- = Description+--+-- __Note__+--+-- Handles of type @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ generated by+-- the implementation may represent either Linux Sync Files or Android+-- Fences at the implementation’s discretion. Applications /should/ only+-- use operations defined for both types of file descriptors, unless they+-- know via means external to Vulkan the type of the file descriptor, or+-- are prepared to deal with the system-defined operation failures+-- resulting from using the wrong type.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @handleType@ /must/ be a valid 'VkExternalFenceHandleTypeFlagBits'+-- value+--+-- = See Also+--+-- 'VkExternalFenceHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR' data VkPhysicalDeviceExternalFenceInfo = VkPhysicalDeviceExternalFenceInfo- { -- No documentation found for Nested "VkPhysicalDeviceExternalFenceInfo" "vkSType"+ { -- | @sType@ is the type of this structure vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceExternalFenceInfo" "vkPNext"+ , -- | @pNext@ is NULL or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceExternalFenceInfo" "vkHandleType"+ , -- | @handleType@ is a 'VkExternalFenceHandleTypeFlagBits' value indicating+ -- an external fence handle type for which capabilities will be returned. vkHandleType :: VkExternalFenceHandleTypeFlagBits } deriving (Eq, Show)@@ -170,16 +298,40 @@ *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkPhysicalDeviceExternalFenceInfo)) -- | VkExternalFenceProperties - Structure describing supported external -- fence handle features+--+-- = Description+--+-- If @handleType@ is not supported by the implementation, then+-- 'VkExternalFenceProperties'::@externalFenceFeatures@ will be set to+-- zero.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'VkExternalFenceFeatureFlags', 'VkExternalFenceHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR' data VkExternalFenceProperties = VkExternalFenceProperties- { -- No documentation found for Nested "VkExternalFenceProperties" "vkSType"+ { -- No documentation found for Nested "VkExternalFenceProperties" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalFenceProperties" "vkPNext"+ , -- No documentation found for Nested "VkExternalFenceProperties" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalFenceProperties" "vkExportFromImportedHandleTypes"+ , -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'VkExternalFenceHandleTypeFlagBits' indicating which types of imported+ -- handle @handleType@ /can/ be exported from. vkExportFromImportedHandleTypes :: VkExternalFenceHandleTypeFlags- , -- No documentation found for Nested "VkExternalFenceProperties" "vkCompatibleHandleTypes"+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'VkExternalFenceHandleTypeFlagBits' specifying handle types which /can/+ -- be specified at the same time as @handleType@ when creating a fence. vkCompatibleHandleTypes :: VkExternalFenceHandleTypeFlags- , -- No documentation found for Nested "VkExternalFenceProperties" "vkExternalFenceFeatures"+ , -- | @externalFenceFeatures@ is a bitmask of 'VkExternalFenceFeatureFlagBits'+ -- indicating the features of @handleType@. vkExternalFenceFeatures :: VkExternalFenceFeatureFlags } deriving (Eq, Show)@@ -199,6 +351,25 @@ *> poke (ptr `plusPtr` 24) (vkExternalFenceFeatures (poked :: VkExternalFenceProperties)) -- | VkExternalFenceHandleTypeFlags - Bitmask of -- VkExternalFenceHandleTypeFlagBits+--+-- = Description+--+-- @VkExternalFenceHandleTypeFlags@ is a bitmask type for setting a mask of+-- zero or more 'VkExternalFenceHandleTypeFlagBits'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo',+-- 'VkExternalFenceHandleTypeFlagBits', 'VkExternalFenceProperties' type VkExternalFenceHandleTypeFlags = VkExternalFenceHandleTypeFlagBits -- | VkExternalFenceFeatureFlags - Bitmask of VkExternalFenceFeatureFlagBits+--+-- = Description+--+-- @VkExternalFenceFeatureFlags@ is a bitmask type for setting a mask of+-- zero or more 'VkExternalFenceFeatureFlagBits'.+--+-- = See Also+--+-- 'VkExternalFenceFeatureFlagBits', 'VkExternalFenceProperties' type VkExternalFenceFeatureFlags = VkExternalFenceFeatureFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs view
@@ -53,12 +53,30 @@ pattern VK_QUEUE_FAMILY_EXTERNAL = 0xfffffffe -- | VkExternalMemoryImageCreateInfo - Specify that an image may be backed by -- external memory+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO@+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- values+--+-- - @handleTypes@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExternalMemoryImageCreateInfo = VkExternalMemoryImageCreateInfo- { -- No documentation found for Nested "VkExternalMemoryImageCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalMemoryImageCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalMemoryImageCreateInfo" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+ -- specifying one or more external memory handle types. vkHandleTypes :: VkExternalMemoryHandleTypeFlags } deriving (Eq, Show)@@ -74,12 +92,28 @@ *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExternalMemoryImageCreateInfo)) -- | VkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed -- by external memory+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO@+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExternalMemoryBufferCreateInfo = VkExternalMemoryBufferCreateInfo- { -- No documentation found for Nested "VkExternalMemoryBufferCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalMemoryBufferCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalMemoryBufferCreateInfo" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+ -- specifying one or more external memory handle types. vkHandleTypes :: VkExternalMemoryHandleTypeFlags } deriving (Eq, Show)@@ -95,12 +129,37 @@ *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExternalMemoryBufferCreateInfo)) -- | VkExportMemoryAllocateInfo - Specify exportable handle types for a -- device memory object+--+-- == Valid Usage+--+-- - The bits in @handleTypes@ /must/ be supported and compatible, as+-- reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO@+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportMemoryAllocateInfo = VkExportMemoryAllocateInfo- { -- No documentation found for Nested "VkExportMemoryAllocateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportMemoryAllocateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportMemoryAllocateInfo" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+ -- specifying one or more memory handle types the application /can/ export+ -- from the resulting allocation. The application /can/ request multiple+ -- handle types for the same allocation. vkHandleTypes :: VkExternalMemoryHandleTypeFlags } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs view
@@ -96,6 +96,143 @@ -- | VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory -- handle types+--+-- = Description+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@ specifies a POSIX+-- file descriptor handle that has only limited valid usage outside of+-- Vulkan and other compatible APIs. It /must/ be compatible with the+-- POSIX system calls @dup@, @dup2@, @close@, and the non-standard+-- system call @dup3@. Additionally, it /must/ be transportable over a+-- socket using an @SCM_RIGHTS@ control message. It owns a reference to+-- the underlying memory resource represented by its Vulkan memory+-- object.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@ specifies an NT+-- handle that has only limited valid usage outside of Vulkan and other+-- compatible APIs. It /must/ be compatible with the functions+-- @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,+-- @GetHandleInformation@, and @SetHandleInformation@. It owns a+-- reference to the underlying memory resource represented by its+-- Vulkan memory object.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ specifies a+-- global share handle that has only limited valid usage outside of+-- Vulkan and other compatible APIs. It is not compatible with any+-- native APIs. It does not own a reference to the underlying memory+-- resource represented its Vulkan memory object, and will therefore+-- become invalid when all Vulkan memory objects associated with it are+-- destroyed.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@ specifies an NT+-- handle returned by @IDXGIResource1@::@CreateSharedHandle@ referring+-- to a Direct3D 10 or 11 texture resource. It owns a reference to the+-- memory used by the Direct3D resource.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@ specifies a+-- global share handle returned by @IDXGIResource@::@GetSharedHandle@+-- referring to a Direct3D 10 or 11 texture resource. It does not own a+-- reference to the underlying Direct3D resource, and will therefore+-- become invalid when all Vulkan memory objects and Direct3D resources+-- associated with it are destroyed.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@ specifies an NT+-- handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to+-- a Direct3D 12 heap resource. It owns a reference to the resources+-- used by the Direct3D heap.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@ specifies an NT+-- handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to+-- a Direct3D 12 committed resource. It owns a reference to the memory+-- used by the Direct3D resource.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ specifies a+-- host pointer returned by a host memory allocation command. It does+-- not own a reference to the underlying memory resource, and will+-- therefore become invalid if the host memory is freed.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@+-- specifies a host pointer to /host mapped foreign memory/. It does+-- not own a reference to the underlying memory resource, and will+-- therefore become invalid if the foreign memory is unmapped or+-- otherwise becomes no longer available.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@ is a file+-- descriptor for a Linux dma_buf. It owns a reference to the+-- underlying memory resource represented by its Vulkan memory object.+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@+-- specifies an @AHardwareBuffer@ object defined by the Android NDK.+-- See [Android Hardware+-- Buffers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer)+-- for more details of this handle type.+--+-- Some external memory handle types can only be shared within the same+-- underlying physical device and\/or the same driver version, as defined+-- in the following table:+--+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | Handle type | @VkPhysicalDeviceIDProperties@::@driverUUID@ | @VkPhysicalDeviceIDProperties@::@deviceUUID@ |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@ | Must match | Must match |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ | No restriction | No restriction |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@ | No restriction | No restriction |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@ | No restriction | No restriction |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@ | No restriction | No restriction |+-- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------++--+-- External memory handle types compatibility+--+-- __Note__+--+-- The above table does not restrict the drivers and devices with which+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ and+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@+-- /may/ be shared, as these handle types inherently mean memory that does+-- not come from the same device, as they import memory from the host or a+-- foreign device, respectively.+--+-- __Note__+--+-- Even though the above table does not restrict the drivers and devices+-- with which @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@ /may/ be+-- shared, query mechanisms exist in the Vulkan API that prevent the import+-- of incompatible dma-bufs (such as+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR')+-- and that prevent incompatible usage of dma-bufs (such as+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfoKHR'+-- and+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfoKHR').+--+-- = See Also+--+-- 'VkExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkImportMemoryFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkImportMemoryHostPointerInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkMemoryGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkMemoryGetWin32HandleInfoKHR',+-- 'VkPhysicalDeviceExternalBufferInfo',+-- 'VkPhysicalDeviceExternalImageFormatInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR' newtype VkExternalMemoryHandleTypeFlagBits = VkExternalMemoryHandleTypeFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -166,6 +303,43 @@ -- | VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an -- external memory handle type+--+-- = Description+--+-- - @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT@ specifies that+-- images or buffers created with the specified parameters and handle+-- type /must/ use the mechanisms defined in the+-- @{html_spec_relative}#VK_NV_dedicated_allocation@ extension to+-- create (or import) a dedicated allocation for the image or buffer.+--+-- - @VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT@ specifies that handles+-- of this type /can/ be exported from Vulkan memory objects.+--+-- - @VK_INTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT@ specifies that handles+-- of this type /can/ be imported as Vulkan memory objects.+--+-- Because their semantics in external APIs roughly align with that of an+-- image or buffer with a dedicated allocation in Vulkan, implementations+-- are /required/ to report @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT@+-- for the following external handle types:+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@+--+-- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@+-- for images only+--+-- Implementations /must/ not report+-- @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT@ for buffers with+-- external handle type+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@.+--+-- = See Also+--+-- 'VkExternalMemoryFeatureFlags' newtype VkExternalMemoryFeatureFlagBits = VkExternalMemoryFeatureFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -220,15 +394,69 @@ pattern VK_LUID_SIZE = 8 -- | vkGetPhysicalDeviceExternalBufferProperties - Query external handle -- types supported by buffers+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- buffer capabilities.+--+-- - @pExternalBufferInfo@ points to an instance of the+-- 'VkPhysicalDeviceExternalBufferInfo' structure, describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer'.+--+-- - @pExternalBufferProperties@ points to an instance of the+-- 'VkExternalBufferProperties' structure in which capabilities are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pExternalBufferInfo@ /must/ be a valid pointer to a valid+-- @VkPhysicalDeviceExternalBufferInfo@ structure+--+-- - @pExternalBufferProperties@ /must/ be a valid pointer to a+-- @VkExternalBufferProperties@ structure+--+-- = See Also+--+-- 'VkExternalBufferProperties',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceExternalBufferInfo' foreign import ccall "vkGetPhysicalDeviceExternalBufferProperties" vkGetPhysicalDeviceExternalBufferProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO () -- | VkExternalMemoryProperties - Structure specifying external memory handle -- type capabilities+--+-- = Description+--+-- @compatibleHandleTypes@ /must/ include at least @handleType@. Inclusion+-- of a handle type in @compatibleHandleTypes@ does not imply the values+-- returned in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2'+-- will be the same when+-- 'VkPhysicalDeviceExternalImageFormatInfo'::@handleType@ is set to that+-- type. The application is responsible for querying the capabilities of+-- all handle types intended for concurrent use in a single image and+-- intersecting them to obtain the compatible set of capabilities.+--+-- = See Also+--+-- 'VkExternalBufferProperties', 'VkExternalImageFormatProperties',+-- 'VkExternalMemoryFeatureFlags', 'VkExternalMemoryHandleTypeFlags' data VkExternalMemoryProperties = VkExternalMemoryProperties- { -- No documentation found for Nested "VkExternalMemoryProperties" "vkExternalMemoryFeatures"+ { -- | @externalMemoryFeatures@ is a bitmask of+ -- 'VkExternalMemoryFeatureFlagBits' specifying the features of+ -- @handleType@. vkExternalMemoryFeatures :: VkExternalMemoryFeatureFlags- , -- No documentation found for Nested "VkExternalMemoryProperties" "vkExportFromImportedHandleTypes"+ , -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'VkExternalMemoryHandleTypeFlagBits' specifying which types of imported+ -- handle @handleType@ /can/ be exported from. vkExportFromImportedHandleTypes :: VkExternalMemoryHandleTypeFlags- , -- No documentation found for Nested "VkExternalMemoryProperties" "vkCompatibleHandleTypes"+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'VkExternalMemoryHandleTypeFlagBits' specifying handle types which /can/+ -- be specified at the same time as @handleType@ when creating an image+ -- compatible with external memory. vkCompatibleHandleTypes :: VkExternalMemoryHandleTypeFlags } deriving (Eq, Show)@@ -244,12 +472,41 @@ *> poke (ptr `plusPtr` 8) (vkCompatibleHandleTypes (poked :: VkExternalMemoryProperties)) -- | VkPhysicalDeviceExternalImageFormatInfo - Structure specifying external -- image creation parameters+--+-- = Description+--+-- If @handleType@ is 0,+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'+-- will behave as if 'VkPhysicalDeviceExternalImageFormatInfo' was not+-- present, and 'VkExternalImageFormatProperties' will be ignored.+--+-- If @handleType@ is not compatible with the @format@, @type@, @tiling@,+-- @usage@, and @flags@ specified in+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',+-- then+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'+-- returns @VK_ERROR_FORMAT_NOT_SUPPORTED@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO@+--+-- - If @handleType@ is not @0@, @handleType@ /must/ be a valid+-- 'VkExternalMemoryHandleTypeFlagBits' value+--+-- = See Also+--+-- 'VkExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceExternalImageFormatInfo = VkPhysicalDeviceExternalImageFormatInfo- { -- No documentation found for Nested "VkPhysicalDeviceExternalImageFormatInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceExternalImageFormatInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceExternalImageFormatInfo" "vkHandleType"+ , -- | @handleType@ is a 'VkExternalMemoryHandleTypeFlagBits' value specifying+ -- the memory handle type that will be used with the memory associated with+ -- the image. vkHandleType :: VkExternalMemoryHandleTypeFlagBits } deriving (Eq, Show)@@ -265,12 +522,25 @@ *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkPhysicalDeviceExternalImageFormatInfo)) -- | VkExternalImageFormatProperties - Structure specifying supported -- external handle properties+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES@+--+-- = See Also+--+-- 'VkExternalMemoryProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExternalImageFormatProperties = VkExternalImageFormatProperties- { -- No documentation found for Nested "VkExternalImageFormatProperties" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalImageFormatProperties" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalImageFormatProperties" "vkExternalMemoryProperties"+ , -- | @externalMemoryProperties@ is an instance of the+ -- 'VkExternalMemoryProperties' structure specifying various capabilities+ -- of the external handle type when used with the specified image creation+ -- parameters. vkExternalMemoryProperties :: VkExternalMemoryProperties } deriving (Eq, Show)@@ -286,16 +556,51 @@ *> poke (ptr `plusPtr` 16) (vkExternalMemoryProperties (poked :: VkExternalImageFormatProperties)) -- | VkPhysicalDeviceExternalBufferInfo - Structure specifying buffer -- creation parameters+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @flags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateFlagBits' values+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Buffer.VkBufferUsageFlagBits' values+--+-- - @usage@ /must/ not be @0@+--+-- - @handleType@ /must/ be a valid 'VkExternalMemoryHandleTypeFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateFlags',+-- 'Graphics.Vulkan.Core10.Buffer.VkBufferUsageFlags',+-- 'VkExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceExternalBufferProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR' data VkPhysicalDeviceExternalBufferInfo = VkPhysicalDeviceExternalBufferInfo- { -- No documentation found for Nested "VkPhysicalDeviceExternalBufferInfo" "vkSType"+ { -- | @sType@ is the type of this structure vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceExternalBufferInfo" "vkPNext"+ , -- | @pNext@ is NULL or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceExternalBufferInfo" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateFlagBits' describing+ -- additional parameters of the buffer, corresponding to+ -- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo'::@flags@. vkFlags :: VkBufferCreateFlags- , -- No documentation found for Nested "VkPhysicalDeviceExternalBufferInfo" "vkUsage"+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Buffer.VkBufferUsageFlagBits' describing the+ -- intended usage of the buffer, corresponding to+ -- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo'::@usage@. vkUsage :: VkBufferUsageFlags- , -- No documentation found for Nested "VkPhysicalDeviceExternalBufferInfo" "vkHandleType"+ , -- | @handleType@ is a 'VkExternalMemoryHandleTypeFlagBits' value specifying+ -- the memory handle type that will be used with the memory associated with+ -- the buffer. vkHandleType :: VkExternalMemoryHandleTypeFlagBits } deriving (Eq, Show)@@ -315,12 +620,28 @@ *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkPhysicalDeviceExternalBufferInfo)) -- | VkExternalBufferProperties - Structure specifying supported external -- handle capabilities+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'VkExternalMemoryProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceExternalBufferProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR' data VkExternalBufferProperties = VkExternalBufferProperties- { -- No documentation found for Nested "VkExternalBufferProperties" "vkSType"+ { -- | @sType@ is the type of this structure vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalBufferProperties" "vkPNext"+ , -- | @pNext@ is NULL or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalBufferProperties" "vkExternalMemoryProperties"+ , -- | @externalMemoryProperties@ is an instance of the+ -- 'VkExternalMemoryProperties' structure specifying various capabilities+ -- of the external handle type when used with the specified buffer creation+ -- parameters. vkExternalMemoryProperties :: VkExternalMemoryProperties } deriving (Eq, Show)@@ -336,20 +657,96 @@ *> poke (ptr `plusPtr` 16) (vkExternalMemoryProperties (poked :: VkExternalBufferProperties)) -- | VkPhysicalDeviceIDProperties - Structure specifying IDs related to the -- physical device+--+-- = Description+--+-- @deviceUUID@ /must/ be immutable for a given device across instances,+-- processes, driver APIs, driver versions, and system reboots.+--+-- Applications /can/ compare the @driverUUID@ value across instance and+-- process boundaries, and /can/ make similar queries in external APIs to+-- determine whether they are capable of sharing memory objects and+-- resources using them with the device.+--+-- @deviceUUID@ and\/or @driverUUID@ /must/ be used to determine whether a+-- particular external object can be shared between driver components,+-- where such a restriction exists as defined in the compatibility table+-- for the particular object type:+--+-- - [External memory handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility)+--+-- - [External semaphore handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility)+--+-- - [External fence handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility)+--+-- If @deviceLUIDValid@ is @VK_FALSE@, the contents of @deviceLUID@ and+-- @deviceNodeMask@ are undefined. If @deviceLUIDValid@ is @VK_TRUE@ and+-- Vulkan is running on the Windows operating system, the contents of+-- @deviceLUID@ /can/ be cast to an @LUID@ object and /must/ be equal to+-- the locally unique identifier of a @IDXGIAdapter1@ object that+-- corresponds to @physicalDevice@. If @deviceLUIDValid@ is @VK_TRUE@,+-- @deviceNodeMask@ /must/ contain exactly one bit. If Vulkan is running on+-- an operating system that supports the Direct3D 12 API and+-- @physicalDevice@ corresponds to an individual device in a linked device+-- adapter, @deviceNodeMask@ identifies the Direct3D 12 node corresponding+-- to @physicalDevice@. Otherwise, @deviceNodeMask@ /must/ be @1@.+--+-- __Note__+--+-- Although they have identical descriptions,+-- 'VkPhysicalDeviceIDProperties'::@deviceUUID@ may differ from+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'::@pipelineCacheUUID@.+-- The former is intended to identify and correlate devices across API and+-- driver boundaries, while the latter is used to identify a compatible+-- device and driver combination to use when serializing and de-serializing+-- pipeline state.+--+-- __Note__+--+-- While 'VkPhysicalDeviceIDProperties'::@deviceUUID@ is specified to+-- remain consistent across driver versions and system reboots, it is not+-- intended to be usable as a serializable persistent identifier for a+-- device. It may change when a device is physically added to, removed+-- from, or moved to a different connector in a system while that system is+-- powered down. Further, there is no reasonable way to verify with+-- conformance testing that a given device retains the same UUID in a given+-- system across all driver versions supported in that system. While+-- implementations should make every effort to report consistent device+-- UUIDs across driver versions, applications should avoid relying on the+-- persistence of this value for uses other than identifying compatible+-- devices for external object sharing purposes.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES@+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceIDProperties = VkPhysicalDeviceIDProperties- { -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkDeviceUUID"+ , -- | @deviceUUID@ is an array of size @VK_UUID_SIZE@, containing 8-bit values+ -- that represent a universally unique identifier for the device. vkDeviceUUID :: Vector VK_UUID_SIZE Word8- , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkDriverUUID"+ , -- | @driverUUID@ is an array of size @VK_UUID_SIZE@, containing 8-bit values+ -- that represent a universally unique identifier for the driver build in+ -- use by the device. vkDriverUUID :: Vector VK_UUID_SIZE Word8- , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkDeviceLUID"+ , -- | @deviceLUID@ is an array of size @VK_LUID_SIZE@, containing 8-bit values+ -- that represent a locally unique identifier for the device. vkDeviceLUID :: Vector VK_LUID_SIZE Word8- , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkDeviceNodeMask"+ , -- | @deviceNodeMask@ is a bitfield identifying the node within a linked+ -- device adapter corresponding to the device. vkDeviceNodeMask :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "vkDeviceLUIDValid"+ , -- | @deviceLUIDValid@ is a boolean value that will be @VK_TRUE@ if+ -- @deviceLUID@ contains a valid LUID and @deviceNodeMask@ contains a valid+ -- node mask, and @VK_FALSE@ if they do not. vkDeviceLUIDValid :: VkBool32 } deriving (Eq, Show)@@ -373,7 +770,29 @@ *> poke (ptr `plusPtr` 60) (vkDeviceLUIDValid (poked :: VkPhysicalDeviceIDProperties)) -- | VkExternalMemoryHandleTypeFlags - Bitmask of -- VkExternalMemoryHandleTypeFlagBits+--+-- = Description+--+-- @VkExternalMemoryHandleTypeFlags@ is a bitmask type for setting a mask+-- of zero or more 'VkExternalMemoryHandleTypeFlagBits'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo',+-- 'VkExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo',+-- 'VkExternalMemoryProperties' type VkExternalMemoryHandleTypeFlags = VkExternalMemoryHandleTypeFlagBits -- | VkExternalMemoryFeatureFlags - Bitmask of -- VkExternalMemoryFeatureFlagBits+--+-- = Description+--+-- @VkExternalMemoryFeatureFlags@ is a bitmask type for setting a mask of+-- zero or more 'VkExternalMemoryFeatureFlagBits'.+--+-- = See Also+--+-- 'VkExternalMemoryFeatureFlagBits', 'VkExternalMemoryProperties' type VkExternalMemoryFeatureFlags = VkExternalMemoryFeatureFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs view
@@ -55,6 +55,20 @@ -- | VkSemaphoreImportFlagBits - Bitmask specifying additional parameters of -- semaphore payload import+--+-- = Description+--+-- These bits have the following meanings:+--+-- - @VK_SEMAPHORE_IMPORT_TEMPORARY_BIT@ specifies that the semaphore+-- payload will be imported only temporarily, as described in+-- [Importing Semaphore+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing),+-- regardless of the permanence of @handleType@.+--+-- = See Also+--+-- 'VkSemaphoreImportFlags' newtype VkSemaphoreImportFlagBits = VkSemaphoreImportFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -80,12 +94,35 @@ pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = VkStructureType 1000077000 -- | VkExportSemaphoreCreateInfo - Structure specifying handle types that can -- be exported from a semaphore+--+-- == Valid Usage+--+-- - The bits in @handleTypes@ /must/ be supported and compatible, as+-- reported by+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO@+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportSemaphoreCreateInfo = VkExportSemaphoreCreateInfo- { -- No documentation found for Nested "VkExportSemaphoreCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportSemaphoreCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportSemaphoreCreateInfo" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+ -- specifying one or more semaphore handle types the application /can/+ -- export from the resulting semaphore. The application /can/ request+ -- multiple handle types for the same semaphore. vkHandleTypes :: VkExternalSemaphoreHandleTypeFlags } deriving (Eq, Show)@@ -100,4 +137,15 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportSemaphoreCreateInfo)) *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExportSemaphoreCreateInfo)) -- | VkSemaphoreImportFlags - Bitmask of VkSemaphoreImportFlagBits+--+-- = Description+--+-- @VkSemaphoreImportFlags@ is a bitmask type for setting a mask of zero or+-- more 'VkSemaphoreImportFlagBits'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkImportSemaphoreFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkImportSemaphoreWin32HandleInfoKHR',+-- 'VkSemaphoreImportFlagBits' type VkSemaphoreImportFlags = VkSemaphoreImportFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs view
@@ -71,6 +71,86 @@ -- | VkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external -- semaphore handle types+--+-- = Description+--+-- - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT@ specifies a POSIX+-- file descriptor handle that has only limited valid usage outside of+-- Vulkan and other compatible APIs. It /must/ be compatible with the+-- POSIX system calls @dup@, @dup2@, @close@, and the non-standard+-- system call @dup3@. Additionally, it /must/ be transportable over a+-- socket using an @SCM_RIGHTS@ control message. It owns a reference to+-- the underlying synchronization primitive represented by its Vulkan+-- semaphore object.+--+-- - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ specifies an NT+-- handle that has only limited valid usage outside of Vulkan and other+-- compatible APIs. It /must/ be compatible with the functions+-- @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,+-- @GetHandleInformation@, and @SetHandleInformation@. It owns a+-- reference to the underlying synchronization primitive represented by+-- its Vulkan semaphore object.+--+-- - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ specifies a+-- global share handle that has only limited valid usage outside of+-- Vulkan and other compatible APIs. It is not compatible with any+-- native APIs. It does not own a reference to the underlying+-- synchronization primitive represented its Vulkan semaphore object,+-- and will therefore become invalid when all Vulkan semaphore objects+-- associated with it are destroyed.+--+-- - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@ specifies an NT+-- handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to+-- a Direct3D 12 fence. It owns a reference to the underlying+-- synchronization primitive associated with the Direct3D fence.+--+-- - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@ specifies a POSIX+-- file descriptor handle to a Linux Sync File or Android Fence object.+-- It can be used with any native API accepting a valid sync file or+-- fence as input. It owns a reference to the underlying+-- synchronization primitive associated with the file descriptor.+-- Implementations which support importing this handle type /must/+-- accept any type of sync or fence FD supported by the native system+-- they are running on.+--+-- __Note__+--+-- Handles of type @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@+-- generated by the implementation may represent either Linux Sync Files or+-- Android Fences at the implementation’s discretion. Applications /should/+-- only use operations defined for both types of file descriptors, unless+-- they know via means external to Vulkan the type of the file descriptor,+-- or are prepared to deal with the system-defined operation failures+-- resulting from using the wrong type.+--+-- Some external semaphore handle types can only be shared within the same+-- underlying physical device and\/or the same driver version, as defined+-- in the following table:+--+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | Handle type | @VkPhysicalDeviceIDProperties@::@driverUUID@ | @VkPhysicalDeviceIDProperties@::@deviceUUID@ |+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Must match | Must match |+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Must match | Must match |+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Must match | Must match |+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@ | Must match | Must match |+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@ | No restriction | No restriction |+-- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------++--+-- External semaphore handle types compatibility+--+-- = See Also+--+-- 'VkExternalSemaphoreHandleTypeFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkImportSemaphoreFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkImportSemaphoreWin32HandleInfoKHR',+-- 'VkPhysicalDeviceExternalSemaphoreInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkSemaphoreGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkSemaphoreGetWin32HandleInfoKHR' newtype VkExternalSemaphoreHandleTypeFlagBits = VkExternalSemaphoreHandleTypeFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -119,6 +199,10 @@ -- | VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an -- external semaphore handle type+--+-- = See Also+--+-- 'VkExternalSemaphoreFeatureFlags' newtype VkExternalSemaphoreFeatureFlagBits = VkExternalSemaphoreFeatureFlagBits VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -138,11 +222,13 @@ ) ) --- No documentation found for Nested "VkExternalSemaphoreFeatureFlagBits" "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"+-- | @VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT@ specifies that handles of+-- this type /can/ be exported from Vulkan semaphore objects. pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT :: VkExternalSemaphoreFeatureFlagBits pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = VkExternalSemaphoreFeatureFlagBits 0x00000001 --- No documentation found for Nested "VkExternalSemaphoreFeatureFlagBits" "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"+-- | @VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT@ specifies that handles of+-- this type /can/ be imported as Vulkan semaphore objects. pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT :: VkExternalSemaphoreFeatureFlagBits pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = VkExternalSemaphoreFeatureFlagBits 0x00000002 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"@@ -153,15 +239,64 @@ pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = VkStructureType 1000076001 -- | vkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying -- external semaphore handle capabilities.+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- semaphore capabilities.+--+-- - @pExternalSemaphoreInfo@ points to an instance of the+-- 'VkPhysicalDeviceExternalSemaphoreInfo' structure, describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore'.+--+-- - @pExternalSemaphoreProperties@ points to an instance of the+-- 'VkExternalSemaphoreProperties' structure in which capabilities are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pExternalSemaphoreInfo@ /must/ be a valid pointer to a valid+-- @VkPhysicalDeviceExternalSemaphoreInfo@ structure+--+-- - @pExternalSemaphoreProperties@ /must/ be a valid pointer to a+-- @VkExternalSemaphoreProperties@ structure+--+-- = See Also+--+-- 'VkExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceExternalSemaphoreInfo' foreign import ccall "vkGetPhysicalDeviceExternalSemaphoreProperties" vkGetPhysicalDeviceExternalSemaphoreProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO () -- | VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore -- creation parameters.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @handleType@ /must/ be a valid+-- 'VkExternalSemaphoreHandleTypeFlagBits' value+--+-- = See Also+--+-- 'VkExternalSemaphoreHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR' data VkPhysicalDeviceExternalSemaphoreInfo = VkPhysicalDeviceExternalSemaphoreInfo- { -- No documentation found for Nested "VkPhysicalDeviceExternalSemaphoreInfo" "vkSType"+ { -- | @sType@ is the type of this structure vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceExternalSemaphoreInfo" "vkPNext"+ , -- | @pNext@ is NULL or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceExternalSemaphoreInfo" "vkHandleType"+ , -- | @handleType@ is a 'VkExternalSemaphoreHandleTypeFlagBits' value+ -- specifying the external semaphore handle type for which capabilities+ -- will be returned. vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits } deriving (Eq, Show)@@ -177,16 +312,42 @@ *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkPhysicalDeviceExternalSemaphoreInfo)) -- | VkExternalSemaphoreProperties - Structure describing supported external -- semaphore handle features+--+-- = Description+--+-- If @handleType@ is not supported by the implementation, then+-- 'VkExternalSemaphoreProperties'::@externalSemaphoreFeatures@ will be set+-- to zero.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'VkExternalSemaphoreFeatureFlags', 'VkExternalSemaphoreHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR' data VkExternalSemaphoreProperties = VkExternalSemaphoreProperties- { -- No documentation found for Nested "VkExternalSemaphoreProperties" "vkSType"+ { -- No documentation found for Nested "VkExternalSemaphoreProperties" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalSemaphoreProperties" "vkPNext"+ , -- No documentation found for Nested "VkExternalSemaphoreProperties" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalSemaphoreProperties" "vkExportFromImportedHandleTypes"+ , -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'VkExternalSemaphoreHandleTypeFlagBits' specifying which types of+ -- imported handle @handleType@ /can/ be exported from. vkExportFromImportedHandleTypes :: VkExternalSemaphoreHandleTypeFlags- , -- No documentation found for Nested "VkExternalSemaphoreProperties" "vkCompatibleHandleTypes"+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'VkExternalSemaphoreHandleTypeFlagBits' specifying handle types which+ -- /can/ be specified at the same time as @handleType@ when creating a+ -- semaphore. vkCompatibleHandleTypes :: VkExternalSemaphoreHandleTypeFlags- , -- No documentation found for Nested "VkExternalSemaphoreProperties" "vkExternalSemaphoreFeatures"+ , -- | @externalSemaphoreFeatures@ is a bitmask of+ -- 'VkExternalSemaphoreFeatureFlagBits' describing the features of+ -- @handleType@. vkExternalSemaphoreFeatures :: VkExternalSemaphoreFeatureFlags } deriving (Eq, Show)@@ -206,7 +367,26 @@ *> poke (ptr `plusPtr` 24) (vkExternalSemaphoreFeatures (poked :: VkExternalSemaphoreProperties)) -- | VkExternalSemaphoreHandleTypeFlags - Bitmask of -- VkExternalSemaphoreHandleTypeFlagBits+--+-- = Description+--+-- @VkExternalSemaphoreHandleTypeFlags@ is a bitmask type for setting a+-- mask of zero or more 'VkExternalSemaphoreHandleTypeFlagBits'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo',+-- 'VkExternalSemaphoreHandleTypeFlagBits', 'VkExternalSemaphoreProperties' type VkExternalSemaphoreHandleTypeFlags = VkExternalSemaphoreHandleTypeFlagBits -- | VkExternalSemaphoreFeatureFlags - Bitmask of -- VkExternalSemaphoreFeatureFlagBitsKHR+--+-- = Description+--+-- @VkExternalSemaphoreFeatureFlags@ is a bitmask type for setting a mask+-- of zero or more 'VkExternalSemaphoreFeatureFlagBits'.+--+-- = See Also+--+-- 'VkExternalSemaphoreFeatureFlagBits', 'VkExternalSemaphoreProperties' type VkExternalSemaphoreFeatureFlags = VkExternalSemaphoreFeatureFlagBits
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs view
@@ -70,20 +70,128 @@ pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = VkStructureType 1000146004 -- | vkGetBufferMemoryRequirements2 - Returns the memory requirements for -- specified Vulkan object+--+-- = Parameters+--+-- - @device@ is the logical device that owns the buffer.+--+-- - @pInfo@ is a pointer to an instance of the+-- @VkBufferMemoryRequirementsInfo2@ structure containing parameters+-- required for the memory requirements query.+--+-- - @pMemoryRequirements@ points to an instance of the+-- 'VkMemoryRequirements2' structure in which the memory requirements+-- of the buffer object are returned.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- @VkBufferMemoryRequirementsInfo2@ structure+--+-- - @pMemoryRequirements@ /must/ be a valid pointer to a+-- @VkMemoryRequirements2@ structure+--+-- = See Also+--+-- 'VkBufferMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkMemoryRequirements2' foreign import ccall "vkGetBufferMemoryRequirements2" vkGetBufferMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO () -- | vkGetImageMemoryRequirements2 - Returns the memory requirements for -- specified Vulkan object+--+-- = Parameters+--+-- - @device@ is the logical device that owns the image.+--+-- - @pInfo@ is a pointer to an instance of the+-- @VkImageMemoryRequirementsInfo2@ structure containing parameters+-- required for the memory requirements query.+--+-- - @pMemoryRequirements@ points to an instance of the+-- 'VkMemoryRequirements2' structure in which the memory requirements+-- of the image object are returned.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- @VkImageMemoryRequirementsInfo2@ structure+--+-- - @pMemoryRequirements@ /must/ be a valid pointer to a+-- @VkMemoryRequirements2@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkImageMemoryRequirementsInfo2', 'VkMemoryRequirements2' foreign import ccall "vkGetImageMemoryRequirements2" vkGetImageMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO () -- | vkGetImageSparseMemoryRequirements2 - Query the memory requirements for -- a sparse image+--+-- = Parameters+--+-- - @device@ is the logical device that owns the image.+--+-- - @pInfo@ is a pointer to an instance of the+-- @VkImageSparseMemoryRequirementsInfo2@ structure containing+-- parameters required for the memory requirements query.+--+-- - @pSparseMemoryRequirementCount@ is a pointer to an integer related+-- to the number of sparse memory requirements available or queried, as+-- described below.+--+-- - @pSparseMemoryRequirements@ is either @NULL@ or a pointer to an+-- array of @VkSparseImageMemoryRequirements2@ structures.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- @VkImageSparseMemoryRequirementsInfo2@ structure+--+-- - @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pSparseMemoryRequirementCount@ is not+-- @0@, and @pSparseMemoryRequirements@ is not @NULL@,+-- @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of+-- @pSparseMemoryRequirementCount@ @VkSparseImageMemoryRequirements2@+-- structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkImageSparseMemoryRequirementsInfo2',+-- 'VkSparseImageMemoryRequirements2' foreign import ccall "vkGetImageSparseMemoryRequirements2" vkGetImageSparseMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO () -- | VkBufferMemoryRequirementsInfo2 - (None)+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @buffer@ /must/ be a valid @VkBuffer@ handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetBufferMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR' data VkBufferMemoryRequirementsInfo2 = VkBufferMemoryRequirementsInfo2- { -- No documentation found for Nested "VkBufferMemoryRequirementsInfo2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBufferMemoryRequirementsInfo2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBufferMemoryRequirementsInfo2" "vkBuffer"+ , -- | @buffer@ is the buffer to query. vkBuffer :: VkBuffer } deriving (Eq, Show)@@ -98,12 +206,53 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferMemoryRequirementsInfo2)) *> poke (ptr `plusPtr` 16) (vkBuffer (poked :: VkBufferMemoryRequirementsInfo2)) -- | VkImageMemoryRequirementsInfo2 - (None)+--+-- == Valid Usage+--+-- - If @image@ was created with a /multi-planar/ format and the+-- @VK_IMAGE_CREATE_DISJOINT_BIT@ flag, there /must/ be a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+-- in the @pNext@ chain of the 'VkImageMemoryRequirementsInfo2'+-- structure+--+-- - If @image@ was not created with the @VK_IMAGE_CREATE_DISJOINT_BIT@+-- flag, there /must/ not be a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+-- in the @pNext@ chain of the 'VkImageMemoryRequirementsInfo2'+-- structure+--+-- - If @image@ was created with a single-plane format, there /must/ not+-- be a+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+-- in the @pNext@ chain of the 'VkImageMemoryRequirementsInfo2'+-- structure+--+-- - If @image@ was created with the+-- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID+-- external memory handle type, then @image@ /must/ be bound to memory.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'+--+-- - @image@ /must/ be a valid @VkImage@ handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR' data VkImageMemoryRequirementsInfo2 = VkImageMemoryRequirementsInfo2- { -- No documentation found for Nested "VkImageMemoryRequirementsInfo2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageMemoryRequirementsInfo2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageMemoryRequirementsInfo2" "vkImage"+ , -- | @image@ is the image to query. vkImage :: VkImage } deriving (Eq, Show)@@ -118,12 +267,28 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageMemoryRequirementsInfo2)) *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkImageMemoryRequirementsInfo2)) -- | VkImageSparseMemoryRequirementsInfo2 - (None)+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @image@ /must/ be a valid @VkImage@ handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetImageSparseMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR' data VkImageSparseMemoryRequirementsInfo2 = VkImageSparseMemoryRequirementsInfo2- { -- No documentation found for Nested "VkImageSparseMemoryRequirementsInfo2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageSparseMemoryRequirementsInfo2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageSparseMemoryRequirementsInfo2" "vkImage"+ , -- | @image@ is the image to query. vkImage :: VkImage } deriving (Eq, Show)@@ -138,12 +303,30 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageSparseMemoryRequirementsInfo2)) *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkImageSparseMemoryRequirementsInfo2)) -- | VkMemoryRequirements2 - Structure specifying memory requirements+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetBufferMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR',+-- 'vkGetImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR' data VkMemoryRequirements2 = VkMemoryRequirements2- { -- No documentation found for Nested "VkMemoryRequirements2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryRequirements2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryRequirements2" "vkMemoryRequirements"+ , -- | @memoryRequirements@ is a structure of type+ -- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'+ -- describing the memory requirements of the resource. vkMemoryRequirements :: VkMemoryRequirements } deriving (Eq, Show)@@ -158,12 +341,28 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryRequirements2)) *> poke (ptr `plusPtr` 16) (vkMemoryRequirements (poked :: VkMemoryRequirements2)) -- | VkSparseImageMemoryRequirements2 - (None)+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryRequirements',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetImageSparseMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR' data VkSparseImageMemoryRequirements2 = VkSparseImageMemoryRequirements2- { -- No documentation found for Nested "VkSparseImageMemoryRequirements2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSparseImageMemoryRequirements2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSparseImageMemoryRequirements2" "vkMemoryRequirements"+ , -- | @memoryRequirements@ is a structure of type+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryRequirements'+ -- describing the memory requirements of the sparse image. vkMemoryRequirements :: VkSparseImageMemoryRequirements } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs view
@@ -101,32 +101,317 @@ pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 :: VkStructureType pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = VkStructureType 1000059008 -- | vkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- supported features.+--+-- - @pFeatures@ is a pointer to a 'VkPhysicalDeviceFeatures2' structure+-- in which the physical device features are returned.+--+-- = Description+--+-- Each structure in @pFeatures@ and its @pNext@ chain contain members+-- corresponding to fine-grained features. @vkGetPhysicalDeviceFeatures2@+-- writes each member to a boolean value indicating whether that feature is+-- supported.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pFeatures@ /must/ be a valid pointer to a+-- @VkPhysicalDeviceFeatures2@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceFeatures2' foreign import ccall "vkGetPhysicalDeviceFeatures2" vkGetPhysicalDeviceFeatures2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO () -- | vkGetPhysicalDeviceProperties2 - Returns properties of a physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the handle to the physical device whose+-- properties will be queried.+--+-- - @pProperties@ points to an instance of the+-- 'VkPhysicalDeviceProperties2' structure, that will be filled with+-- returned information.+--+-- = Description+--+-- Each structure in @pProperties@ and its @pNext@ chain contain members+-- corresponding to properties or implementation-dependent limits.+-- @vkGetPhysicalDeviceProperties2@ writes each member to a value+-- indicating the value of that property or limit.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pProperties@ /must/ be a valid pointer to a+-- @VkPhysicalDeviceProperties2@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceProperties2' foreign import ccall "vkGetPhysicalDeviceProperties2" vkGetPhysicalDeviceProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO () -- | vkGetPhysicalDeviceFormatProperties2 - Lists physical device’s format -- capabilities+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- format properties.+--+-- - @format@ is the format whose properties are queried.+--+-- - @pFormatProperties@ is a pointer to a 'VkFormatProperties2'+-- structure in which physical device properties for @format@ are+-- returned.+--+-- = Description+--+-- @vkGetPhysicalDeviceFormatProperties2@ behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- - @pFormatProperties@ /must/ be a valid pointer to a+-- @VkFormatProperties2@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties2',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkGetPhysicalDeviceFormatProperties2" vkGetPhysicalDeviceFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO () -- | vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device’s -- image format capabilities+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- image capabilities.+--+-- - @pImageFormatInfo@ points to an instance of the+-- 'VkPhysicalDeviceImageFormatInfo2' structure, describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Image.vkCreateImage'.+--+-- - @pImageFormatProperties@ points to an instance of the+-- 'VkImageFormatProperties2' structure in which capabilities are+-- returned.+--+-- = Description+--+-- @vkGetPhysicalDeviceImageFormatProperties2@ behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage+--+-- - If the @pNext@ chain of @pImageFormatProperties@ contains an+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferUsageANDROID',+-- the @pNext@ chain of @pImageFormatInfo@ /must/ contain an instance+-- of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'+-- with @handleType@ set to+-- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pImageFormatInfo@ /must/ be a valid pointer to a valid+-- @VkPhysicalDeviceImageFormatInfo2@ structure+--+-- - @pImageFormatProperties@ /must/ be a valid pointer to a+-- @VkImageFormatProperties2@ structure+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- - @VK_ERROR_FORMAT_NOT_SUPPORTED@+--+-- = See Also+--+-- 'VkImageFormatProperties2',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceImageFormatInfo2' foreign import ccall "vkGetPhysicalDeviceImageFormatProperties2" vkGetPhysicalDeviceImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult -- | vkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the -- queues of the specified physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the handle to the physical device whose+-- properties will be queried.+--+-- - @pQueueFamilyPropertyCount@ is a pointer to an integer related to+-- the number of queue families available or queried, as described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'.+--+-- - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array+-- of 'VkQueueFamilyProperties2' structures.+--+-- = Description+--+-- @vkGetPhysicalDeviceQueueFamilyProperties2@ behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,+-- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@+-- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@+-- @VkQueueFamilyProperties2@ structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkQueueFamilyProperties2' foreign import ccall "vkGetPhysicalDeviceQueueFamilyProperties2" vkGetPhysicalDeviceQueueFamilyProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO () -- | vkGetPhysicalDeviceMemoryProperties2 - Reports memory information for -- the specified physical device+--+-- = Parameters+--+-- - @physicalDevice@ is the handle to the device to query.+--+-- - @pMemoryProperties@ points to an instance of+-- @VkPhysicalDeviceMemoryProperties2@ structure in which the+-- properties are returned.+--+-- = Description+--+-- @vkGetPhysicalDeviceMemoryProperties2@ behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceMemoryProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pMemoryProperties@ /must/ be a valid pointer to a+-- @VkPhysicalDeviceMemoryProperties2@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceMemoryProperties2' foreign import ccall "vkGetPhysicalDeviceMemoryProperties2" vkGetPhysicalDeviceMemoryProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO () -- | vkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of -- an image format applied to sparse images+--+-- = Parameters+--+-- - @physicalDevice@ is the physical device from which to query the+-- sparse image capabilities.+--+-- - @pFormatInfo@ is a pointer to a structure of type+-- 'VkPhysicalDeviceSparseImageFormatInfo2' containing input parameters+-- to the command.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- sparse format properties available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'VkSparseImageFormatProperties2' structures.+--+-- = Description+--+-- @vkGetPhysicalDeviceSparseImageFormatProperties2@ behaves identically to+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties',+-- with the ability to return extended information by adding extension+-- structures to the @pNext@ chain of its @pProperties@ parameter.+--+-- == Valid Usage (Implicit)+--+-- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+--+-- - @pFormatInfo@ /must/ be a valid pointer to a valid+-- @VkPhysicalDeviceSparseImageFormatInfo2@ structure+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ @VkSparseImageFormatProperties2@+-- structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',+-- 'VkPhysicalDeviceSparseImageFormatInfo2',+-- 'VkSparseImageFormatProperties2' foreign import ccall "vkGetPhysicalDeviceSparseImageFormatProperties2" vkGetPhysicalDeviceSparseImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO () -- | VkPhysicalDeviceFeatures2 - Structure describing the fine-grained -- features that can be supported by an implementation+--+-- = Members+--+-- The @VkPhysicalDeviceFeatures2@ structure is defined as:+--+-- = Description+--+-- - @sType@ is the type of this structure.+--+-- - @pNext@ is @NULL@ or a pointer to an extension-specific structure.+--+-- - @features@ is a structure of type+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures'+-- describing the fine-grained features of the Vulkan 1.0 API.+--+-- The @pNext@ chain of this structure is used to extend the structure with+-- features defined by extensions. This structure /can/ be used in+-- 'vkGetPhysicalDeviceFeatures2' or /can/ be in the @pNext@ chain of a+-- 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo' structure, in which+-- case it controls which features are enabled in the device in lieu of+-- @pEnabledFeatures@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2KHR' data VkPhysicalDeviceFeatures2 = VkPhysicalDeviceFeatures2- { -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "vkFeatures"+ , -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "features" vkFeatures :: VkPhysicalDeviceFeatures } deriving (Eq, Show)@@ -142,12 +427,55 @@ *> poke (ptr `plusPtr` 16) (vkFeatures (poked :: VkPhysicalDeviceFeatures2)) -- | VkPhysicalDeviceProperties2 - Structure specifying physical device -- properties+--+-- = Description+--+-- The @pNext@ chain of this structure is used to extend the structure with+-- properties defined by extensions.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkPhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceIDProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkPhysicalDeviceMaintenance3Properties',+-- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.VkPhysicalDevicePushDescriptorPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties.VkPhysicalDeviceShaderCorePropertiesAMD',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup.VkPhysicalDeviceSubgroupProperties',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2KHR' data VkPhysicalDeviceProperties2 = VkPhysicalDeviceProperties2- { -- No documentation found for Nested "VkPhysicalDeviceProperties2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceProperties2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceProperties2" "vkProperties"+ , -- | @properties@ is a structure of type+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceProperties'+ -- describing the properties of the physical device. This structure is+ -- written with the same values as if it were written by+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceProperties'. vkProperties :: VkPhysicalDeviceProperties } deriving (Eq, Show)@@ -162,12 +490,27 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceProperties2)) *> poke (ptr `plusPtr` 16) (vkProperties (poked :: VkPhysicalDeviceProperties2)) -- | VkFormatProperties2 - Structure specifying image format properties+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkFormatProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2KHR' data VkFormatProperties2 = VkFormatProperties2- { -- No documentation found for Nested "VkFormatProperties2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkFormatProperties2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkFormatProperties2" "vkFormatProperties"+ , -- | @formatProperties@ is a structure of type+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkFormatProperties'+ -- describing features supported by the requested format. vkFormatProperties :: VkFormatProperties } deriving (Eq, Show)@@ -183,12 +526,55 @@ *> poke (ptr `plusPtr` 16) (vkFormatProperties (poked :: VkFormatProperties2)) -- | VkImageFormatProperties2 - Structure specifying a image format -- properties+--+-- = Description+--+-- If the combination of parameters to+-- @vkGetPhysicalDeviceImageFormatProperties2@ is not supported by the+-- implementation for use in 'Graphics.Vulkan.Core10.Image.vkCreateImage',+-- then all members of @imageFormatProperties@ will be filled with zero.+--+-- __Note__+--+-- Filling @imageFormatProperties@ 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. This exeption only applies to+-- @imageFormatProperties@, not @sType@, @pNext@, or any structures chained+-- from @pNext@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2@+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferUsageANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionImageFormatProperties',+-- or+-- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.VkTextureLODGatherFormatPropertiesAMD'+--+-- - Each @sType@ member in the @pNext@ chain /must/ be unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageFormatProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR' data VkImageFormatProperties2 = VkImageFormatProperties2- { -- No documentation found for Nested "VkImageFormatProperties2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageFormatProperties2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The+ -- @pNext@ chain of @VkImageFormatProperties2@ is used to allow the+ -- specification of additional capabilities to be returned from+ -- @vkGetPhysicalDeviceImageFormatProperties2@. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageFormatProperties2" "vkImageFormatProperties"+ , -- | @imageFormatProperties@ is an instance of a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageFormatProperties'+ -- structure in which capabilities are returned. vkImageFormatProperties :: VkImageFormatProperties } deriving (Eq, Show)@@ -204,20 +590,81 @@ *> poke (ptr `plusPtr` 16) (vkImageFormatProperties (poked :: VkImageFormatProperties2)) -- | VkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation -- parameters+--+-- = Description+--+-- The members of @VkPhysicalDeviceImageFormatInfo2@ correspond to the+-- arguments to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',+-- with @sType@ and @pNext@ added for extensibility.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- - @type@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value+--+-- - @tiling@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - @flags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkFormat',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlags',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR' data VkPhysicalDeviceImageFormatInfo2 = VkPhysicalDeviceImageFormatInfo2- { -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The+ -- @pNext@ chain of @VkPhysicalDeviceImageFormatInfo2@ is used to provide+ -- additional image parameters to+ -- @vkGetPhysicalDeviceImageFormatProperties2@. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkFormat"+ , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value indicating+ -- the image format, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@format@. vkFormat :: VkFormat- , -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkType"+ , -- | @type@ is a 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'+ -- value indicating the image type, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@imageType@. vkType :: VkImageType- , -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkTiling"+ , -- | @tiling@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value+ -- indicating the image tiling, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@tiling@. vkTiling :: VkImageTiling- , -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkUsage"+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+ -- indicating the intended usage of the image, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@usage@. vkUsage :: VkImageUsageFlags- , -- No documentation found for Nested "VkPhysicalDeviceImageFormatInfo2" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'+ -- indicating additional parameters of the image, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@. vkFlags :: VkImageCreateFlags } deriving (Eq, Show)@@ -241,12 +688,28 @@ *> poke (ptr `plusPtr` 32) (vkFlags (poked :: VkPhysicalDeviceImageFormatInfo2)) -- | VkQueueFamilyProperties2 - Structure providing information about a queue -- family+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceQueueFamilyProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2KHR' data VkQueueFamilyProperties2 = VkQueueFamilyProperties2- { -- No documentation found for Nested "VkQueueFamilyProperties2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkQueueFamilyProperties2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkQueueFamilyProperties2" "vkQueueFamilyProperties"+ , -- | @queueFamilyProperties@ is a structure of type+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'+ -- which is populated with the same values as in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'. vkQueueFamilyProperties :: VkQueueFamilyProperties } deriving (Eq, Show)@@ -262,12 +725,29 @@ *> poke (ptr `plusPtr` 16) (vkQueueFamilyProperties (poked :: VkQueueFamilyProperties2)) -- | VkPhysicalDeviceMemoryProperties2 - Structure specifying physical device -- memory properties+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceMemoryProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2KHR' data VkPhysicalDeviceMemoryProperties2 = VkPhysicalDeviceMemoryProperties2- { -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMemoryProperties2" "vkMemoryProperties"+ , -- | @memoryProperties@ is a structure of type+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties'+ -- which is populated with the same values as in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceMemoryProperties'. vkMemoryProperties :: VkPhysicalDeviceMemoryProperties } deriving (Eq, Show)@@ -283,12 +763,29 @@ *> poke (ptr `plusPtr` 16) (vkMemoryProperties (poked :: VkPhysicalDeviceMemoryProperties2)) -- | VkSparseImageFormatProperties2 - Structure specifying sparse image -- format properties+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceSparseImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR' data VkSparseImageFormatProperties2 = VkSparseImageFormatProperties2- { -- No documentation found for Nested "VkSparseImageFormatProperties2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSparseImageFormatProperties2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSparseImageFormatProperties2" "vkProperties"+ , -- | @properties@ is a structure of type+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties'+ -- which is populated with the same values as in+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'. vkProperties :: VkSparseImageFormatProperties } deriving (Eq, Show)@@ -304,20 +801,67 @@ *> poke (ptr `plusPtr` 16) (vkProperties (poked :: VkSparseImageFormatProperties2)) -- | VkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse -- image format inputs+--+-- == Valid Usage+--+-- - @samples@ /must/ be a bit value that is set in+-- @VkImageFormatProperties@::@sampleCounts@ returned by+-- @vkGetPhysicalDeviceImageFormatProperties@ with @format@, @type@,+-- @tiling@, and @usage@ equal to those in this command and @flags@+-- equal to the value that is set in @VkImageCreateInfo@::@flags@ when+-- the image is created+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2@+--+-- - @pNext@ /must/ be @NULL@+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- - @type@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value+--+-- - @samples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'+-- value+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - @tiling@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkFormat',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetPhysicalDeviceSparseImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR' data VkPhysicalDeviceSparseImageFormatInfo2 = VkPhysicalDeviceSparseImageFormatInfo2- { -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkFormat"+ , -- | @format@ is the image format. vkFormat :: VkFormat- , -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkType"+ , -- | @type@ is the dimensionality of image. vkType :: VkImageType- , -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkSamples"+ , -- | @samples@ is the number of samples per texel as defined in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'. vkSamples :: VkSampleCountFlagBits- , -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkUsage"+ , -- | @usage@ is a bitmask describing the intended usage of the image. vkUsage :: VkImageUsageFlags- , -- No documentation found for Nested "VkPhysicalDeviceSparseImageFormatInfo2" "vkTiling"+ , -- | @tiling@ is the tiling arrangement of the data elements in memory. vkTiling :: VkImageTiling } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs view
@@ -59,6 +59,16 @@ -- ** VkCommandPoolTrimFlags -- | VkCommandPoolTrimFlags - Reserved for future use+--+-- = Description+--+-- @VkCommandPoolTrimFlags@ is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'vkTrimCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.vkTrimCommandPoolKHR' newtype VkCommandPoolTrimFlags = VkCommandPoolTrimFlags VkFlags deriving (Eq, Ord, Storable, Bits, FiniteBits) @@ -90,4 +100,75 @@ pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT :: VkFormatFeatureFlagBits pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT = VkFormatFeatureFlagBits 0x00008000 -- | vkTrimCommandPool - Trim a command pool+--+-- = Parameters+--+-- - @device@ is the logical device that owns the command pool.+--+-- - @commandPool@ is the command pool to trim.+--+-- - @flags@ is reserved for future use.+--+-- = Description+--+-- Trimming a command pool recycles unused memory from the command pool+-- back to the system. Command buffers allocated from the pool are not+-- affected by the command.+--+-- __Note__+--+-- This command provides applications with some control over the internal+-- memory allocations used by command pools.+--+-- Unused memory normally arises from command buffers that have been+-- recorded and later reset, such that they are no longer using the memory.+-- On reset, a command buffer can return memory to its command pool, but+-- the only way to release memory from a command pool to the system+-- requires calling+-- 'Graphics.Vulkan.Core10.CommandPool.vkResetCommandPool', which cannot be+-- executed while any command buffers from that pool are still in use.+-- Subsequent recording operations into command buffers will re-use this+-- memory but since total memory requirements fluctuate over time, unused+-- memory can accumulate.+--+-- In this situation, trimming a command pool /may/ be useful to return+-- unused memory back to the system, returning the total outstanding memory+-- allocated by the pool back to a more “average” value.+--+-- Implementations utilize many internal allocation strategies that make it+-- impossible to guarantee that all unused memory is released back to the+-- system. For instance, an implementation of a command pool /may/ involve+-- allocating memory in bulk from the system and sub-allocating from that+-- memory. In such an implementation any live command buffer that holds a+-- reference to a bulk allocation would prevent that allocation from being+-- freed, even if only a small proportion of the bulk allocation is in use.+--+-- In most cases trimming will result in a reduction in allocated but+-- unused memory, but it does not guarantee the “ideal” behaviour.+--+-- Trimming /may/ be an expensive operation, and /should/ not be called+-- frequently. Trimming /should/ be treated as a way to relieve memory+-- pressure after application-known points when there exists enough unused+-- memory that the cost of trimming is “worth” it.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @commandPool@ /must/ be a valid @VkCommandPool@ handle+--+-- - @flags@ /must/ be @0@+--+-- - @commandPool@ /must/ have been created, allocated, or retrieved from+-- @device@+--+-- == Host Synchronization+--+-- - Host access to @commandPool@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',+-- 'VkCommandPoolTrimFlags',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkTrimCommandPool" vkTrimCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs view
@@ -76,6 +76,10 @@ -- ** VkPointClippingBehavior -- | VkPointClippingBehavior - Enum specifying the point clipping behaviour+--+-- = See Also+--+-- 'VkPhysicalDevicePointClippingProperties' newtype VkPointClippingBehavior = VkPointClippingBehavior Int32 deriving (Eq, Ord, Storable) @@ -95,16 +99,38 @@ ) ) --- No documentation found for Nested "VkPointClippingBehavior" "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"+-- | @VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES@ specifies that the+-- primitive is discarded if the vertex lies outside any clip plane,+-- including the planes bounding the view volume. pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES :: VkPointClippingBehavior pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = VkPointClippingBehavior 0 --- No documentation found for Nested "VkPointClippingBehavior" "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"+-- | @VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY@ specifies that the+-- primitive is discarded only if the vertex lies outside any user clip+-- plane. pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY :: VkPointClippingBehavior pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = VkPointClippingBehavior 1 -- ** VkTessellationDomainOrigin -- | VkTessellationDomainOrigin - Enum describing tessellation domain origin+--+-- = Description+--+-- - @VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT@ specifies that the origin+-- of the domain space is in the upper left corner, as shown in figure+-- [{html_spec_relative}#img-tessellation-topology-ul](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#img-tessellation-topology-ul).+--+-- - @VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT@ specifies that the origin+-- of the domain space is in the lower left corner, as shown in figure+-- [{html_spec_relative}#img-tessellation-topology-ll](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#img-tessellation-topology-ll).+--+-- This enum affects how the @VertexOrderCw@ and @VertexOrderCcw@+-- tessellation execution modes are interpreted, since the winding is+-- defined relative to the orientation of the domain.+--+-- = See Also+--+-- 'VkPipelineTessellationDomainOriginStateCreateInfo' newtype VkTessellationDomainOrigin = VkTessellationDomainOrigin Int32 deriving (Eq, Ord, Storable) @@ -157,12 +183,39 @@ pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = VkImageCreateFlagBits 0x00000100 -- | VkInputAttachmentAspectReference - Structure specifying a subpass\/input -- attachment pair and an aspect mask that /can/ be read.+--+-- == Valid Usage+--+-- - There /must/ be an input attachment at+-- @pCreateInfo@::@pSubpasses@[@subpass@].@pInputAttachments@[@inputAttachmentIndex@].+--+-- - The specified input attachment /must/ have more than one aspect+-- mask.+--+-- - @aspectMask@ /must/ be a subset of the aspect masks in the specified+-- input attachment.+--+-- == Valid Usage (Implicit)+--+-- - @aspectMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'+-- values+--+-- - @aspectMask@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',+-- 'VkRenderPassInputAttachmentAspectCreateInfo' data VkInputAttachmentAspectReference = VkInputAttachmentAspectReference- { -- No documentation found for Nested "VkInputAttachmentAspectReference" "vkSubpass"+ { -- | @subpass@ is an index into the @pSubpasses@ array of the parent+ -- @VkRenderPassCreateInfo@ structure. vkSubpass :: Word32- , -- No documentation found for Nested "VkInputAttachmentAspectReference" "vkInputAttachmentIndex"+ , -- | @inputAttachmentIndex@ is an index into the @pInputAttachments@ of the+ -- specified subpass. vkInputAttachmentIndex :: Word32- , -- No documentation found for Nested "VkInputAttachmentAspectReference" "vkAspectMask"+ , -- | @aspectMask@ is a mask of which aspect(s) /can/ be accessed within the+ -- specified subpass. vkAspectMask :: VkImageAspectFlags } deriving (Eq, Show)@@ -178,14 +231,34 @@ *> poke (ptr `plusPtr` 8) (vkAspectMask (poked :: VkInputAttachmentAspectReference)) -- | VkRenderPassInputAttachmentAspectCreateInfo - Structure specifying, for -- a given subpass\/input attachment pair, which aspect /can/ be read.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO@+--+-- - @pAspectReferences@ /must/ be a valid pointer to an array of+-- @aspectReferenceCount@ valid @VkInputAttachmentAspectReference@+-- structures+--+-- - @aspectReferenceCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'VkInputAttachmentAspectReference',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkRenderPassInputAttachmentAspectCreateInfo = VkRenderPassInputAttachmentAspectCreateInfo- { -- No documentation found for Nested "VkRenderPassInputAttachmentAspectCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkRenderPassInputAttachmentAspectCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkRenderPassInputAttachmentAspectCreateInfo" "vkAspectReferenceCount"+ , -- | @aspectReferenceCount@ is the number of elements in the+ -- pAspectReferences array. vkAspectReferenceCount :: Word32- , -- No documentation found for Nested "VkRenderPassInputAttachmentAspectCreateInfo" "vkPAspectReferences"+ , -- | @pAspectReferences@ points to an array of @aspectReferenceCount@ number+ -- of 'VkInputAttachmentAspectReference' structures describing which+ -- aspect(s) /can/ be accessed for a given input attachment within a given+ -- subpass. vkPAspectReferences :: Ptr VkInputAttachmentAspectReference } deriving (Eq, Show)@@ -203,12 +276,40 @@ *> poke (ptr `plusPtr` 24) (vkPAspectReferences (poked :: VkRenderPassInputAttachmentAspectCreateInfo)) -- | VkPhysicalDevicePointClippingProperties - Structure describing the point -- clipping behavior supported by an implementation+--+-- = Members+--+-- The members of the @VkPhysicalDevicePointClippingProperties@ structure+-- describe the following implementation-dependent limit:+--+-- = Description+--+-- - @sType@ is the type of this structure.+--+-- - @pNext@ is @NULL@ or a pointer to an extension-specific structure.+--+-- - @pointClippingBehavior@ is the point clipping behavior supported by+-- the implementation, and is of type 'VkPointClippingBehavior'.+--+-- If the @VkPhysicalDevicePointClippingProperties@ structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES@+--+-- = See Also+--+-- 'VkPointClippingBehavior', 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDevicePointClippingProperties = VkPhysicalDevicePointClippingProperties- { -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "vkPointClippingBehavior"+ , -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "pointClippingBehavior" vkPointClippingBehavior :: VkPointClippingBehavior } deriving (Eq, Show)@@ -223,12 +324,44 @@ *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDevicePointClippingProperties)) *> poke (ptr `plusPtr` 16) (vkPointClippingBehavior (poked :: VkPhysicalDevicePointClippingProperties)) -- | VkImageViewUsageCreateInfo - Specify the intended usage of an image view+--+-- = Description+--+-- When this structure is chained to @VkImageViewCreateInfo@ the @usage@+-- field overrides the implicit @usage@ parameter inherited from image+-- creation time and its value is used instead for the purposes of+-- determining the valid usage conditions of+-- 'Graphics.Vulkan.Core10.ImageView.VkImageViewCreateInfo'.+--+-- == Valid Usage+--+-- - @usage@ /must/ not include any set bits that were not set in the+-- @usage@ member of the+-- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' structure used to+-- create the image this image view is created from.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO@+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImageViewUsageCreateInfo = VkImageViewUsageCreateInfo- { -- No documentation found for Nested "VkImageViewUsageCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageViewUsageCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageViewUsageCreateInfo" "vkUsage"+ , -- | @usage@ is a bitmask describing the allowed usages of the image view.+ -- See 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+ -- for a description of the supported bits. vkUsage :: VkImageUsageFlags } deriving (Eq, Show)@@ -244,12 +377,34 @@ *> poke (ptr `plusPtr` 16) (vkUsage (poked :: VkImageViewUsageCreateInfo)) -- | VkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying -- the orientation of the tessellation domain+--+-- = Description+--+-- If the @VkPipelineTessellationDomainOriginStateCreateInfo@ structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineTessellationStateCreateInfo',+-- it controls the origin of the tessellation domain. If this structure is+-- not present, it is as if @domainOrigin@ were+-- @VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO@+--+-- - @domainOrigin@ /must/ be a valid 'VkTessellationDomainOrigin' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'VkTessellationDomainOrigin' data VkPipelineTessellationDomainOriginStateCreateInfo = VkPipelineTessellationDomainOriginStateCreateInfo- { -- No documentation found for Nested "VkPipelineTessellationDomainOriginStateCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineTessellationDomainOriginStateCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineTessellationDomainOriginStateCreateInfo" "vkDomainOrigin"+ , -- | @domainOrigin@ controls the origin of the tessellation domain space, and+ -- is of type 'VkTessellationDomainOrigin'. vkDomainOrigin :: VkTessellationDomainOrigin } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs view
@@ -50,17 +50,106 @@ pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = VkStructureType 1000168001 -- | vkGetDescriptorSetLayoutSupport - Query whether a descriptor set layout -- can be created+--+-- = Parameters+--+-- - @device@ is the logical device that would create the descriptor set+-- layout.+--+-- - @pCreateInfo@ is a pointer to an instance of the+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'+-- structure specifying the state of the descriptor set layout object.+--+-- - @pSupport@ points to a 'VkDescriptorSetLayoutSupport' structure in+-- which information about support for the descriptor set layout object+-- is returned.+--+-- = Description+--+-- Some implementations have limitations on what fits in a descriptor set+-- which are not easily expressible in terms of existing limits like+-- @maxDescriptorSet@*, for example if all descriptor types share a limited+-- space in memory but each descriptor is a different size or alignment.+-- This command returns information about whether a descriptor set+-- satisfies this limit. If the descriptor set layout satisfies the+-- 'VkPhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,+-- this command is guaranteed to return @VK_TRUE@ in+-- 'VkDescriptorSetLayoutSupport'::@supported@. If the descriptor set+-- layout exceeds the+-- 'VkPhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,+-- whether the descriptor set layout is supported is+-- implementation-dependent and /may/ depend on whether the descriptor+-- sizes and alignments cause the layout to exceed an internal limit.+--+-- This command does not consider other limits such as+-- @maxPerStageDescriptor@*, and so a descriptor set layout that is+-- supported according to this command /must/ still satisfy the pipeline+-- layout limits such as @maxPerStageDescriptor@* in order to be used in a+-- pipeline layout.+--+-- __Note__+--+-- This is a @VkDevice@ query rather than @VkPhysicalDevice@ because the+-- answer /may/ depend on enabled features.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- @VkDescriptorSetLayoutCreateInfo@ structure+--+-- - @pSupport@ /must/ be a valid pointer to a+-- @VkDescriptorSetLayoutSupport@ structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo',+-- 'VkDescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' foreign import ccall "vkGetDescriptorSetLayoutSupport" vkGetDescriptorSetLayoutSupport :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO () -- | VkPhysicalDeviceMaintenance3Properties - Structure describing descriptor -- set properties+--+-- = Members+--+-- The members of the @VkPhysicalDeviceMaintenance3Properties@ structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- - @maxPerSetDescriptors@ is a maximum number of descriptors (summed+-- over all descriptor types) in a single descriptor set that is+-- guaranteed to satisfy any implementation-dependent constraints on+-- the size of a descriptor set itself. Applications /can/ query+-- whether a descriptor set that goes beyond this limit is supported+-- using 'vkGetDescriptorSetLayoutSupport'.+--+-- - @maxMemoryAllocationSize@ is the maximum size of a memory allocation+-- that /can/ be created, even if there is more space available in the+-- heap.+--+-- If the @VkPhysicalDeviceMaintenance3Properties@ structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES@+--+-- = See Also+--+-- @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceMaintenance3Properties = VkPhysicalDeviceMaintenance3Properties- { -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "vkMaxPerSetDescriptors"+ , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "maxPerSetDescriptors" vkMaxPerSetDescriptors :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "vkMaxMemoryAllocationSize"+ , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "maxMemoryAllocationSize" vkMaxMemoryAllocationSize :: VkDeviceSize } deriving (Eq, Show)@@ -78,12 +167,31 @@ *> poke (ptr `plusPtr` 24) (vkMaxMemoryAllocationSize (poked :: VkPhysicalDeviceMaintenance3Properties)) -- | VkDescriptorSetLayoutSupport - Structure returning information about -- whether a descriptor set layout can be supported+--+-- = Description+--+-- @supported@ is set to @VK_TRUE@ if the descriptor set /can/ be created,+-- or else is set to @VK_FALSE@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetVariableDescriptorCountLayoutSupportEXT'+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkGetDescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR' data VkDescriptorSetLayoutSupport = VkDescriptorSetLayoutSupport- { -- No documentation found for Nested "VkDescriptorSetLayoutSupport" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorSetLayoutSupport" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorSetLayoutSupport" "vkSupported"+ , -- | @supported@ specifies whether the descriptor set layout /can/ be+ -- created. vkSupported :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs view
@@ -47,21 +47,74 @@ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES" pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES :: VkStructureType pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = VkStructureType 1000053002--- No documentation found for Nested "VkDependencyFlagBits" "VK_DEPENDENCY_VIEW_LOCAL_BIT"+-- | @VK_DEPENDENCY_VIEW_LOCAL_BIT@ specifies that a [subpass has more than+-- one+-- view](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies). pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 0x00000002 -- | VkPhysicalDeviceMultiviewFeatures - Structure describing multiview -- features that can be supported by an implementation+--+-- = Members+--+-- The members of the @VkPhysicalDeviceMultiviewFeatures@ structure+-- describe the following features:+--+-- = Description+--+-- - @multiview@ specifies whether the implementation supports multiview+-- rendering within a render pass. If this feature is not enabled, the+-- view mask of each subpass /must/ always be zero.+--+-- - @multiviewGeometryShader@ specifies whether the implementation+-- supports multiview rendering within a render pass, with [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#geometry).+-- If this feature is not enabled, then a pipeline compiled against a+-- subpass with a non-zero view mask /must/ not include a geometry+-- shader.+--+-- - @multiviewTessellationShader@ specifies whether the implementation+-- supports multiview rendering within a render pass, with+-- [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#tessellation).+-- If this feature is not enabled, then a pipeline compiled against a+-- subpass with a non-zero view mask /must/ not include any+-- tessellation shaders.+--+-- If the @VkPhysicalDeviceMultiviewFeatures@ structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- @VkPhysicalDeviceMultiviewFeatures@ /can/ also be used in the @pNext@+-- chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo' to enable+-- the features.+--+-- == Valid Usage+--+-- - If @multiviewGeometryShader@ is enabled then @multiview@ /must/ also+-- be enabled.+--+-- - If @multiviewTessellationShader@ is enabled then @multiview@ /must/+-- also be enabled.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES@+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceMultiviewFeatures = VkPhysicalDeviceMultiviewFeatures- { -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "vkMultiview"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiview" vkMultiview :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "vkMultiviewGeometryShader"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiviewGeometryShader" vkMultiviewGeometryShader :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "vkMultiviewTessellationShader"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiviewTessellationShader" vkMultiviewTessellationShader :: VkBool32 } deriving (Eq, Show)@@ -81,14 +134,42 @@ *> poke (ptr `plusPtr` 24) (vkMultiviewTessellationShader (poked :: VkPhysicalDeviceMultiviewFeatures)) -- | VkPhysicalDeviceMultiviewProperties - Structure describing multiview -- limits that can be supported by an implementation+--+-- = Members+--+-- The members of the @VkPhysicalDeviceMultiviewProperties@ structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- - @maxMultiviewViewCount@ is one greater than the maximum view index+-- that /can/ be used in a subpass.+--+-- - @maxMultiviewInstanceIndex@ is the maximum valid value of instance+-- index allowed to be generated by a drawing command recorded within a+-- subpass of a multiview render pass instance.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES@+--+-- If the @VkPhysicalDeviceMultiviewProperties@ structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceMultiviewProperties = VkPhysicalDeviceMultiviewProperties- { -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "vkMaxMultiviewViewCount"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "maxMultiviewViewCount" vkMaxMultiviewViewCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "vkMaxMultiviewInstanceIndex"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "maxMultiviewInstanceIndex" vkMaxMultiviewInstanceIndex :: Word32 } deriving (Eq, Show)@@ -106,22 +187,152 @@ *> poke (ptr `plusPtr` 20) (vkMaxMultiviewInstanceIndex (poked :: VkPhysicalDeviceMultiviewProperties)) -- | VkRenderPassMultiviewCreateInfo - Structure containing multiview info -- for all subpasses+--+-- = Description+--+-- When a subpass uses a non-zero view mask, /multiview/ functionality is+-- considered to be enabled. Multiview is all-or-nothing for a render pass+-- - that is, either all subpasses /must/ have a non-zero view mask (though+-- some subpasses /may/ have only one view) or all /must/ be zero.+-- Multiview causes all drawing and clear commands in the subpass to behave+-- as if they were broadcast to each view, where a view is represented by+-- one layer of the framebuffer attachments. All draws and clears are+-- broadcast to each /view index/ whose bit is set in the view mask. The+-- view index is provided in the @ViewIndex@ shader input variable, and+-- color, depth\/stencil, and input attachments all read\/write the layer+-- of the framebuffer corresponding to the view index.+--+-- If the view mask is zero for all subpasses, multiview is considered to+-- be disabled and all drawing commands execute normally, without this+-- additional broadcasting.+--+-- Some implementations /may/ not support multiview in conjunction with+-- [geometry+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-gs)+-- or [tessellation+-- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-tess).+--+-- When multiview is enabled, the @VK_DEPENDENCY_VIEW_LOCAL_BIT@ bit in a+-- dependency /can/ be used to express a view-local dependency, meaning+-- that each view in the destination subpass depends on a single view in+-- the source subpass. Unlike pipeline barriers, a subpass dependency /can/+-- potentially have a different view mask in the source subpass and the+-- destination subpass. If the dependency is view-local, then each view+-- (dstView) in the destination subpass depends on the view dstView ++-- pViewOffsets[dependency] in the source subpass. If there is not such a+-- view in the source subpass, then this dependency does not affect that+-- view in the destination subpass. If the dependency is not view-local,+-- then all views in the destination subpass depend on all views in the+-- source subpass, and the view offset is ignored. A non-zero view offset+-- is not allowed in a self-dependency.+--+-- The elements of @pCorrelationMasks@ are a set of masks of views+-- indicating that views in the same mask /may/ exhibit spatial coherency+-- between the views, making it more efficient to render them concurrently.+-- Correlation masks /must/ not have a functional effect on the results of+-- the multiview rendering.+--+-- When multiview is enabled, at the beginning of each subpass all+-- non-render pass state is undefined. In particular, each time+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginRenderPass' or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdNextSubpass' is+-- called the graphics pipeline /must/ be bound, any relevant descriptor+-- sets or vertex\/index buffers /must/ be bound, and any relevant dynamic+-- state or push constants /must/ be set before they are used.+--+-- A multiview subpass /can/ declare that its shaders will write per-view+-- attributes for all views in a single invocation, by setting the+-- @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@ bit in the subpass+-- description. The only supported per-view attributes are position and+-- viewport mask, and per-view position and viewport masks are written to+-- output array variables decorated with @PositionPerViewNV@ and+-- @ViewportMaskPerViewNV@, respectively. If+-- @{html_spec_relative}#VK_NV_viewport_array2@ is not supported and+-- enabled, @ViewportMaskPerViewNV@ /must/ not be used. Values written to+-- elements of @PositionPerViewNV@ and @ViewportMaskPerViewNV@ /must/ not+-- depend on the @ViewIndex@. The shader /must/ also write to an output+-- variable decorated with @Position@, and the value written to @Position@+-- /must/ equal the value written to @PositionPerViewNV@[@ViewIndex@].+-- Similarly, if @ViewportMaskPerViewNV@ is written to then the shader+-- /must/ also write to an output variable decorated with @ViewportMaskNV@,+-- and the value written to @ViewportMaskNV@ /must/ equal the value written+-- to @ViewportMaskPerViewNV@[@ViewIndex@]. Implementations will either use+-- values taken from @Position@ and @ViewportMaskNV@ and invoke the shader+-- once for each view, or will use values taken from @PositionPerViewNV@+-- and @ViewportMaskPerViewNV@ and invoke the shader fewer times. The+-- values written to @Position@ and @ViewportMaskNV@ /must/ not depend on+-- the values written to @PositionPerViewNV@ and @ViewportMaskPerViewNV@,+-- or vice versa (to allow compilers to eliminate the unused outputs). All+-- attributes that do not have *PerViewNV counterparts /must/ not depend on+-- @ViewIndex@.+--+-- Per-view attributes are all-or-nothing for a subpass. That is, all+-- pipelines compiled against a subpass that includes the+-- @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@ bit /must/ write+-- per-view attributes to the *PerViewNV[] shader outputs, in addition to+-- the non-per-view (e.g. @Position@) outputs. Pipelines compiled against a+-- subpass that does not include this bit /must/ not include the+-- *PerViewNV[] outputs in their interfaces.+--+-- == Valid Usage+--+-- - If @subpassCount@ is not zero, @subpassCount@ /must/ be equal to the+-- @subpassCount@ in the @VkRenderPassCreateInfo@ structure at the+-- start of the chain+--+-- - If @dependencyCount@ is not zero, @dependencyCount@ /must/ be equal+-- to the @dependencyCount@ in the @VkRenderPassCreateInfo@ structure+-- at the start of the chain+--+-- - Each view index /must/ not be set in more than one element of+-- @pCorrelationMasks@+--+-- - If an element of @pViewOffsets@ is non-zero, the corresponding+-- 'Graphics.Vulkan.Core10.Pass.VkSubpassDependency' structure /must/+-- have different values of @srcSubpass@ and @dstSubpass@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO@+--+-- - If @subpassCount@ is not @0@, @pViewMasks@ /must/ be a valid pointer+-- to an array of @subpassCount@ @uint32_t@ values+--+-- - If @dependencyCount@ is not @0@, @pViewOffsets@ /must/ be a valid+-- pointer to an array of @dependencyCount@ @int32_t@ values+--+-- - If @correlationMaskCount@ is not @0@, @pCorrelationMasks@ /must/ be+-- a valid pointer to an array of @correlationMaskCount@ @uint32_t@+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkRenderPassMultiviewCreateInfo = VkRenderPassMultiviewCreateInfo- { -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkSubpassCount"+ , -- | @subpassCount@ is zero or is the number of subpasses in the render pass. vkSubpassCount :: Word32- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkPViewMasks"+ , -- | @pViewMasks@ points to an array of @subpassCount@ number of view masks,+ -- where each mask is a bitfield of view indices describing which views+ -- rendering is broadcast to in each subpass, when multiview is enabled. If+ -- @subpassCount@ is zero, each view mask is treated as zero. vkPViewMasks :: Ptr Word32- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkDependencyCount"+ , -- | @dependencyCount@ is zero or the number of dependencies in the render+ -- pass. vkDependencyCount :: Word32- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkPViewOffsets"+ , -- | @pViewOffsets@ points to an array of @dependencyCount@ view offsets, one+ -- for each dependency. If @dependencyCount@ is zero, each dependency’s+ -- view offset is treated as zero. Each view offset controls which views in+ -- the source subpass the views in the destination subpass depend on. vkPViewOffsets :: Ptr Int32- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkCorrelationMaskCount"+ , -- | @correlationMaskCount@ is zero or a number of correlation masks. vkCorrelationMaskCount :: Word32- , -- No documentation found for Nested "VkRenderPassMultiviewCreateInfo" "vkPCorrelationMasks"+ , -- | @pCorrelationMasks@ is an array of view masks indicating sets of views+ -- that /may/ be more efficient to render concurrently. vkPCorrelationMasks :: Ptr Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs view
@@ -144,6 +144,69 @@ -- ** VkSamplerYcbcrModelConversion -- | VkSamplerYcbcrModelConversion - Color model component of a color space+--+-- = Description+--+-- - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY@ specifies that the+-- input values to the conversion are unmodified.+--+-- - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY@ specifies no+-- model conversion but the inputs are range expanded as for Y’CBCR.+--+-- - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709@ specifies the color+-- model conversion from Y’CBCR to R’G’B\' defined in BT.709 and+-- described in the “BT.709 Y’CBCR conversion” section of the [Khronos+-- Data Format+-- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#data-format).+--+-- - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601@ specifies the color+-- model conversion from Y’CBCR to R’G’B\' defined in BT.601 and+-- described in the “BT.601 Y’CBCR conversion” section of the [Khronos+-- Data Format+-- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#data-format).+--+-- - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020@ specifies the color+-- model conversion from Y’CBCR to R’G’B\' defined in BT.2020 and+-- described in the “BT.2020 Y’CBCR conversion” section of the [Khronos+-- Data Format+-- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#data-format).+--+-- In the @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_*@ color models, for the+-- input to the sampler Y’CBCR range expansion and model conversion:+--+-- - the Y (Y\' luma) channel corresponds to the G channel of an RGB+-- image.+--+-- - the CB (CB or “U” blue color difference) channel corresponds to the+-- B channel of an RGB image.+--+-- - the CR (CR or “V” red color difference) channel corresponds to the R+-- channel of an RGB image.+--+-- - the alpha channel, if present, is not modified by color model+-- conversion.+--+-- These rules reflect the mapping of channels after the channel swizzle+-- operation (controlled by+-- 'VkSamplerYcbcrConversionCreateInfo'::@components@).+--+-- __Note__+--+-- For example, an “YUVA” 32-bit format comprising four 8-bit channels can+-- be implemented as @VK_FORMAT_R8G8B8A8_UNORM@ with a component mapping:+--+-- - @components.a@ = @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - @components.r@ = @VK_COMPONENT_SWIZZLE_B@+--+-- - @components.g@ = @VK_COMPONENT_SWIZZLE_R@+--+-- - @components.b@ = @VK_COMPONENT_SWIZZLE_G@+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',+-- 'VkSamplerYcbcrConversionCreateInfo' newtype VkSamplerYcbcrModelConversion = VkSamplerYcbcrModelConversion Int32 deriving (Eq, Ord, Storable) @@ -191,6 +254,33 @@ -- ** VkSamplerYcbcrRange -- | VkSamplerYcbcrRange - Range of encoded values in a color space+--+-- = Description+--+-- - @VK_SAMPLER_YCBCR_RANGE_ITU_FULL@ specifies that the full range of+-- the encoded values are valid and interpreted according to the ITU+-- “full range” quantization rules.+--+-- - @VK_SAMPLER_YCBCR_RANGE_ITU_NARROW@ specifies that headroom and foot+-- room are reserved in the numerical range of encoded values, and the+-- remaining values are expanded according to the ITU “narrow range”+-- quantization rules.+--+-- The formulae for these conversions is described in the [Sampler Y’CBCR+-- Range+-- Expansion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand)+-- section of the [Image+-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures)+-- chapter.+--+-- No range modification takes place if @ycbcrModel@ is+-- @VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY@; the @ycbcrRange@ field+-- of @VkSamplerYcbcrConversionCreateInfo@ is ignored in this case.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',+-- 'VkSamplerYcbcrConversionCreateInfo' newtype VkSamplerYcbcrRange = VkSamplerYcbcrRange Int32 deriving (Eq, Ord, Storable) @@ -220,6 +310,11 @@ -- ** VkChromaLocation -- | VkChromaLocation - Position of downsampled chroma samples+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',+-- 'VkSamplerYcbcrConversionCreateInfo' newtype VkChromaLocation = VkChromaLocation Int32 deriving (Eq, Ord, Storable) @@ -239,113 +334,501 @@ ) ) --- No documentation found for Nested "VkChromaLocation" "VK_CHROMA_LOCATION_COSITED_EVEN"+-- | @VK_CHROMA_LOCATION_COSITED_EVEN@ specifies that downsampled chroma+-- samples are aligned with luma samples with even coordinates. pattern VK_CHROMA_LOCATION_COSITED_EVEN :: VkChromaLocation pattern VK_CHROMA_LOCATION_COSITED_EVEN = VkChromaLocation 0 --- No documentation found for Nested "VkChromaLocation" "VK_CHROMA_LOCATION_MIDPOINT"+-- | @VK_CHROMA_LOCATION_MIDPOINT@ specifies that downsampled chroma samples+-- are located half way between each even luma sample and the nearest+-- higher odd luma sample. pattern VK_CHROMA_LOCATION_MIDPOINT :: VkChromaLocation pattern VK_CHROMA_LOCATION_MIDPOINT = VkChromaLocation 1--- No documentation found for Nested "VkFormat" "VK_FORMAT_G8B8G8R8_422_UNORM"+-- | @VK_FORMAT_G8B8G8R8_422_UNORM@ specifies a four-component, 32-bit format+-- containing a pair of G components, an R component, and a B component,+-- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel+-- data. One G value is present at each /i/ coordinate, with the B and R+-- values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has an 8-bit G component+-- for the even /i/ coordinate in byte 0, an 8-bit B component in byte 1,+-- an 8-bit G component for the odd /i/ coordinate in byte 2, and an 8-bit+-- R component in byte 3. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000--- No documentation found for Nested "VkFormat" "VK_FORMAT_B8G8R8G8_422_UNORM"+-- | @VK_FORMAT_B8G8R8G8_422_UNORM@ specifies a four-component, 32-bit format+-- containing a pair of G components, an R component, and a B component,+-- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel+-- data. One G value is present at each /i/ coordinate, with the B and R+-- values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has an 8-bit B component+-- in byte 0, an 8-bit G component for the even /i/ coordinate in byte 1,+-- an 8-bit R component in byte 2, and an 8-bit G component for the odd /i/+-- coordinate in byte 3. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001--- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"+-- | @VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. The+-- horizontal and vertical dimensions of the R and B planes are halved+-- relative to the image dimensions, and each R and B component is shared+-- with the G components for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002--- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"+-- | @VK_FORMAT_G8_B8R8_2PLANE_420_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in+-- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical+-- dimensions of the BR plane is halved relative to the image dimensions,+-- and each R and B value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003--- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"+-- | @VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. The+-- horizontal dimension of the R and B plane is halved relative to the+-- image dimensions, and each R and B value is shared with the G components+-- for which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location+-- of each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004--- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"+-- | @VK_FORMAT_G8_B8R8_2PLANE_422_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in+-- byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of+-- the BR plane is halved relative to the image dimensions, and each R and+-- B value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005--- No documentation found for Nested "VkFormat" "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"+-- | @VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. Each plane+-- has the same dimensions and each R, G and B component contributes to a+-- single texel. The location of each plane when this image is in linear+-- layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006--- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6_UNORM_PACK16"+-- | @VK_FORMAT_R10X6_UNORM_PACK16@ specifies a one-component, 16-bit+-- unsigned normalized format that has a single 10-bit R component in the+-- top 10 bits of a 16-bit word, with the bottom 6 bits set to 0. pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007--- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6G10X6_UNORM_2PACK16"+-- | @VK_FORMAT_R10X6G10X6_UNORM_2PACK16@ specifies a two-component, 32-bit+-- unsigned normalized format that has a 10-bit R component in the top 10+-- bits of the word in bytes 0..1, and a 10-bit G component in the top 10+-- bits of the word in bytes 2..3, with the bottom 6 bits of each word set+-- to 0. pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008--- No documentation found for Nested "VkFormat" "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"+-- | @VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16@ specifies a+-- four-component, 64-bit unsigned normalized format that has a 10-bit R+-- component in the top 10 bits of the word in bytes 0..1, a 10-bit G+-- component in the top 10 bits of the word in bytes 2..3, a 10-bit B+-- component in the top 10 bits of the word in bytes 4..5, and a 10-bit A+-- component in the top 10 bits of the word in bytes 6..7, with the bottom+-- 6 bits of each word set to 0. pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = VkFormat 1000156009--- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"+-- | @VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16@ specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 10-bit G component for the even /i/ coordinate in the top 10 bits of+-- the word in bytes 0..1, a 10-bit B component in the top 10 bits of the+-- word in bytes 2..3, a 10-bit G component for the odd /i/ coordinate in+-- the top 10 bits of the word in bytes 4..5, and a 10-bit R component in+-- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of+-- each word set to 0. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 :: VkFormat pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = VkFormat 1000156010--- No documentation found for Nested "VkFormat" "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"+-- | @VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16@ specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 10-bit B component in the top 10 bits of the word in bytes 0..1, a+-- 10-bit G component for the even /i/ coordinate in the top 10 bits of the+-- word in bytes 2..3, a 10-bit R component in the top 10 bits of the word+-- in bytes 4..5, and a 10-bit G component for the odd /i/ coordinate in+-- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of+-- each word set to 0. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 :: VkFormat pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = VkFormat 1000156011--- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"+-- | @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word set to 0. The horizontal and vertical+-- dimensions of the R and B planes are halved relative to the image+-- dimensions, and each R and B component is shared with the G components+-- for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = VkFormat 1000156012--- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"+-- | @VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, and a two-component,+-- 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits+-- of the word in bytes 0..1, and a 10-bit R component in the top 10 bits+-- of the word in bytes 2..3, the bottom 6 bits of each word set to 0. The+-- horizontal and vertical dimensions of the BR plane is halved relative to+-- the image dimensions, and each R and B value is shared with the G+-- components for which \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = VkFormat 1000156013--- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"+-- | @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word set to 0. The horizontal dimension of the R+-- and B plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = VkFormat 1000156014--- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"+-- | @VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, and a two-component,+-- 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits+-- of the word in bytes 0..1, and a 10-bit R component in the top 10 bits+-- of the word in bytes 2..3, the bottom 6 bits of each word set to 0. The+-- horizontal dimensions of the BR plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of+-- each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = VkFormat 1000156015--- No documentation found for Nested "VkFormat" "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"+-- | @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word set to 0. Each plane has the same dimensions+-- and each R, G and B component contributes to a single texel. The+-- location of each plane when this image is in linear layout can be+-- determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = VkFormat 1000156016--- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4_UNORM_PACK16"+-- | @VK_FORMAT_R12X4_UNORM_PACK16@ specifies a one-component, 16-bit+-- unsigned normalized format that has a single 12-bit R component in the+-- top 12 bits of a 16-bit word, with the bottom 4 bits set to 0. pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017--- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4G12X4_UNORM_2PACK16"+-- | @VK_FORMAT_R12X4G12X4_UNORM_2PACK16@ specifies a two-component, 32-bit+-- unsigned normalized format that has a 12-bit R component in the top 12+-- bits of the word in bytes 0..1, and a 12-bit G component in the top 12+-- bits of the word in bytes 2..3, with the bottom 4 bits of each word set+-- to 0. pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018--- No documentation found for Nested "VkFormat" "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"+-- | @VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16@ specifies a+-- four-component, 64-bit unsigned normalized format that has a 12-bit R+-- component in the top 12 bits of the word in bytes 0..1, a 12-bit G+-- component in the top 12 bits of the word in bytes 2..3, a 12-bit B+-- component in the top 12 bits of the word in bytes 4..5, and a 12-bit A+-- component in the top 12 bits of the word in bytes 6..7, with the bottom+-- 4 bits of each word set to 0. pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = VkFormat 1000156019--- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"+-- | @VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16@ specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 12-bit G component for the even /i/ coordinate in the top 12 bits of+-- the word in bytes 0..1, a 12-bit B component in the top 12 bits of the+-- word in bytes 2..3, a 12-bit G component for the odd /i/ coordinate in+-- the top 12 bits of the word in bytes 4..5, and a 12-bit R component in+-- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of+-- each word set to 0. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 :: VkFormat pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = VkFormat 1000156020--- No documentation found for Nested "VkFormat" "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"+-- | @VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16@ specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 12-bit B component in the top 12 bits of the word in bytes 0..1, a+-- 12-bit G component for the even /i/ coordinate in the top 12 bits of the+-- word in bytes 2..3, a 12-bit R component in the top 12 bits of the word+-- in bytes 4..5, and a 12-bit G component for the odd /i/ coordinate in+-- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of+-- each word set to 0. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 :: VkFormat pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = VkFormat 1000156021--- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"+-- | @VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word set to 0. The horizontal and vertical+-- dimensions of the R and B planes are halved relative to the image+-- dimensions, and each R and B component is shared with the G components+-- for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = VkFormat 1000156022--- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"+-- | @VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, and a two-component,+-- 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits+-- of the word in bytes 0..1, and a 12-bit R component in the top 12 bits+-- of the word in bytes 2..3, the bottom 4 bits of each word set to 0. The+-- horizontal and vertical dimensions of the BR plane is halved relative to+-- the image dimensions, and each R and B value is shared with the G+-- components for which \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = VkFormat 1000156023--- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"+-- | @VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word set to 0. The horizontal dimension of the R+-- and B plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = VkFormat 1000156024--- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"+-- | @VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, and a two-component,+-- 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits+-- of the word in bytes 0..1, and a 12-bit R component in the top 12 bits+-- of the word in bytes 2..3, the bottom 4 bits of each word set to 0. The+-- horizontal dimensions of the BR plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of+-- each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = VkFormat 1000156025--- No documentation found for Nested "VkFormat" "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"+-- | @VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16@ specifies a+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word set to 0. Each plane has the same dimensions+-- and each R, G and B component contributes to a single texel. The+-- location of each plane when this image is in linear layout can be+-- determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 :: VkFormat pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = VkFormat 1000156026--- No documentation found for Nested "VkFormat" "VK_FORMAT_G16B16G16R16_422_UNORM"+-- | @VK_FORMAT_G16B16G16R16_422_UNORM@ specifies a four-component, 64-bit+-- format containing a pair of G components, an R component, and a B+-- component, collectively encoding a 2×1 rectangle of unsigned normalized+-- RGB texel data. One G value is present at each /i/ coordinate, with the+-- B and R values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has a 16-bit G component+-- for the even /i/ coordinate in the word in bytes 0..1, a 16-bit B+-- component in the word in bytes 2..3, a 16-bit G component for the odd+-- /i/ coordinate in the word in bytes 4..5, and a 16-bit R component in+-- the word in bytes 6..7. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027--- No documentation found for Nested "VkFormat" "VK_FORMAT_B16G16R16G16_422_UNORM"+-- | @VK_FORMAT_B16G16R16G16_422_UNORM@ specifies a four-component, 64-bit+-- format containing a pair of G components, an R component, and a B+-- component, collectively encoding a 2×1 rectangle of unsigned normalized+-- RGB texel data. One G value is present at each /i/ coordinate, with the+-- B and R values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has a 16-bit B component+-- in the word in bytes 0..1, a 16-bit G component for the even /i/+-- coordinate in the word in bytes 2..3, a 16-bit R component in the word+-- in bytes 4..5, and a 16-bit G component for the odd /i/ coordinate in+-- the word in bytes 6..7. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block. pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028--- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"+-- | @VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. The horizontal and+-- vertical dimensions of the R and B planes are halved relative to the+-- image dimensions, and each R and B component is shared with the G+-- components for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = VkFormat 1000156029--- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"+-- | @VK_FORMAT_G16_B16R16_2PLANE_420_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component+-- in the word in bytes 2..3. The horizontal and vertical dimensions of the+-- BR plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width and height that is a multiple of two. pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030--- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"+-- | @VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. The horizontal+-- dimension of the R and B plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of+-- each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = VkFormat 1000156031--- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"+-- | @VK_FORMAT_G16_B16R16_2PLANE_422_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component+-- in the word in bytes 2..3. The horizontal dimensions of the BR plane is+-- halved relative to the image dimensions, and each R and B value is+-- shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format+-- /must/ be defined with a width that is a multiple of two. pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032--- No documentation found for Nested "VkFormat" "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"+-- | @VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM@ specifies a unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. Each plane has the+-- same dimensions and each R, G and B component contributes to a single+-- texel. The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,+-- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = VkFormat 1000156033 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"@@ -405,19 +888,134 @@ -- | Dummy data to tag the 'Ptr' with data VkSamplerYcbcrConversion_T -- | VkSamplerYcbcrConversion - NO SHORT DESCRIPTION PROVIDED+--+-- = See Also+--+-- 'VkSamplerYcbcrConversionInfo', 'vkCreateSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',+-- 'vkDestroySamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR' type VkSamplerYcbcrConversion = Ptr VkSamplerYcbcrConversion_T -- | vkCreateSamplerYcbcrConversion - Create a new Ycbcr conversion+--+-- = Parameters+--+-- - @device@ is the logical device that creates the sampler Y’CBCR+-- conversion.+--+-- - @pCreateInfo@ is a pointer to an instance of the+-- 'VkSamplerYcbcrConversionCreateInfo' specifying the requested+-- sampler Y’CBCR conversion.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- - @pYcbcrConversion@ points to a 'VkSamplerYcbcrConversion' handle in+-- which the resulting sampler Y’CBCR conversion is returned.+--+-- = Description+--+-- The interpretation of the configured sampler Y’CBCR conversion is+-- described in more detail in [the description of sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion)+-- in the [Image+-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures)+-- chapter.+--+-- == Valid Usage+--+-- - The [sampler Y’CBCR conversion+-- feature](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sampler-YCbCr-conversion)+-- /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- @VkSamplerYcbcrConversionCreateInfo@ structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - @pYcbcrConversion@ /must/ be a valid pointer to a+-- @VkSamplerYcbcrConversion@ handle+--+-- == Return Codes+--+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]+-- - @VK_SUCCESS@+--+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]+-- - @VK_ERROR_OUT_OF_HOST_MEMORY@+--+-- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkSamplerYcbcrConversion', 'VkSamplerYcbcrConversionCreateInfo' foreign import ccall "vkCreateSamplerYcbcrConversion" vkCreateSamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult -- | vkDestroySamplerYcbcrConversion - Destroy a created Y’CbCr conversion+--+-- = Parameters+--+-- - @device@ is the logical device that destroys the Y’CBCR conversion.+--+-- - @ycbcrConversion@ is the conversion to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter.+--+-- == Valid Usage (Implicit)+--+-- - @device@ /must/ be a valid @VkDevice@ handle+--+-- - If @ycbcrConversion@ is not+-- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @ycbcrConversion@+-- /must/ be a valid @VkSamplerYcbcrConversion@ handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid @VkAllocationCallbacks@ structure+--+-- - If @ycbcrConversion@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from @device@+--+-- == Host Synchronization+--+-- - Host access to @ycbcrConversion@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',+-- 'VkSamplerYcbcrConversion' foreign import ccall "vkDestroySamplerYcbcrConversion" vkDestroySamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO () -- | VkSamplerYcbcrConversionInfo - Structure specifying Y’CbCr conversion to -- a sampler or image view+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO@+--+-- - @conversion@ /must/ be a valid @VkSamplerYcbcrConversion@ handle+--+-- = See Also+--+-- 'VkSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkSamplerYcbcrConversionInfo = VkSamplerYcbcrConversionInfo- { -- No documentation found for Nested "VkSamplerYcbcrConversionInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSamplerYcbcrConversionInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSamplerYcbcrConversionInfo" "vkConversion"+ , -- | @conversion@ is a 'VkSamplerYcbcrConversion' handle created with+ -- 'vkCreateSamplerYcbcrConversion'. vkConversion :: VkSamplerYcbcrConversion } deriving (Eq, Show)@@ -433,26 +1031,158 @@ *> poke (ptr `plusPtr` 16) (vkConversion (poked :: VkSamplerYcbcrConversionInfo)) -- | VkSamplerYcbcrConversionCreateInfo - Structure specifying the parameters -- of the newly created conversion+--+-- = Description+--+-- __Note__+--+-- Setting @forceExplicitReconstruction@ to @VK_TRUE@ /may/ have a+-- performance penalty on implementations where explicit reconstruction is+-- not the default mode of operation.+--+-- If the @pNext@ chain has an instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'+-- with non-zero @externalFormat@ member, the sampler Y’CBCR conversion+-- object represents an /external format conversion/, and @format@ /must/+-- be @VK_FORMAT_UNDEFINED@. Such conversions /must/ only be used to sample+-- image views with a matching [external+-- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats).+-- When creating an external format conversion, the value of @components@+-- is ignored.+--+-- == Valid Usage+--+-- - If an external format conversion is being created, @format@ /must/+-- be @VK_FORMAT_UNDEFINED@, otherwise it /must/ not be+-- @VK_FORMAT_UNDEFINED@.+--+-- - @format@ /must/ support+-- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@ or+-- @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@+--+-- - If the format does not support+-- @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@, @xChromaOffset@ and+-- @yChromaOffset@ /must/ not be @VK_CHROMA_LOCATION_COSITED_EVEN@+--+-- - If the format does not support+-- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@, @xChromaOffset@ and+-- @yChromaOffset@ /must/ not be @VK_CHROMA_LOCATION_MIDPOINT@+--+-- - @format@ /must/ represent unsigned normalized values (i.e. the+-- format must be a @UNORM@ format)+--+-- - If the format has a @_422@ or @_420@ suffix:+--+-- - @components.g@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - @components.a@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@,+-- @VK_COMPONENT_SWIZZLE_ONE@, or @VK_COMPONENT_SWIZZLE_ZERO@+--+-- - @components.r@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@ or+-- @VK_COMPONENT_SWIZZLE_B@+--+-- - @components.b@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@ or+-- @VK_COMPONENT_SWIZZLE_R@+--+-- - If either @components.r@ or @components.b@ is+-- @VK_COMPONENT_SWIZZLE_IDENTITY@, both values /must/ be+-- @VK_COMPONENT_SWIZZLE_IDENTITY@+--+-- - If @ycbcrModel@ is not+-- @VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY@, then+-- @components.r@, @components.g@, and @components.b@ /must/ correspond+-- to channels of the @format@; that is, @components.r@,+-- @components.g@, and @components.b@ /must/ not be+-- @VK_COMPONENT_SWIZZLE_ZERO@ or @VK_COMPONENT_SWIZZLE_ONE@, and+-- /must/ not correspond to a channel which contains zero or one as a+-- consequence of [conversion to+-- RGBA](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-conversion-to-rgba)+--+-- - If the format does not support+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT@,+-- @forceExplicitReconstruction@ /must/ be FALSE+--+-- - If the format does not support+-- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT@,+-- @chromaFilter@ /must/ be @VK_FILTER_NEAREST@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO@+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'+--+-- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'+-- value+--+-- - @ycbcrModel@ /must/ be a valid 'VkSamplerYcbcrModelConversion' value+--+-- - @ycbcrRange@ /must/ be a valid 'VkSamplerYcbcrRange' value+--+-- - @components@ /must/ be a valid @VkComponentMapping@ structure+--+-- - @xChromaOffset@ /must/ be a valid 'VkChromaLocation' value+--+-- - @yChromaOffset@ /must/ be a valid 'VkChromaLocation' value+--+-- - @chromaFilter@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Sampler.VkFilter' value+--+-- If @chromaFilter@ is @VK_FILTER_NEAREST@, chroma samples are+-- reconstructed to luma channel resolution using nearest-neighbour+-- sampling. Otherwise, chroma samples are reconstructed using+-- interpolation. More details can be found in [the description of sampler+-- Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion)+-- in the [Image+-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures)+-- chapter.+--+-- = See Also+--+-- @VkBool32@, 'VkChromaLocation',+-- 'Graphics.Vulkan.Core10.ImageView.VkComponentMapping',+-- 'Graphics.Vulkan.Core10.Sampler.VkFilter',+-- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkSamplerYcbcrModelConversion',+-- 'VkSamplerYcbcrRange', 'Graphics.Vulkan.Core10.Core.VkStructureType',+-- 'vkCreateSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR' data VkSamplerYcbcrConversionCreateInfo = VkSamplerYcbcrConversionCreateInfo- { -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkFormat"+ , -- | @format@ is the format of the image from which color information will be+ -- retrieved. vkFormat :: VkFormat- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkYcbcrModel"+ , -- | @ycbcrModel@ describes the color matrix for conversion between color+ -- models. vkYcbcrModel :: VkSamplerYcbcrModelConversion- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkYcbcrRange"+ , -- | @ycbcrRange@ describes whether the encoded values have headroom and foot+ -- room, or whether the encoding uses the full numerical range. vkYcbcrRange :: VkSamplerYcbcrRange- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkComponents"+ , -- | @components@ applies a /swizzle/ based on+ -- 'Graphics.Vulkan.Core10.ImageView.VkComponentSwizzle' enums prior to+ -- range expansion and color model conversion. vkComponents :: VkComponentMapping- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkXChromaOffset"+ , -- | @xChromaOffset@ describes the [sample+ -- location](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction)+ -- associated with downsampled chroma channels in the x dimension.+ -- @xChromaOffset@ has no effect for formats in which chroma channels are+ -- the same resolution as the luma channel. vkXChromaOffset :: VkChromaLocation- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkYChromaOffset"+ , -- | @yChromaOffset@ describes the [sample+ -- location](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction)+ -- associated with downsampled chroma channels in the y dimension.+ -- @yChromaOffset@ has no effect for formats in which the chroma channels+ -- are not downsampled vertically. vkYChromaOffset :: VkChromaLocation- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkChromaFilter"+ , -- | @chromaFilter@ is the filter for chroma reconstruction. vkChromaFilter :: VkFilter- , -- No documentation found for Nested "VkSamplerYcbcrConversionCreateInfo" "vkForceExplicitReconstruction"+ , -- | @forceExplicitReconstruction@ /can/ be used to ensure that+ -- reconstruction is done explicitly, if supported. vkForceExplicitReconstruction :: VkBool32 } deriving (Eq, Show)@@ -482,12 +1212,41 @@ *> poke (ptr `plusPtr` 56) (vkForceExplicitReconstruction (poked :: VkSamplerYcbcrConversionCreateInfo)) -- | VkBindImagePlaneMemoryInfo - Structure specifying how to bind an image -- plane to memory+--+-- == Valid Usage+--+-- - @planeAspect@ /must/ be a single valid plane aspect for the image+-- format (that is, @planeAspect@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@ for+-- “@_2PLANE@” formats and @planeAspect@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for “@_3PLANE@” formats)+--+-- - A single call to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'+-- /must/ bind all or none of the planes of an image (i.e. bindings to+-- all planes of an image /must/ be made in a single+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'+-- call), as separate bindings+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO@+--+-- - @planeAspect@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkBindImagePlaneMemoryInfo = VkBindImagePlaneMemoryInfo- { -- No documentation found for Nested "VkBindImagePlaneMemoryInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindImagePlaneMemoryInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindImagePlaneMemoryInfo" "vkPlaneAspect"+ , -- | @planeAspect@ is the aspect of the disjoint image plane to bind. vkPlaneAspect :: VkImageAspectFlagBits } deriving (Eq, Show)@@ -503,12 +1262,35 @@ *> poke (ptr `plusPtr` 16) (vkPlaneAspect (poked :: VkBindImagePlaneMemoryInfo)) -- | VkImagePlaneMemoryRequirementsInfo - Structure specifying image plane -- for memory requirements+--+-- == Valid Usage+--+-- - @planeAspect@ /must/ be an aspect that exists in the format; that+-- is, for a two-plane image @planeAspect@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@, and+-- for a three-plane image @planeAspect@ /must/ be+-- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@ or+-- @VK_IMAGE_ASPECT_PLANE_2_BIT@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO@+--+-- - @planeAspect@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits',+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImagePlaneMemoryRequirementsInfo = VkImagePlaneMemoryRequirementsInfo- { -- No documentation found for Nested "VkImagePlaneMemoryRequirementsInfo" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImagePlaneMemoryRequirementsInfo" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImagePlaneMemoryRequirementsInfo" "vkPlaneAspect"+ , -- | @planeAspect@ is the aspect corresponding to the image plane to query. vkPlaneAspect :: VkImageAspectFlagBits } deriving (Eq, Show)@@ -524,12 +1306,35 @@ *> poke (ptr `plusPtr` 16) (vkPlaneAspect (poked :: VkImagePlaneMemoryRequirementsInfo)) -- | VkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing -- Y’CbCr conversion features that can be supported by an implementation+--+-- = Members+--+-- The members of the @VkPhysicalDeviceSamplerYcbcrConversionFeatures@+-- structure describe the following feature:+--+-- = Description+--+-- - @samplerYcbcrConversion@ specifies whether the implementation+-- supports [sampler Y’CBCR+-- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).+-- If @samplerYcbcrConversion@ is @VK_FALSE@, sampler Y’CBCR conversion+-- is not supported, and samplers using sampler Y’CBCR conversion+-- /must/ not be used.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES@+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceSamplerYcbcrConversionFeatures = VkPhysicalDeviceSamplerYcbcrConversionFeatures- { -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "vkSamplerYcbcrConversion"+ , -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "samplerYcbcrConversion" vkSamplerYcbcrConversion :: VkBool32 } deriving (Eq, Show)@@ -545,12 +1350,22 @@ *> poke (ptr `plusPtr` 16) (vkSamplerYcbcrConversion (poked :: VkPhysicalDeviceSamplerYcbcrConversionFeatures)) -- | VkSamplerYcbcrConversionImageFormatProperties - Structure specifying -- combined image sampler descriptor count for multi-planar images+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkSamplerYcbcrConversionImageFormatProperties = VkSamplerYcbcrConversionImageFormatProperties- { -- No documentation found for Nested "VkSamplerYcbcrConversionImageFormatProperties" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSamplerYcbcrConversionImageFormatProperties" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSamplerYcbcrConversionImageFormatProperties" "vkCombinedImageSamplerDescriptorCount"+ , -- | @combinedImageSamplerDescriptorCount@ is the number of combined image+ -- sampler descriptors that the implementation uses to access the format. vkCombinedImageSamplerDescriptorCount :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs view
@@ -32,7 +32,6 @@ -- implementation -- -- = Description--- #_description# -- -- If the @VkPhysicalDeviceShaderDrawParameterFeatures@ structure is -- included in the @pNext@ chain of@@ -45,15 +44,15 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParameterFeatures- { -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "vkShaderDrawParameters"+ , -- | @shaderDrawParameters@ specifies whether shader draw parameters are+ -- supported. vkShaderDrawParameters :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs view
@@ -29,14 +29,54 @@ pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VkStructureType 1000120000 -- | VkPhysicalDeviceVariablePointerFeatures - Structure describing variable -- pointers features that can be supported by an implementation+--+-- = Members+--+-- The members of the @VkPhysicalDeviceVariablePointerFeatures@ structure+-- describe the following features:+--+-- = Description+--+-- - @variablePointersStorageBuffer@ specifies whether the implementation+-- supports the SPIR-V @VariablePointersStorageBuffer@ capability. When+-- this feature is not enabled, shader modules /must/ not declare the+-- @SPV_KHR_variable_pointers@ extension or the+-- @VariablePointersStorageBuffer@ capability.+--+-- - @variablePointers@ specifies whether the implementation supports the+-- SPIR-V @VariablePointers@ capability. When this feature is not+-- enabled, shader modules /must/ not declare the @VariablePointers@+-- capability.+--+-- If the @VkPhysicalDeviceVariablePointerFeatures@ structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- @VkPhysicalDeviceVariablePointerFeatures@ /can/ also be used in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo' to+-- enable the features.+--+-- == Valid Usage+--+-- - If @variablePointers@ is enabled then+-- @variablePointersStorageBuffer@ /must/ also be enabled.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES@+--+-- = See Also+--+-- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointerFeatures- { -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "vkVariablePointersStorageBuffer"+ , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "variablePointersStorageBuffer" vkVariablePointersStorageBuffer :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "vkVariablePointers"+ , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "variablePointers" vkVariablePointers :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs view
@@ -44,7 +44,6 @@ -- into a buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command will be -- recorded.@@ -62,7 +61,6 @@ -- - @marker@ is the 32-bit value of the marker. -- -- = Description--- #_description# -- -- The command will write the 32-bit marker value into the buffer only -- after all preceding commands have finished executing up to at least the@@ -114,8 +112,8 @@ -- -- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support transfer, graphics, or compute operations@@ -132,19 +130,18 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Transfer | Transfer |--- > | Secondary | | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,
src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs view
@@ -44,7 +44,6 @@ -- sourced from a buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded.@@ -66,7 +65,6 @@ -- parameters. -- -- = Description--- #_description# -- -- @vkCmdDrawIndirectCountAMD@ behaves similarly to -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndirect' except@@ -101,15 +99,15 @@ -- /must/ be less than or equal to the size of @buffer@ -- -- - If the--- <{html_spec_relative}#features-features-drawIndirectFirstInstance drawIndirectFirstInstance>+-- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance) -- feature is not enabled, all the @firstInstance@ members of the -- @VkDrawIndirectCommand@ structures accessed by this command /must/ -- be @0@ -- -- - The current render pass /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@+-- structure specified when creating the @VkPipeline@ bound to -- @VK_PIPELINE_BIND_POINT_GRAPHICS@. -- -- - The subpass index of the current render pass /must/ be equal to the@@ -123,7 +121,7 @@ -- @VkPipelineLayout@ that is compatible for set /n/, with the -- @VkPipelineLayout@ used to create the current @VkPipeline@, as -- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility) -- -- - For each push constant that is statically used by the @VkPipeline@ -- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value@@ -131,7 +129,7 @@ -- @VkPipelineLayout@ that is compatible for push constants, with the -- @VkPipelineLayout@ used to create the current @VkPipeline@, as -- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility) -- -- - Descriptors in each bound descriptor set, specified via -- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically@@ -183,15 +181,15 @@ -- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values, in any shader stage ----- - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess) -- feature is not enabled, and any shader stage in the @VkPipeline@ -- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform -- buffer, it /must/ not access values outside of the range of that -- buffer specified in the bound descriptor set ----- - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess) -- feature is not enabled, and any shader stage in the @VkPipeline@ -- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage -- buffer, it /must/ not access values outside of the range of that@@ -209,6 +207,16 @@ -- /must/ not be accessed in any way other than as an attachment by -- this command. --+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to @VK_TRUE@ and the current subpass has a depth\/stencil+-- attachment, then that attachment /must/ have been created with the+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set+-- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -217,8 +225,8 @@ -- -- - @countBuffer@ /must/ be a valid @VkBuffer@ handle ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics operations@@ -237,18 +245,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@@@ -257,7 +264,6 @@ -- the draw count sourced from a buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded.@@ -279,7 +285,6 @@ -- parameters. -- -- = Description--- #_description# -- -- @vkCmdDrawIndexedIndirectCountAMD@ behaves similarly to -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect'@@ -314,15 +319,15 @@ -- /must/ be less than or equal to the size of @buffer@ -- -- - If the--- <{html_spec_relative}#features-features-drawIndirectFirstInstance drawIndirectFirstInstance>+-- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance) -- feature is not enabled, all the @firstInstance@ members of the -- @VkDrawIndexedIndirectCommand@ structures accessed by this command -- /must/ be @0@ -- -- - The current render pass /must/ be--- <{html_spec_relative}#renderpass-compatibility compatible> with the--- @renderPass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to+-- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)+-- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@+-- structure specified when creating the @VkPipeline@ bound to -- @VK_PIPELINE_BIND_POINT_GRAPHICS@. -- -- - The subpass index of the current render pass /must/ be equal to the@@ -336,7 +341,7 @@ -- @VkPipelineLayout@ that is compatible for set /n/, with the -- @VkPipelineLayout@ used to create the current @VkPipeline@, as -- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility) -- -- - For each push constant that is statically used by the @VkPipeline@ -- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value@@ -344,7 +349,7 @@ -- @VkPipelineLayout@ that is compatible for push constants, with the -- @VkPipelineLayout@ used to create the current @VkPipeline@, as -- described in--- <{html_spec_relative}#descriptorsets-compatibility {html_spec_relative}#descriptorsets-compatibility>+-- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility) -- -- - Descriptors in each bound descriptor set, specified via -- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically@@ -397,15 +402,15 @@ -- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that -- includes a LOD bias or any offset values, in any shader stage ----- - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess) -- feature is not enabled, and any shader stage in the @VkPipeline@ -- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform -- buffer, it /must/ not access values outside of the range of that -- buffer specified in the bound descriptor set ----- - If the--- <{html_spec_relative}#features-features-robustBufferAccess robust buffer access>+-- - If the [robust buffer+-- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess) -- feature is not enabled, and any shader stage in the @VkPipeline@ -- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage -- buffer, it /must/ not access values outside of the range of that@@ -423,6 +428,16 @@ -- /must/ not be accessed in any way other than as an attachment by -- this command. --+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to @VK_TRUE@ and the current subpass has a depth\/stencil+-- attachment, then that attachment /must/ have been created with the+-- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set+-- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -431,8 +446,8 @@ -- -- - @countBuffer@ /must/ be a valid @VkBuffer@ handle ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics operations@@ -451,18 +466,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | Graphics |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@
src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs view
@@ -58,7 +58,6 @@ -- pipeline -- -- = See Also--- #_see_also# -- -- 'VkPipelineRasterizationStateRasterizationOrderAMD' newtype VkRasterizationOrderAMD = VkRasterizationOrderAMD Int32@@ -81,14 +80,14 @@ ) -- | @VK_RASTERIZATION_ORDER_STRICT_AMD@ specifies that operations for each--- primitive in a subpass /must/ occur in--- <{html_spec_relative}#drawing-primitive-order primitive order>.+-- primitive in a subpass /must/ occur in [primitive+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing-primitive-order). pattern VK_RASTERIZATION_ORDER_STRICT_AMD :: VkRasterizationOrderAMD pattern VK_RASTERIZATION_ORDER_STRICT_AMD = VkRasterizationOrderAMD 0 -- | @VK_RASTERIZATION_ORDER_RELAXED_AMD@ specifies that operations for each--- primitive in a subpass /may/ not occur in--- <{html_spec_relative}#drawing-primitive-order primitive order>.+-- primitive in a subpass /may/ not occur in [primitive+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing-primitive-order). pattern VK_RASTERIZATION_ORDER_RELAXED_AMD :: VkRasterizationOrderAMD pattern VK_RASTERIZATION_ORDER_RELAXED_AMD = VkRasterizationOrderAMD 1 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"@@ -103,9 +102,6 @@ -- | VkPipelineRasterizationStateRasterizationOrderAMD - Structure defining -- rasterization order for a graphics pipeline ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -122,15 +118,15 @@ -- @VK_RASTERIZATION_ORDER_STRICT_AMD@. -- -- = See Also--- #_see_also# -- -- 'VkRasterizationOrderAMD', 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineRasterizationStateRasterizationOrderAMD = VkPipelineRasterizationStateRasterizationOrderAMD- { -- No documentation found for Nested "VkPipelineRasterizationStateRasterizationOrderAMD" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineRasterizationStateRasterizationOrderAMD" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineRasterizationStateRasterizationOrderAMD" "vkRasterizationOrder"+ , -- | @rasterizationOrder@ is a 'VkRasterizationOrderAMD' value specifying the+ -- primitive rasterization order to use. vkRasterizationOrder :: VkRasterizationOrderAMD } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs view
@@ -45,13 +45,11 @@ -- core properties that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceShaderCorePropertiesAMD@ structure -- describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @shaderEngineCount@ is an unsigned integer value indicating the -- number of shader engines found inside the shader core of the@@ -112,41 +110,40 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceShaderCorePropertiesAMD = VkPhysicalDeviceShaderCorePropertiesAMD- { -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkShaderEngineCount"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "shaderEngineCount" vkShaderEngineCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkShaderArraysPerEngineCount"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "shaderArraysPerEngineCount" vkShaderArraysPerEngineCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkComputeUnitsPerShaderArray"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "computeUnitsPerShaderArray" vkComputeUnitsPerShaderArray :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkSimdPerComputeUnit"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "simdPerComputeUnit" vkSimdPerComputeUnit :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkWavefrontsPerSimd"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "wavefrontsPerSimd" vkWavefrontsPerSimd :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkWavefrontSize"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "wavefrontSize" vkWavefrontSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkSgprsPerSimd"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "sgprsPerSimd" vkSgprsPerSimd :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkMinSgprAllocation"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "minSgprAllocation" vkMinSgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkMaxSgprAllocation"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "maxSgprAllocation" vkMaxSgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkSgprAllocationGranularity"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "sgprAllocationGranularity" vkSgprAllocationGranularity :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkVgprsPerSimd"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vgprsPerSimd" vkVgprsPerSimd :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkMinVgprAllocation"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "minVgprAllocation" vkMinVgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkMaxVgprAllocation"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "maxVgprAllocation" vkMaxVgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vkVgprAllocationGranularity"+ , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vgprAllocationGranularity" vkVgprAllocationGranularity :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs view
@@ -122,7 +122,6 @@ -- | vkGetShaderInfoAMD - Get information about a shader in a pipeline -- -- = Parameters--- #_parameters# -- -- - @device@ is the device that created @pipeline@. --@@ -139,7 +138,6 @@ -- - @pInfo@ is either NULL or a pointer to a buffer. -- -- = Description--- #_description# -- -- If @pInfo@ is @NULL@, then the maximum size of the information that -- /can/ be retrieved about the shader, in bytes, is returned in@@ -196,18 +194,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_FEATURE_NOT_PRESENT@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline', 'VkShaderInfoTypeAMD',@@ -216,23 +213,24 @@ -- | VkShaderResourceUsageAMD - Resource usage information about a particular -- shader within a pipeline ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkShaderStatisticsInfoAMD' data VkShaderResourceUsageAMD = VkShaderResourceUsageAMD- { -- No documentation found for Nested "VkShaderResourceUsageAMD" "vkNumUsedVgprs"+ { -- | @numUsedVgprs@ is the number of vector instruction general-purpose+ -- registers used by this shader. vkNumUsedVgprs :: Word32- , -- No documentation found for Nested "VkShaderResourceUsageAMD" "vkNumUsedSgprs"+ , -- | @numUsedSgprs@ is the number of scalar instruction general-purpose+ -- registers used by this shader. vkNumUsedSgprs :: Word32- , -- No documentation found for Nested "VkShaderResourceUsageAMD" "vkLdsSizePerLocalWorkGroup"+ , -- | @ldsSizePerLocalWorkGroup@ is the maximum local data store size per work+ -- group in bytes. vkLdsSizePerLocalWorkGroup :: Word32- , -- No documentation found for Nested "VkShaderResourceUsageAMD" "vkLdsUsageSizeInBytes"+ , -- | @ldsUsageSizeInBytes@ is the LDS usage size in bytes per work group by+ -- this shader. vkLdsUsageSizeInBytes :: CSize- , -- No documentation found for Nested "VkShaderResourceUsageAMD" "vkScratchMemUsageInBytes"+ , -- | @scratchMemUsageInBytes@ is the scratch memory usage in bytes by this+ -- shader. vkScratchMemUsageInBytes :: CSize } deriving (Eq, Show)@@ -254,7 +252,6 @@ -- shader within a pipeline -- -- = Description--- #_description# -- -- Some implementations may merge multiple logical shader stages together -- in a single shader. In such cases, @shaderStageMask@ will contain a@@ -270,24 +267,30 @@ -- to performance optimizations where register pressure is a bottleneck. -- -- = See Also--- #_see_also# -- -- 'VkShaderResourceUsageAMD', -- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags' data VkShaderStatisticsInfoAMD = VkShaderStatisticsInfoAMD- { -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkShaderStageMask"+ { -- | @shaderStageMask@ are the combination of logical shader stages contained+ -- within this shader. vkShaderStageMask :: VkShaderStageFlags- , -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkResourceUsage"+ , -- | @resourceUsage@ is an instance of 'VkShaderResourceUsageAMD' describing+ -- internal physical device resources used by this shader. vkResourceUsage :: VkShaderResourceUsageAMD- , -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkNumPhysicalVgprs"+ , -- | @numPhysicalVgprs@ is the maximum number of vector instruction+ -- general-purpose registers (VGPRs) available to the physical device. vkNumPhysicalVgprs :: Word32- , -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkNumPhysicalSgprs"+ , -- | @numPhysicalSgprs@ is the maximum number of scalar instruction+ -- general-purpose registers (SGPRs) available to the physical device. vkNumPhysicalSgprs :: Word32- , -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkNumAvailableVgprs"+ , -- | @numAvailableVgprs@ is the maximum limit of VGPRs made available to the+ -- shader compiler. vkNumAvailableVgprs :: Word32- , -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkNumAvailableSgprs"+ , -- | @numAvailableSgprs@ is the maximum limit of SGPRs made available to the+ -- shader compiler. vkNumAvailableSgprs :: Word32- , -- No documentation found for Nested "VkShaderStatisticsInfoAMD" "vkComputeWorkGroupSize"+ , -- | @computeWorkGroupSize@ is the local workgroup size of this shader in {+ -- X, Y, Z } dimensions. vkComputeWorkGroupSize :: Vector 3 Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs view
@@ -43,19 +43,18 @@ -- not texture gather bias\/LOD functionality is supported for a given -- image format and a given physical device. ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkTextureLODGatherFormatPropertiesAMD = VkTextureLODGatherFormatPropertiesAMD- { -- No documentation found for Nested "VkTextureLODGatherFormatPropertiesAMD" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkTextureLODGatherFormatPropertiesAMD" "vkPNext"+ , -- | @pNext@ is @NULL@. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkTextureLODGatherFormatPropertiesAMD" "vkSupportsTextureGatherLODBiasAMD"+ , -- | @supportsTextureGatherLODBiasAMD@ tells if the image format can be used+ -- with texture gather bias\/LOD functions, as introduced by the+ -- @{html_spec_relative}#VK_AMD_texture_gather_bias_lod@ extension. This+ -- field is set by the implementation. User-specified value is ignored. vkSupportsTextureGatherLODBiasAMD :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs view
@@ -106,7 +106,6 @@ -- Memory Android Hardware Buffers -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that will be importing @buffer@. --@@ -114,9 +113,6 @@ -- -- - @pProperties@ will return properties of @buffer@. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @buffer@ /must/ be a valid Android hardware buffer object with at@@ -134,14 +130,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR@ -- -- = See Also--- #_see_also# -- -- 'VkAndroidHardwareBufferPropertiesANDROID', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -150,7 +145,6 @@ -- for a memory object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the device memory being -- exported.@@ -163,7 +157,6 @@ -- underlying resources of the device memory object. -- -- = Description--- #_description# -- -- Each call to @vkGetMemoryAndroidHardwareBufferANDROID@ /must/ return an -- Android hardware buffer with a new reference acquired in addition to the@@ -189,16 +182,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkMemoryGetAndroidHardwareBufferInfoANDROID'@@ -207,7 +199,6 @@ -- hardware buffer -- -- = Description--- #_description# -- -- If the @vkAllocateMemory@ command succeeds, the implementation /must/ -- acquire a reference to the imported hardware buffer, which it /must/@@ -235,15 +226,14 @@ -- - @buffer@ /must/ be a valid pointer to a @AHardwareBuffer@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImportAndroidHardwareBufferInfoANDROID = VkImportAndroidHardwareBufferInfoANDROID- { -- No documentation found for Nested "VkImportAndroidHardwareBufferInfoANDROID" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportAndroidHardwareBufferInfoANDROID" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportAndroidHardwareBufferInfoANDROID" "vkBuffer"+ , -- | @buffer@ is the Android hardware buffer to import. vkBuffer :: Ptr AHardwareBuffer } deriving (Eq, Show)@@ -261,11 +251,10 @@ -- buffer usage flags -- -- = Description--- #_description# -- -- The @androidHardwareBufferUsage@ field /must/ include Android hardware--- buffer usage flags listed in the--- <{html_spec_relative}#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>+-- buffer usage flags listed in the [AHardwareBuffer Usage+-- Equivalence](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage) -- table when the corresponding Vulkan image usage or image creation flags -- are included in the @usage@ or @flags@ fields of -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2'.@@ -291,15 +280,15 @@ -- @VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkAndroidHardwareBufferUsageANDROID = VkAndroidHardwareBufferUsageANDROID- { -- No documentation found for Nested "VkAndroidHardwareBufferUsageANDROID" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkAndroidHardwareBufferUsageANDROID" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkAndroidHardwareBufferUsageANDROID" "vkAndroidHardwareBufferUsage"+ , -- | @androidHardwareBufferUsage@ returns the the Android hardware buffer+ -- usage flags. vkAndroidHardwareBufferUsage :: Word64 } deriving (Eq, Show)@@ -316,22 +305,19 @@ -- | VkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory -- Android Hardware Buffers ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetAndroidHardwareBufferPropertiesANDROID' data VkAndroidHardwareBufferPropertiesANDROID = VkAndroidHardwareBufferPropertiesANDROID- { -- No documentation found for Nested "VkAndroidHardwareBufferPropertiesANDROID" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkAndroidHardwareBufferPropertiesANDROID" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkAndroidHardwareBufferPropertiesANDROID" "vkAllocationSize"+ , -- | @allocationSize@ is the size of the external memory vkAllocationSize :: VkDeviceSize- , -- No documentation found for Nested "VkAndroidHardwareBufferPropertiesANDROID" "vkMemoryTypeBits"+ , -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory+ -- type which the specified Android hardware buffer /can/ be imported as. vkMemoryTypeBits :: Word32 } deriving (Eq, Show)@@ -350,9 +336,6 @@ -- | VkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an -- Android hardware buffer memory export operation ----- = Description--- #_description#--- -- == Valid Usage -- -- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@@@ -366,17 +349,17 @@ -- @memory@. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetMemoryAndroidHardwareBufferANDROID' data VkMemoryGetAndroidHardwareBufferInfoANDROID = VkMemoryGetAndroidHardwareBufferInfoANDROID- { -- No documentation found for Nested "VkMemoryGetAndroidHardwareBufferInfoANDROID" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryGetAndroidHardwareBufferInfoANDROID" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryGetAndroidHardwareBufferInfoANDROID" "vkMemory"+ , -- | @memory@ is the memory object from which the Android hardware buffer+ -- will be exported. vkMemory :: VkDeviceMemory } deriving (Eq, Show)@@ -394,10 +377,10 @@ -- the image format properties of an Android hardware buffer -- -- = Description--- #_description# -- -- If the Android hardware buffer has one of the formats listed in the--- <{html_spec_relative}#memory-external-android-hardware-buffer-formats Format Equivalence table>,+-- [Format Equivalence+-- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formats), -- then @format@ /must/ have the equivalent Vulkan format listed in the -- table. Otherwise, @format@ /may/ be @VK_FORMAT_UNDEFINED@, indicating -- the Android hardware buffer can only be used with an external format.@@ -454,7 +437,6 @@ -- @VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkChromaLocation', -- 'Graphics.Vulkan.Core10.ImageView.VkComponentMapping',@@ -464,25 +446,35 @@ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrRange', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkAndroidHardwareBufferFormatPropertiesANDROID = VkAndroidHardwareBufferFormatPropertiesANDROID- { -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkFormat"+ , -- | @format@ is the Vulkan format corresponding to the Android hardware+ -- buffer’s format, or @VK_FORMAT_UNDEFINED@ if there isn’t an equivalent+ -- Vulkan format. vkFormat :: VkFormat- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkExternalFormat"+ , -- | @externalFormat@ is an implementation-defined external format identifier+ -- for use with 'VkExternalFormatANDROID'. It /must/ not be zero. vkExternalFormat :: Word64- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkFormatFeatures"+ , -- | @formatFeatures@ describes the capabilities of this external format when+ -- used with an image bound to memory imported from @buffer@. vkFormatFeatures :: VkFormatFeatureFlags- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkSamplerYcbcrConversionComponents"+ , -- | @samplerYcbcrConversionComponents@ is the component swizzle that+ -- /should/ be used in+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'. vkSamplerYcbcrConversionComponents :: VkComponentMapping- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkSuggestedYcbcrModel"+ , -- | @suggestedYcbcrModel@ is a suggested color model to use in the+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'. vkSuggestedYcbcrModel :: VkSamplerYcbcrModelConversion- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkSuggestedYcbcrRange"+ , -- | @suggestedYcbcrRange@ is a suggested numerical value range to use in+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'. vkSuggestedYcbcrRange :: VkSamplerYcbcrRange- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkSuggestedXChromaOffset"+ , -- | @suggestedXChromaOffset@ is a suggested X chroma offset to use in+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'. vkSuggestedXChromaOffset :: VkChromaLocation- , -- No documentation found for Nested "VkAndroidHardwareBufferFormatPropertiesANDROID" "vkSuggestedYChromaOffset"+ , -- | @suggestedYChromaOffset@ is a suggested Y chroma offset to use in+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'. vkSuggestedYChromaOffset :: VkChromaLocation } deriving (Eq, Show)@@ -514,7 +506,6 @@ -- buffer external format -- -- = Description--- #_description# -- -- If @externalFormat@ is zero, the effect is as if the -- @VkExternalFormatANDROID@ structure was not present. Otherwise, the@@ -533,15 +524,15 @@ -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExternalFormatANDROID = VkExternalFormatANDROID- { -- No documentation found for Nested "VkExternalFormatANDROID" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalFormatANDROID" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalFormatANDROID" "vkExternalFormat"+ , -- | @externalFormat@ is an implementation-defined identifier for the+ -- external format vkExternalFormat :: Word64 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs view
@@ -52,7 +52,6 @@ -- | vkAcquireXlibDisplayEXT - Acquire access to a VkDisplayKHR using Xlib -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ The physical device the display is on. --@@ -61,7 +60,6 @@ -- - @display@ The display the caller wishes to control in Vulkan. -- -- = Description--- #_description# -- -- All permissions necessary to control the display are granted to the -- Vulkan instance associated with @physicalDevice@ until the display is@@ -89,14 +87,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_INITIALIZATION_FAILED@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'@@ -105,7 +102,6 @@ -- X11 RandR Output -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ The physical device to query the display handle on. --@@ -119,7 +115,6 @@ -- be returned here. -- -- = Description--- #_description# -- -- If there is no 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR' -- corresponding to @rrOutput@ on @physicalDevice@,@@ -136,11 +131,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs view
@@ -119,7 +119,6 @@ -- | VkBlendOverlapEXT - Enumerant specifying the blend overlap parameter -- -- = Description--- #_description# -- -- - @VK_BLEND_OVERLAP_UNCORRELATED_EXT@ specifies that there is no -- correlation between the source and destination coverage.@@ -130,21 +129,31 @@ -- - @VK_BLEND_OVERLAP_DISJOINT_EXT@ specifies that the source and -- destination coverage are considered to have minimal overlap. ----- > +-----------------------------------+-----------------------------------+--- > | Overlap Mode | Weighting Equations |--- > +===================================+===================================+--- > | @VK_BLEND_OVERLAP_UNCORRELATED_EX | |--- > | T@ | |--- > +-----------------------------------+-----------------------------------+--- > | @VK_BLEND_OVERLAP_CONJOINT_EXT@ | |--- > +-----------------------------------+-----------------------------------+--- > | @VK_BLEND_OVERLAP_DISJOINT_EXT@ | |--- > +-----------------------------------+-----------------------------------+--- >--- > Advanced Blend Overlap Modes+-- +-------------------------------------+--------------------------------------------------------------------------------------++-- | Overlap Mode | Weighting Equations |+-- +=====================================+======================================================================================++-- | @VK_BLEND_OVERLAP_UNCORRELATED_EXT@ | \[ \begin{aligned} |+-- | | p_0(A_s,A_d) & = A_sA_d \\ |+-- | | p_1(A_s,A_d) & = A_s(1-A_d) \\ |+-- | | p_2(A_s,A_d) & = A_d(1-A_s) \\ |+-- | | \end{aligned}\] |+-- +-------------------------------------+--------------------------------------------------------------------------------------++-- | @VK_BLEND_OVERLAP_CONJOINT_EXT@ | \[ \begin{aligned} |+-- | | p_0(A_s,A_d) & = min(A_s,A_d) \\ |+-- | | p_1(A_s,A_d) & = max(A_s-A_d,0) \\ |+-- | | p_2(A_s,A_d) & = max(A_d-A_s,0) \\ |+-- | | \end{aligned}\] |+-- +-------------------------------------+--------------------------------------------------------------------------------------++-- | @VK_BLEND_OVERLAP_DISJOINT_EXT@ | \[ \begin{aligned} |+-- | | p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ |+-- | | p_1(A_s,A_d) & = min(A_s,1-A_d) \\ |+-- | | p_2(A_s,A_d) & = min(A_d,1-A_s) \\ |+-- | | \end{aligned}\] |+-- +-------------------------------------+--------------------------------------------------------------------------------------+ --+-- Advanced Blend Overlap Modes+-- -- = See Also--- #_see_also# -- -- 'VkPipelineColorBlendAdvancedStateCreateInfoEXT' newtype VkBlendOverlapEXT = VkBlendOverlapEXT Int32@@ -339,19 +348,18 @@ -- advanced blending features that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT@ -- structure describe the following features: -- -- = Description--- #_description# -- -- - @advancedBlendCoherentOperations@ specifies whether blending using--- <{html_spec_relative}#framebuffer-blend-advanced advanced blend operations>--- is guaranteed to execute atomically and in--- <{html_spec_relative}#drawing-primitive-order primitive order>. If--- this is @VK_TRUE@,+-- [advanced blend+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced)+-- is guaranteed to execute atomically and in [primitive+-- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing-primitive-order).+-- If this is @VK_TRUE@, -- @VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT@ is treated the -- same as @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@, and advanced blending -- needs no additional synchronization over basic blending. If this is@@ -373,15 +381,14 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT- { -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "vkAdvancedBlendCoherentOperations"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "advancedBlendCoherentOperations" vkAdvancedBlendCoherentOperations :: VkBool32 } deriving (Eq, Show)@@ -400,18 +407,16 @@ -- implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @advancedBlendMaxColorAttachments@ is one greater than the highest -- color attachment index that /can/ be used in a subpass, for a--- pipeline that uses an--- <{html_spec_relative}#framebuffer-blend-advanced advanced blend operation>.+-- pipeline that uses an [advanced blend+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced). -- -- - @advancedBlendIndependentBlend@ specifies whether advanced blend -- operations /can/ vary per-attachment.@@ -448,25 +453,24 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkAdvancedBlendMaxColorAttachments"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendMaxColorAttachments" vkAdvancedBlendMaxColorAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkAdvancedBlendIndependentBlend"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendIndependentBlend" vkAdvancedBlendIndependentBlend :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkAdvancedBlendNonPremultipliedSrcColor"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendNonPremultipliedSrcColor" vkAdvancedBlendNonPremultipliedSrcColor :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkAdvancedBlendNonPremultipliedDstColor"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendNonPremultipliedDstColor" vkAdvancedBlendNonPremultipliedDstColor :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkAdvancedBlendCorrelatedOverlap"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendCorrelatedOverlap" vkAdvancedBlendCorrelatedOverlap :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "vkAdvancedBlendAllOperations"+ , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendAllOperations" vkAdvancedBlendAllOperations :: VkBool32 } deriving (Eq, Show)@@ -494,7 +498,6 @@ -- parameters that affect advanced blend operations -- -- = Description--- #_description# -- -- If this structure is not present, @srcPremultiplied@ and -- @dstPremultiplied@ are both considered to be @VK_TRUE@, and@@ -502,16 +505,16 @@ -- -- == Valid Usage ----- - If the--- <{html_spec_relative}#features-limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>+-- - If the [non-premultiplied source+-- color](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-advancedBlendNonPremultipliedSrcColor) -- property is not supported, @srcPremultiplied@ /must/ be @VK_TRUE@ ----- - If the--- <{html_spec_relative}#features-limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>+-- - If the [non-premultiplied destination+-- color](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-advancedBlendNonPremultipliedDstColor) -- property is not supported, @dstPremultiplied@ /must/ be @VK_TRUE@ ----- - If the--- <{html_spec_relative}#features-limits-advancedBlendCorrelatedOverlap correlated overlap>+-- - If the [correlated+-- overlap](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-advancedBlendCorrelatedOverlap) -- property is not supported, @blendOverlap@ /must/ be -- @VK_BLEND_OVERLAP_UNCORRELATED_EXT@ --@@ -523,20 +526,22 @@ -- - @blendOverlap@ /must/ be a valid 'VkBlendOverlapEXT' value -- -- = See Also--- #_see_also# -- -- 'VkBlendOverlapEXT', @VkBool32@, -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineColorBlendAdvancedStateCreateInfoEXT = VkPipelineColorBlendAdvancedStateCreateInfoEXT- { -- No documentation found for Nested "VkPipelineColorBlendAdvancedStateCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineColorBlendAdvancedStateCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineColorBlendAdvancedStateCreateInfoEXT" "vkSrcPremultiplied"+ , -- | @srcPremultiplied@ specifies whether the source color of the blend+ -- operation is treated as premultiplied. vkSrcPremultiplied :: VkBool32- , -- No documentation found for Nested "VkPipelineColorBlendAdvancedStateCreateInfoEXT" "vkDstPremultiplied"+ , -- | @dstPremultiplied@ specifies whether the destination color of the blend+ -- operation is treated as premultiplied. vkDstPremultiplied :: VkBool32- , -- No documentation found for Nested "VkPipelineColorBlendAdvancedStateCreateInfoEXT" "vkBlendOverlap"+ , -- | @blendOverlap@ is a 'VkBlendOverlapEXT' value specifying how the source+ -- and destination sample’s coverage is correlated. vkBlendOverlap :: VkBlendOverlapEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs view
@@ -71,7 +71,6 @@ -- rasterization mode -- -- = See Also--- #_see_also# -- -- 'VkPipelineRasterizationConservativeStateCreateInfoEXT' newtype VkConservativeRasterizationModeEXT = VkConservativeRasterizationModeEXT Int32@@ -116,13 +115,11 @@ -- future use -- -- = Description--- #_description# -- -- @VkPipelineRasterizationConservativeStateCreateFlagsEXT@ is a bitmask -- type for setting a mask, but is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineRasterizationConservativeStateCreateInfoEXT' newtype VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkPipelineRasterizationConservativeStateCreateFlagsEXT VkFlags@@ -160,14 +157,12 @@ -- implementation -- -- = Members--- #_members# -- -- The members of the -- @VkPhysicalDeviceConservativeRasterizationPropertiesEXT@ structure -- describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @primitiveOverestimationSize@ is the size in pixels the generating -- primitive is increased at each of its edges during conservative@@ -227,7 +222,16 @@ -- rasterization is enabled and the fragment pixel square is fully -- covered by the generating primitive. ----- - @conservativeRasterizationPostDepthCoverage@ /must/ be false.+-- - @conservativeRasterizationPostDepthCoverage@ is true if the+-- implementation supports conservative rasterization with the+-- [@PostDepthCoverage@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage)+-- execution mode enabled. When supported the @SampleMask@ built-in+-- input variable will reflect the coverage after the early+-- per-fragment depth and stencil tests are applied even when+-- conservative rasterization is enabled. Otherwise+-- [@PostDepthCoverage@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage)+-- execution mode /must/ not be used when conservative rasterization is+-- enabled. -- -- == Valid Usage (Implicit) --@@ -240,31 +244,30 @@ -- it is filled with the implementation-dependent limits and properties. -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceConservativeRasterizationPropertiesEXT = VkPhysicalDeviceConservativeRasterizationPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkPrimitiveOverestimationSize"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "primitiveOverestimationSize" vkPrimitiveOverestimationSize :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkMaxExtraPrimitiveOverestimationSize"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "maxExtraPrimitiveOverestimationSize" vkMaxExtraPrimitiveOverestimationSize :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkExtraPrimitiveOverestimationSizeGranularity"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "extraPrimitiveOverestimationSizeGranularity" vkExtraPrimitiveOverestimationSizeGranularity :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkPrimitiveUnderestimation"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "primitiveUnderestimation" vkPrimitiveUnderestimation :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkConservativePointAndLineRasterization"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "conservativePointAndLineRasterization" vkConservativePointAndLineRasterization :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkDegenerateTrianglesRasterized"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "degenerateTrianglesRasterized" vkDegenerateTrianglesRasterized :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkDegenerateLinesRasterized"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "degenerateLinesRasterized" vkDegenerateLinesRasterized :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkFullyCoveredFragmentShaderInputVariable"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "fullyCoveredFragmentShaderInputVariable" vkFullyCoveredFragmentShaderInputVariable :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "vkConservativeRasterizationPostDepthCoverage"+ , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "conservativeRasterizationPostDepthCoverage" vkConservativeRasterizationPostDepthCoverage :: VkBool32 } deriving (Eq, Show)@@ -297,9 +300,6 @@ -- | VkPipelineRasterizationConservativeStateCreateInfoEXT - Structure -- specifying conservative raster state ----- = Description--- #_description#--- -- == Valid Usage -- -- - @extraPrimitiveOverestimationSize@ /must/ be in the range of @0.0@@@ -318,21 +318,25 @@ -- 'VkConservativeRasterizationModeEXT' value -- -- = See Also--- #_see_also# -- -- 'VkConservativeRasterizationModeEXT', -- 'VkPipelineRasterizationConservativeStateCreateFlagsEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineRasterizationConservativeStateCreateInfoEXT = VkPipelineRasterizationConservativeStateCreateInfoEXT- { -- No documentation found for Nested "VkPipelineRasterizationConservativeStateCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineRasterizationConservativeStateCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineRasterizationConservativeStateCreateInfoEXT" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkPipelineRasterizationConservativeStateCreateFlagsEXT- , -- No documentation found for Nested "VkPipelineRasterizationConservativeStateCreateInfoEXT" "vkConservativeRasterizationMode"+ , -- | @conservativeRasterizationMode@ is the conservative rasterization mode+ -- to use. vkConservativeRasterizationMode :: VkConservativeRasterizationModeEXT- , -- No documentation found for Nested "VkPipelineRasterizationConservativeStateCreateInfoEXT" "vkExtraPrimitiveOverestimationSize"+ , -- | @extraPrimitiveOverestimationSize@ is the extra size in pixels to+ -- increase the generating primitive during conservative rasterization at+ -- each of its edges in @X@ and @Y@ equally in screen space beyond the base+ -- overestimation specified in+ -- @VkPhysicalDeviceConservativeRasterizationPropertiesEXT@::@primitiveOverestimationSize@. vkExtraPrimitiveOverestimationSize :: CFloat } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs view
@@ -82,7 +82,6 @@ -- | vkDebugMarkerSetObjectNameEXT - Give a user-friendly name to an object -- -- = Parameters--- #_parameters# -- -- - @device@ is the device that created the object. --@@ -90,9 +89,6 @@ -- 'VkDebugMarkerObjectNameInfoEXT' structure specifying the parameters -- of the name to set on the object. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -106,16 +102,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDebugMarkerObjectNameInfoEXT', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -123,7 +118,6 @@ -- | vkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an object -- -- = Parameters--- #_parameters# -- -- - @device@ is the device that created the object. --@@ -131,9 +125,6 @@ -- 'VkDebugMarkerObjectTagInfoEXT' structure specifying the parameters -- of the tag to attach to the object. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -147,16 +138,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDebugMarkerObjectTagInfoEXT', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -164,7 +154,6 @@ -- | vkCmdDebugMarkerBeginEXT - Open a command buffer marker region -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded.@@ -173,9 +162,6 @@ -- 'VkDebugMarkerMarkerInfoEXT' structure specifying the parameters of -- the marker region to open. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -183,8 +169,8 @@ -- - @pMarkerInfo@ /must/ be a valid pointer to a valid -- @VkDebugMarkerMarkerInfoEXT@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -196,18 +182,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'VkDebugMarkerMarkerInfoEXT'@@ -215,13 +200,11 @@ -- | vkCmdDebugMarkerEndEXT - Close a command buffer marker region -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded. -- -- = Description--- #_description# -- -- An application /may/ open a marker region in one command buffer and -- close it in another, or otherwise split marker regions across multiple@@ -245,8 +228,8 @@ -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -258,25 +241,23 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' foreign import ccall "vkCmdDebugMarkerEndEXT" vkCmdDebugMarkerEndEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO () -- | vkCmdDebugMarkerInsertEXT - Insert a marker label into a command buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded.@@ -285,9 +266,6 @@ -- 'VkDebugMarkerMarkerInfoEXT' structure specifying the parameters of -- the marker to insert. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -295,8 +273,8 @@ -- - @pMarkerInfo@ /must/ be a valid pointer to a valid -- @VkDebugMarkerMarkerInfoEXT@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -308,18 +286,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'VkDebugMarkerMarkerInfoEXT'@@ -328,7 +305,6 @@ -- an object -- -- = Description--- #_description# -- -- Applications /may/ change the name associated with an object simply by -- calling @vkDebugMarkerSetObjectNameEXT@ again with a new string. To@@ -344,7 +320,7 @@ -- -- - @object@ /must/ be a Vulkan object of the type associated with -- @objectType@ as defined in--- <{html_spec_relative}#debug-report-object-types {html_spec_relative}#debug-report-object-types>.+-- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types). -- -- == Valid Usage (Implicit) --@@ -360,21 +336,23 @@ -- - @pObjectName@ /must/ be a null-terminated UTF-8 string -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkDebugMarkerSetObjectNameEXT' data VkDebugMarkerObjectNameInfoEXT = VkDebugMarkerObjectNameInfoEXT- { -- No documentation found for Nested "VkDebugMarkerObjectNameInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugMarkerObjectNameInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugMarkerObjectNameInfoEXT" "vkObjectType"+ , -- | @objectType@ is a+ -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT'+ -- specifying the type of the object to be named. vkObjectType :: VkDebugReportObjectTypeEXT- , -- No documentation found for Nested "VkDebugMarkerObjectNameInfoEXT" "vkObject"+ , -- | @object@ is the object to be named. vkObject :: Word64- , -- No documentation found for Nested "VkDebugMarkerObjectNameInfoEXT" "vkPObjectName"+ , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to+ -- apply to @object@. vkPObjectName :: Ptr CChar } deriving (Eq, Show)@@ -396,7 +374,6 @@ -- an object -- -- = Description--- #_description# -- -- The @tagName@ parameter gives a name or identifier to the type of data -- being tagged. This can be used by debugging layers to easily filter for@@ -411,7 +388,7 @@ -- -- - @object@ /must/ be a Vulkan object of the type associated with -- @objectType@ as defined in--- <{html_spec_relative}#debug-report-object-types {html_spec_relative}#debug-report-object-types>.+-- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types). -- -- == Valid Usage (Implicit) --@@ -429,25 +406,27 @@ -- - @tagSize@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkDebugMarkerSetObjectTagEXT' data VkDebugMarkerObjectTagInfoEXT = VkDebugMarkerObjectTagInfoEXT- { -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkObjectType"+ , -- | @objectType@ is a+ -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT'+ -- specifying the type of the object to be named. vkObjectType :: VkDebugReportObjectTypeEXT- , -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkObject"+ , -- | @object@ is the object to be tagged. vkObject :: Word64- , -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkTagName"+ , -- | @tagName@ is a numerical identifier of the tag. vkTagName :: Word64- , -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkTagSize"+ , -- | @tagSize@ is the number of bytes of data to attach to the object. vkTagSize :: CSize- , -- No documentation found for Nested "VkDebugMarkerObjectTagInfoEXT" "vkPTag"+ , -- | @pTag@ is an array of @tagSize@ bytes containing the data to be+ -- associated with the object. vkPTag :: Ptr () } deriving (Eq, Show)@@ -472,9 +451,6 @@ -- | VkDebugMarkerMarkerInfoEXT - Specify parameters of a command buffer -- marker region ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT@@@ -484,18 +460,21 @@ -- - @pMarkerName@ /must/ be a null-terminated UTF-8 string -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCmdDebugMarkerBeginEXT', 'vkCmdDebugMarkerInsertEXT' data VkDebugMarkerMarkerInfoEXT = VkDebugMarkerMarkerInfoEXT- { -- No documentation found for Nested "VkDebugMarkerMarkerInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugMarkerMarkerInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugMarkerMarkerInfoEXT" "vkPMarkerName"+ , -- | @pMarkerName@ is a pointer to a null-terminated UTF-8 string that+ -- contains the name of the marker. vkPMarkerName :: Ptr CChar- , -- No documentation found for Nested "VkDebugMarkerMarkerInfoEXT" "vkColor"+ , -- | @color@ is an /optional/ RGBA color value that can be associated with+ -- the marker. A particular implementation /may/ choose to ignore this+ -- color value. The values contain RGBA values in order, in the range 0.0+ -- to 1.0. If all elements in @color@ are set to 0.0 then it is ignored. vkColor :: Vector 4 CFloat } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs view
@@ -131,102 +131,83 @@ -- | VkDebugReportObjectTypeEXT - Specify the type of an object handle -- -- = Description--- #_description# ----- > +------------------------------------------+---------------------------+--- > | 'VkDebugReportObjectTypeEXT' | Vulkan Handle Type |--- > +==========================================+===========================+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT | Unknown\/Undefined Handle |--- > | @ | |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EX | 'Graphics.Vulkan.Core10.D |--- > | T@ | eviceInitialization.VkIns |--- > | | tance' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DE | 'Graphics.Vulkan.Core10.D |--- > | VICE_EXT@ | eviceInitialization.VkPhy |--- > | | sicalDevice' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT@ | 'Graphics.Vulkan.Core10.D |--- > | | eviceInitialization.VkDev |--- > | | ice' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT@ | 'Graphics.Vulkan.Core10.Q |--- > | | ueue.VkQueue' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_E | 'Graphics.Vulkan.Core10.Q |--- > | XT@ | ueue.VkSemaphore' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUF | 'Graphics.Vulkan.Core10.Q |--- > | FER_EXT@ | ueue.VkCommandBuffer' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT@ | 'Graphics.Vulkan.Core10.Q |--- > | | ueue.VkFence' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMO | 'Graphics.Vulkan.Core10.M |--- > | RY_EXT@ | emory.VkDeviceMemory' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT@ | 'Graphics.Vulkan.Core10.M |--- > | | emoryManagement.VkBuffer' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT@ | 'Graphics.Vulkan.Core10.M |--- > | | emoryManagement.VkImage' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT@ | 'Graphics.Vulkan.Core10.E |--- > | | vent.VkEvent' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_ | 'Graphics.Vulkan.Core10.Q |--- > | EXT@ | uery.VkQueryPool' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW | 'Graphics.Vulkan.Core10.B |--- > | _EXT@ | ufferView.VkBufferView' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_ | 'Graphics.Vulkan.Core10.I |--- > | EXT@ | mageView.VkImageView' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODU | 'Graphics.Vulkan.Core10.S |--- > | LE_EXT@ | hader.VkShaderModule' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CA | 'Graphics.Vulkan.Core10.P |--- > | CHE_EXT@ | ipelineCache.VkPipelineCa |--- > | | che' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LA | 'Graphics.Vulkan.Core10.P |--- > | YOUT_EXT@ | ipeline.VkPipelineLayout' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS | 'Graphics.Vulkan.Core10.P |--- > | _EXT@ | ipeline.VkRenderPass' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EX | 'Graphics.Vulkan.Core10.P |--- > | T@ | ipeline.VkPipeline' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_ | 'Graphics.Vulkan.Core10.P |--- > | SET_LAYOUT_EXT@ | ipelineLayout.VkDescripto |--- > | | rSetLayout' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT | 'Graphics.Vulkan.Core10.S |--- > | @ | ampler.VkSampler' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_ | 'Graphics.Vulkan.Core10.D |--- > | POOL_EXT@ | escriptorSet.VkDescriptor |--- > | | Pool' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_ | 'Graphics.Vulkan.Core10.D |--- > | SET_EXT@ | escriptorSet.VkDescriptor |--- > | | Set' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER | 'Graphics.Vulkan.Core10.P |--- > | _EXT@ | ass.VkFramebuffer' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POO | 'Graphics.Vulkan.Core10.C |--- > | L_EXT@ | ommandPool.VkCommandPool' |--- > +------------------------------------------+---------------------------+--- > | @VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPOR | 'VkDebugReportCallbackEXT |--- > | T_CALLBACK_EXT_EXT@ | ' |--- > +------------------------------------------+---------------------------+--- >--- > VkDebugReportObjectTypeEXT and Vulkan Handle Relationship+-- \' --+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | 'VkDebugReportObjectTypeEXT' | Vulkan Handle Type |+-- +==================================================================+=====================================================================================================++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@ | Unknown\/Undefined Handle |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkQueue' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkSemaphore' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkFence' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT@ | 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkImage' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT@ | 'Graphics.Vulkan.Core10.Event.VkEvent' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT@ | 'Graphics.Vulkan.Core10.Query.VkQueryPool' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT@ | 'Graphics.Vulkan.Core10.BufferView.VkBufferView' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT@ | 'Graphics.Vulkan.Core10.ImageView.VkImageView' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT@ | 'Graphics.Vulkan.Core10.Shader.VkShaderModule' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT@ | 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT@ | 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipeline' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT@ | 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT@ | 'Graphics.Vulkan.Core10.Sampler.VkSampler' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorPool' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT@ | 'Graphics.Vulkan.Core10.Pass.VkFramebuffer' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT@ | 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT@ | 'VkDebugReportCallbackEXT' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeKHR' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableNVX' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutNVX' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++-- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT@ | 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate' |+-- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------++--+-- VkDebugReportObjectTypeEXT and Vulkan Handle Relationship+-- -- __Note__ -- -- The primary expected use of @VK_ERROR_VALIDATION_FAILED_EXT@ is for@@ -234,7 +215,6 @@ -- see this error code during normal use of the validation layers. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerObjectNameInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerObjectTagInfoEXT',@@ -470,7 +450,6 @@ -- report callback -- -- = See Also--- #_see_also# -- -- 'VkDebugReportFlagsEXT' newtype VkDebugReportFlagBitsEXT = VkDebugReportFlagBitsEXT VkFlags@@ -562,7 +541,6 @@ -- function -- -- = Parameters--- #_parameters# -- -- - @flags@ specifies the 'VkDebugReportFlagBitsEXT' that triggered this -- callback.@@ -593,7 +571,6 @@ -- 'VkDebugReportCallbackEXT' was created. -- -- = Description--- #_description# -- -- The callback /must/ not call @vkDestroyDebugReportCallbackEXT@. --@@ -606,10 +583,9 @@ -- is not @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@ and @object@ is not -- @VK_NULL_HANDLE@, @object@ /must/ be a Vulkan object of the -- corresponding type associated with @objectType@ as defined in--- <{html_spec_relative}#debug-report-object-types {html_spec_relative}#debug-report-object-types>.+-- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types). -- -- = See Also--- #_see_also# -- -- 'VkDebugReportCallbackCreateInfoEXT' type PFN_vkDebugReportCallbackEXT = Ptr (("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> ("pUserData" ::: Ptr ()) -> IO VkBool32)@@ -618,18 +594,13 @@ -- | VkDebugReportCallbackEXT - Opaque handle to a debug report callback -- object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'vkCreateDebugReportCallbackEXT', 'vkDestroyDebugReportCallbackEXT' type VkDebugReportCallbackEXT = Ptr VkDebugReportCallbackEXT_T -- | vkCreateDebugReportCallbackEXT - Create a debug report callback object -- -- = Parameters--- #_parameters# -- -- - @instance@ the instance the callback will be logged on. --@@ -638,14 +609,13 @@ -- will be called. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pCallback@ is a pointer to record the @VkDebugReportCallbackEXT@ -- object created. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -661,14 +631,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDebugReportCallbackCreateInfoEXT', 'VkDebugReportCallbackEXT',@@ -677,7 +646,6 @@ -- | vkDestroyDebugReportCallbackEXT - Destroy a debug report callback object -- -- = Parameters--- #_parameters# -- -- - @instance@ the instance where the callback was created. --@@ -688,10 +656,9 @@ -- callback is active. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -718,7 +685,6 @@ -- - Host access to @callback@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDebugReportCallbackEXT',@@ -727,7 +693,6 @@ -- | vkDebugReportMessageEXT - Inject a message into a debug stream -- -- = Parameters--- #_parameters# -- -- - @instance@ is the debug stream’s @VkInstance@. --@@ -752,7 +717,6 @@ -- conditions. -- -- = Description--- #_description# -- -- The call will propagate through the layers and generate callback(s) as -- indicated by the message’s flags. The parameters are passed on to the@@ -766,7 +730,7 @@ -- - If @objectType@ is not @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@ and -- @object@ is not @VK_NULL_HANDLE@, @object@ /must/ be a Vulkan object -- of the corresponding type associated with @objectType@ as defined in--- <{html_spec_relative}#debug-report-object-types {html_spec_relative}#debug-report-object-types>.+-- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types). -- -- == Valid Usage (Implicit) --@@ -784,7 +748,6 @@ -- - @pMessage@ /must/ be a null-terminated UTF-8 string -- -- = See Also--- #_see_also# -- -- 'VkDebugReportFlagsEXT', 'VkDebugReportObjectTypeEXT', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'@@ -793,7 +756,6 @@ -- a newly created debug report callback -- -- = Description--- #_description# -- -- For each @VkDebugReportCallbackEXT@ that is created the -- @VkDebugReportCallbackCreateInfoEXT@::@flags@ determine when that@@ -826,21 +788,21 @@ -- values -- -- = See Also--- #_see_also# -- -- 'PFN_vkDebugReportCallbackEXT', 'VkDebugReportFlagsEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateDebugReportCallbackEXT' data VkDebugReportCallbackCreateInfoEXT = VkDebugReportCallbackCreateInfoEXT- { -- No documentation found for Nested "VkDebugReportCallbackCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugReportCallbackCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugReportCallbackCreateInfoEXT" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkDebugReportFlagBitsEXT' specifying which+ -- event(s) will cause this callback to be called. vkFlags :: VkDebugReportFlagsEXT- , -- No documentation found for Nested "VkDebugReportCallbackCreateInfoEXT" "vkPfnCallback"+ , -- | @pfnCallback@ is the application callback function to call. vkPfnCallback :: PFN_vkDebugReportCallbackEXT- , -- No documentation found for Nested "VkDebugReportCallbackCreateInfoEXT" "vkPUserData"+ , -- | @pUserData@ is user data to be passed to the callback. vkPUserData :: Ptr () } deriving (Eq, Show)@@ -861,13 +823,11 @@ -- | VkDebugReportFlagsEXT - Bitmask of VkDebugReportFlagBitsEXT -- -- = Description--- #_description# -- -- @VkDebugReportFlagsEXT@ is a bitmask type for setting a mask of zero or -- more 'VkDebugReportFlagBitsEXT'. -- -- = See Also--- #_see_also# -- -- 'VkDebugReportCallbackCreateInfoEXT', 'VkDebugReportFlagBitsEXT', -- 'vkDebugReportMessageEXT'
src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs view
@@ -124,7 +124,6 @@ -- severities of events cause a debug messenger callback -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsMessageSeverityFlagsEXT', 'vkSubmitDebugUtilsMessageEXT' newtype VkDebugUtilsMessageSeverityFlagBitsEXT = VkDebugUtilsMessageSeverityFlagBitsEXT VkFlags@@ -182,7 +181,6 @@ -- events cause a debug messenger callback -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsMessageTypeFlagsEXT' newtype VkDebugUtilsMessageTypeFlagBitsEXT = VkDebugUtilsMessageTypeFlagBitsEXT VkFlags@@ -295,7 +293,6 @@ -- messenger callback function -- -- = Parameters--- #_parameters# -- -- - @messageSeverity@ specifies the -- 'VkDebugUtilsMessageSeverityFlagBitsEXT' that triggered this@@ -311,7 +308,6 @@ -- 'VkDebugUtilsMessengerEXT' was created. -- -- = Description--- #_description# -- -- The callback /must/ not call 'vkDestroyDebugUtilsMessengerEXT'. --@@ -321,7 +317,6 @@ -- development. -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsMessengerCreateInfoEXT' type PFN_vkDebugUtilsMessengerCallbackEXT = Ptr (("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageType" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> ("pUserData" ::: Ptr ()) -> IO VkBool32)@@ -330,7 +325,6 @@ -- | VkDebugUtilsMessengerEXT - Opaque handle to a debug messenger object -- -- = Description--- #_description# -- -- The debug messenger will provide detailed feedback on the application’s -- use of Vulkan when events of interest occur. When an event of interest@@ -341,14 +335,12 @@ -- messages. -- -- = See Also--- #_see_also# -- -- 'vkCreateDebugUtilsMessengerEXT', 'vkDestroyDebugUtilsMessengerEXT' type VkDebugUtilsMessengerEXT = Ptr VkDebugUtilsMessengerEXT_T -- | vkSetDebugUtilsObjectNameEXT - Give a user-friendly name to an object -- -- = Parameters--- #_parameters# -- -- - @device@ is the device that created the object. --@@ -356,9 +348,6 @@ -- 'VkDebugUtilsObjectNameInfoEXT' structure specifying the parameters -- of the name to set on the object. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -373,16 +362,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsObjectNameInfoEXT', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -390,7 +378,6 @@ -- | vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an object -- -- = Parameters--- #_parameters# -- -- - @device@ is the device that created the object. --@@ -398,9 +385,6 @@ -- 'VkDebugUtilsObjectTagInfoEXT' structure specifying the parameters -- of the tag to attach to the object. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -415,16 +399,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsObjectTagInfoEXT', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -432,7 +415,6 @@ -- | vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label region -- -- = Parameters--- #_parameters# -- -- - @queue@ is the queue in which to start a debug label region. --@@ -440,9 +422,6 @@ -- 'VkDebugUtilsLabelEXT' structure specifying the parameters of the -- label region to open. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @queue@ /must/ be a valid @VkQueue@ handle@@ -452,29 +431,26 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | Any | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | Any | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Queue.VkQueue' foreign import ccall "vkQueueBeginDebugUtilsLabelEXT" vkQueueBeginDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO () -- | vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region -- -- = Parameters--- #_parameters# -- -- - @queue@ is the queue in which a debug label region should be closed. -- -- = Description--- #_description# -- -- The calls to 'vkQueueBeginDebugUtilsLabelEXT' and -- 'vkQueueEndDebugUtilsLabelEXT' /must/ be matched and balanced.@@ -490,24 +466,22 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | Any | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | Any | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkQueue' foreign import ccall "vkQueueEndDebugUtilsLabelEXT" vkQueueEndDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> IO () -- | vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queue -- -- = Parameters--- #_parameters# -- -- - @queue@ is the queue into which a debug label will be inserted. --@@ -515,9 +489,6 @@ -- 'VkDebugUtilsLabelEXT' structure specifying the parameters of the -- label to insert. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @queue@ /must/ be a valid @VkQueue@ handle@@ -527,24 +498,22 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | Any | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | Any | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Queue.VkQueue' foreign import ccall "vkQueueInsertDebugUtilsLabelEXT" vkQueueInsertDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO () -- | vkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label region -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded.@@ -553,9 +522,6 @@ -- 'VkDebugUtilsLabelEXT' structure specifying the parameters of the -- label region to open. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -563,8 +529,8 @@ -- - @pLabelInfo@ /must/ be a valid pointer to a valid -- @VkDebugUtilsLabelEXT@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -576,31 +542,28 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkDebugUtilsLabelEXT' foreign import ccall "vkCmdBeginDebugUtilsLabelEXT" vkCmdBeginDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO () -- | vkCmdEndDebugUtilsLabelEXT - Close a command buffer label region -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded. -- -- = Description--- #_description# -- -- An application /may/ open a debug label region in one command buffer and -- close it in another, or otherwise split debug label regions across@@ -624,8 +587,8 @@ -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -637,25 +600,23 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' foreign import ccall "vkCmdEndDebugUtilsLabelEXT" vkCmdEndDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO () -- | vkCmdInsertDebugUtilsLabelEXT - Insert a label into a command buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command is -- recorded.@@ -663,9 +624,6 @@ -- - @pInfo@ is a pointer to an instance of the 'VkDebugUtilsLabelEXT' -- structure specifying the parameters of the label to insert. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -673,8 +631,8 @@ -- - @pLabelInfo@ /must/ be a valid pointer to a valid -- @VkDebugUtilsLabelEXT@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -686,25 +644,23 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkDebugUtilsLabelEXT' foreign import ccall "vkCmdInsertDebugUtilsLabelEXT" vkCmdInsertDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO () -- | vkCreateDebugUtilsMessengerEXT - Create a debug messenger object -- -- = Parameters--- #_parameters# -- -- - @instance@ the instance the messenger will be used with. --@@ -713,14 +669,13 @@ -- conditions under which this messenger will trigger the callback. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pMessenger@ is a pointer to record the @VkDebugUtilsMessengerEXT@ -- object created. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -736,14 +691,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDebugUtilsMessengerCreateInfoEXT', 'VkDebugUtilsMessengerEXT',@@ -752,7 +706,6 @@ -- | vkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object -- -- = Parameters--- #_parameters# -- -- - @instance@ the instance where the callback was created. --@@ -763,10 +716,9 @@ -- callback is active. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -793,7 +745,6 @@ -- - Host access to @messenger@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDebugUtilsMessengerEXT',@@ -802,7 +753,6 @@ -- | vkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream -- -- = Parameters--- #_parameters# -- -- - @instance@ is the debug stream’s @VkInstance@. --@@ -816,7 +766,6 @@ -- 'VkDebugUtilsMessengerCallbackDataEXT' structure. -- -- = Description--- #_description# -- -- The call will propagate through the layers and generate callback(s) as -- indicated by the message’s flags. The parameters are passed on to the@@ -839,7 +788,6 @@ -- @VkDebugUtilsMessengerCallbackDataEXT@ structure -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsMessageSeverityFlagBitsEXT', -- 'VkDebugUtilsMessageTypeFlagsEXT',@@ -850,7 +798,6 @@ -- an object -- -- = Description--- #_description# -- -- Applications /may/ change the name associated with an object simply by -- calling @vkSetDebugUtilsObjectNameEXT@ again with a new string. If@@ -866,7 +813,7 @@ -- -- - @objectHandle@ /must/ be a Vulkan object of the type associated with -- @objectType@ as defined in--- <{html_spec_relative}#debugging-object-types {html_spec_relative}#debugging-object-types>.+-- [{html_spec_relative}#debugging-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-object-types). -- -- == Valid Usage (Implicit) --@@ -882,22 +829,23 @@ -- null-terminated UTF-8 string -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsMessengerCallbackDataEXT', -- 'Graphics.Vulkan.Core10.Core.VkObjectType', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkSetDebugUtilsObjectNameEXT' data VkDebugUtilsObjectNameInfoEXT = VkDebugUtilsObjectNameInfoEXT- { -- No documentation found for Nested "VkDebugUtilsObjectNameInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugUtilsObjectNameInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugUtilsObjectNameInfoEXT" "vkObjectType"+ , -- | @objectType@ is a 'Graphics.Vulkan.Core10.Core.VkObjectType' specifying+ -- the type of the object to be named. vkObjectType :: VkObjectType- , -- No documentation found for Nested "VkDebugUtilsObjectNameInfoEXT" "vkObjectHandle"+ , -- | @objectHandle@ is the object to be named. vkObjectHandle :: Word64- , -- No documentation found for Nested "VkDebugUtilsObjectNameInfoEXT" "vkPObjectName"+ , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to+ -- apply to @objectHandle@. vkPObjectName :: Ptr CChar } deriving (Eq, Show)@@ -919,7 +867,6 @@ -- an object -- -- = Description--- #_description# -- -- The @tagName@ parameter gives a name or identifier to the type of data -- being tagged. This can be used by debugging layers to easily filter for@@ -934,7 +881,7 @@ -- -- - @objectHandle@ /must/ be a Vulkan object of the type associated with -- @objectType@ as defined in--- <{html_spec_relative}#debugging-object-types {html_spec_relative}#debugging-object-types>.+-- [{html_spec_relative}#debugging-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-object-types). -- -- == Valid Usage (Implicit) --@@ -951,25 +898,26 @@ -- - @tagSize@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkObjectType', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkSetDebugUtilsObjectTagEXT' data VkDebugUtilsObjectTagInfoEXT = VkDebugUtilsObjectTagInfoEXT- { -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkObjectType"+ , -- | @objectType@ is a 'Graphics.Vulkan.Core10.Core.VkObjectType' specifying+ -- the type of the object to be named. vkObjectType :: VkObjectType- , -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkObjectHandle"+ , -- | @objectHandle@ is the object to be tagged. vkObjectHandle :: Word64- , -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkTagName"+ , -- | @tagName@ is a numerical identifier of the tag. vkTagName :: Word64- , -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkTagSize"+ , -- | @tagSize@ is the number of bytes of data to attach to the object. vkTagSize :: CSize- , -- No documentation found for Nested "VkDebugUtilsObjectTagInfoEXT" "vkPTag"+ , -- | @pTag@ is an array of @tagSize@ bytes containing the data to be+ -- associated with the object. vkPTag :: Ptr () } deriving (Eq, Show)@@ -993,9 +941,6 @@ *> poke (ptr `plusPtr` 48) (vkPTag (poked :: VkDebugUtilsObjectTagInfoEXT)) -- | VkDebugUtilsLabelEXT - Specify parameters of a label region ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT@@@ -1005,20 +950,23 @@ -- - @pLabelName@ /must/ be a null-terminated UTF-8 string -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsMessengerCallbackDataEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCmdBeginDebugUtilsLabelEXT', 'vkCmdInsertDebugUtilsLabelEXT', -- 'vkQueueBeginDebugUtilsLabelEXT', 'vkQueueInsertDebugUtilsLabelEXT' data VkDebugUtilsLabelEXT = VkDebugUtilsLabelEXT- { -- No documentation found for Nested "VkDebugUtilsLabelEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugUtilsLabelEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugUtilsLabelEXT" "vkPLabelName"+ , -- | @pLabelName@ is a pointer to a null-terminated UTF-8 string that+ -- contains the name of the label. vkPLabelName :: Ptr CChar- , -- No documentation found for Nested "VkDebugUtilsLabelEXT" "vkColor"+ , -- | @color@ is an optional RGBA color value that can be associated with the+ -- label. A particular implementation /may/ choose to ignore this color+ -- value. The values contain RGBA values in order, in the range 0.0 to 1.0.+ -- If all elements in @color@ are set to 0.0 then it is ignored. vkColor :: Vector 4 CFloat } deriving (Eq, Show)@@ -1038,7 +986,6 @@ -- a newly created debug messenger -- -- = Description--- #_description# -- -- For each @VkDebugUtilsMessengerEXT@ that is created the -- @VkDebugUtilsMessengerCreateInfoEXT@::@messageSeverity@ and@@ -1095,7 +1042,6 @@ -- - @messageType@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'PFN_vkDebugUtilsMessengerCallbackEXT', -- 'VkDebugUtilsMessageSeverityFlagsEXT',@@ -1104,19 +1050,21 @@ -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateDebugUtilsMessengerEXT' data VkDebugUtilsMessengerCreateInfoEXT = VkDebugUtilsMessengerCreateInfoEXT- { -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkFlags"+ , -- | @flags@ is 0 and reserved for future use. vkFlags :: VkDebugUtilsMessengerCreateFlagsEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkMessageSeverity"+ , -- | @messageSeverity@ is a bitmask of+ -- 'VkDebugUtilsMessageSeverityFlagBitsEXT' specifying which severity of+ -- event(s) will cause this callback to be called. vkMessageSeverity :: VkDebugUtilsMessageSeverityFlagsEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkMessageType"+ , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "messageType" vkMessageType :: VkDebugUtilsMessageTypeFlagsEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkPfnUserCallback"+ , -- | @pfnUserCallback@ is the application callback function to call. vkPfnUserCallback :: PFN_vkDebugUtilsMessengerCallbackEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "vkPUserData"+ , -- | @pUserData@ is user data to be passed to the callback. vkPUserData :: Ptr () } deriving (Eq, Show)@@ -1142,7 +1090,6 @@ -- returned to the callback -- -- = Description--- #_description# -- -- __Note__ --@@ -1189,36 +1136,55 @@ -- - @objectCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkDebugUtilsLabelEXT', 'VkDebugUtilsMessengerCallbackDataFlagsEXT', -- 'VkDebugUtilsObjectNameInfoEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkSubmitDebugUtilsMessageEXT' data VkDebugUtilsMessengerCallbackDataEXT = VkDebugUtilsMessengerCallbackDataEXT- { -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkFlags"+ , -- | @flags@ is 0 and reserved for future use. vkFlags :: VkDebugUtilsMessengerCallbackDataFlagsEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkPMessageIdName"+ , -- | @pMessageIdName@ is a null-terminated string that identifies the the+ -- particular message ID that is associated with the provided message. If+ -- the message corresponds to a validation layer message, then this string+ -- may contain the portion of the Vulkan specification that is believed to+ -- have been violated. vkPMessageIdName :: Ptr CChar- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkMessageIdNumber"+ , -- | @messageIdNumber@ is the ID number of the triggering message. If the+ -- message corresponds to a validation layer message, then this number is+ -- related to the internal number associated with the message being+ -- triggered. vkMessageIdNumber :: Int32- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkPMessage"+ , -- | @pMessage@ is a null-terminated string detailing the trigger conditions. vkPMessage :: Ptr CChar- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkQueueLabelCount"+ , -- | @queueLabelCount@ is a count of items contained in the @pQueueLabels@+ -- array. vkQueueLabelCount :: Word32- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkPQueueLabels"+ , -- | @pQueueLabels@ is NULL or a pointer to an array of+ -- 'VkDebugUtilsLabelEXT' active in the current @VkQueue@ at the time the+ -- callback was triggered. Refer to [Queue+ -- Labels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-queue-labels)+ -- for more information. vkPQueueLabels :: Ptr VkDebugUtilsLabelEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkCmdBufLabelCount"+ , -- | @cmdBufLabelCount@ is a count of items contained in the @pCmdBufLabels@+ -- array. vkCmdBufLabelCount :: Word32- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkPCmdBufLabels"+ , -- | @pCmdBufLabels@ is NULL or a pointer to an array of+ -- 'VkDebugUtilsLabelEXT' active in the current @VkCommandBuffer@ at the+ -- time the callback was triggered. Refer to [Command Buffer+ -- Labels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-command-buffer-labels)+ -- for more information. vkPCmdBufLabels :: Ptr VkDebugUtilsLabelEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkObjectCount"+ , -- | @objectCount@ is a count of items contained in the @pObjects@ array. vkObjectCount :: Word32- , -- No documentation found for Nested "VkDebugUtilsMessengerCallbackDataEXT" "vkPObjects"+ , -- | @pObjects@ is a pointer to an array of 'VkDebugUtilsObjectNameInfoEXT'+ -- objects related to the detected issue. The array is roughly in order or+ -- importance, but the 0th element is always guaranteed to be the most+ -- important object for this message. vkPObjects :: Ptr VkDebugUtilsObjectNameInfoEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs view
@@ -83,7 +83,6 @@ -- layout binding properties -- -- = Description--- #_description# -- -- - @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ indicates that if -- descriptors in this binding are updated between when the descriptor@@ -92,7 +91,9 @@ -- set descriptors for this binding and the updates do not invalidate -- the command buffer. Descriptor bindings created with this flag are -- also partially exempt from the external synchronization requirement--- in 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets'.+-- in+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR'+-- and 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets'. -- They /can/ be updated concurrently with the set being bound to a -- command buffer in another thread, but not concurrently with the set -- being reset or freed.@@ -136,7 +137,6 @@ -- implementation to observe updates to descriptors that are used. -- -- = See Also--- #_see_also# -- -- 'VkDescriptorBindingFlagsEXT' newtype VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBitsEXT VkFlags@@ -195,10 +195,23 @@ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT" pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT :: VkStructureType pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VkStructureType 1000161004--- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"+-- | @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@+-- specifies that descriptor sets using this layout /must/ be allocated+-- from a descriptor pool created with the+-- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ bit set.+-- Descriptor set layouts created with this bit set have alternate limits+-- for the maximum number of descriptors per-stage and per-pipeline layout.+-- The non-UpdateAfterBind limits only count descriptors in sets created+-- without this flag. The UpdateAfterBind limits count all descriptors, but+-- the limits /may/ be higher than the non-UpdateAfterBind limits. pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT :: VkDescriptorSetLayoutCreateFlagBits pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VkDescriptorSetLayoutCreateFlagBits 0x00000002--- No documentation found for Nested "VkDescriptorPoolCreateFlagBits" "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"+-- | @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ specifies that+-- descriptor sets allocated from this pool /can/ include bindings with the+-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set. It is valid+-- to allocate descriptor sets that have bindings that don’t set the+-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit from a pool that+-- has @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ set. pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT :: VkDescriptorPoolCreateFlagBits pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VkDescriptorPoolCreateFlagBits 0x00000002 -- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"@@ -211,13 +224,11 @@ -- descriptor indexing features that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@ -- structure describe the following features: -- -- = Description--- #_description# -- -- - @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays -- of input attachments /can/ be indexed by dynamically uniform integer@@ -389,53 +400,52 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeaturesEXT- { -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderInputAttachmentArrayDynamicIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderInputAttachmentArrayDynamicIndexing" vkShaderInputAttachmentArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderUniformTexelBufferArrayDynamicIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformTexelBufferArrayDynamicIndexing" vkShaderUniformTexelBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderStorageTexelBufferArrayDynamicIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageTexelBufferArrayDynamicIndexing" vkShaderStorageTexelBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderUniformBufferArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformBufferArrayNonUniformIndexing" vkShaderUniformBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderSampledImageArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderSampledImageArrayNonUniformIndexing" vkShaderSampledImageArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderStorageBufferArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageBufferArrayNonUniformIndexing" vkShaderStorageBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderStorageImageArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageImageArrayNonUniformIndexing" vkShaderStorageImageArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderInputAttachmentArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderInputAttachmentArrayNonUniformIndexing" vkShaderInputAttachmentArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderUniformTexelBufferArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformTexelBufferArrayNonUniformIndexing" vkShaderUniformTexelBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkShaderStorageTexelBufferArrayNonUniformIndexing"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageTexelBufferArrayNonUniformIndexing" vkShaderStorageTexelBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingUniformBufferUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUniformBufferUpdateAfterBind" vkDescriptorBindingUniformBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingSampledImageUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingSampledImageUpdateAfterBind" vkDescriptorBindingSampledImageUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingStorageImageUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageImageUpdateAfterBind" vkDescriptorBindingStorageImageUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingStorageBufferUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageBufferUpdateAfterBind" vkDescriptorBindingStorageBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingUniformTexelBufferUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUniformTexelBufferUpdateAfterBind" vkDescriptorBindingUniformTexelBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingStorageTexelBufferUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageTexelBufferUpdateAfterBind" vkDescriptorBindingStorageTexelBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingUpdateUnusedWhilePending"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUpdateUnusedWhilePending" vkDescriptorBindingUpdateUnusedWhilePending :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingPartiallyBound"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingPartiallyBound" vkDescriptorBindingPartiallyBound :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkDescriptorBindingVariableDescriptorCount"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingVariableDescriptorCount" vkDescriptorBindingVariableDescriptorCount :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "vkRuntimeDescriptorArray"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "runtimeDescriptorArray" vkRuntimeDescriptorArray :: VkBool32 } deriving (Eq, Show)@@ -492,13 +502,11 @@ -- implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of -- descriptors (summed over all descriptor types) that /can/ be created@@ -545,7 +553,7 @@ -- -- - @robustBufferAccessUpdateAfterBind@ is a boolean value indicating -- whether--- <{html_spec_relative}#features-features-robustBufferAccess robustBufferAccess>+-- [@robustBufferAccess@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess) -- /can/ be enabled in a device simultaneously with -- @descriptorBindingUniformBufferUpdateAfterBind@, -- @descriptorBindingStorageBufferUpdateAfterBind@,@@ -557,8 +565,8 @@ -- - @quadDivergentImplicitLod@ is a boolean value indicating whether -- implicit level of detail calculations for image operations have -- well-defined results when the image and\/or sampler objects used for--- the instruction are not uniform within a quad. See--- <{html_spec_relative}#textures-derivative-image-operations Derivative Image Operations>.+-- the instruction are not uniform within a quad. See [Derivative Image+-- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-derivative-image-operations). -- -- - @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to -- @maxPerStageDescriptorSamplers@ but counts descriptors from@@ -661,59 +669,58 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxUpdateAfterBindDescriptorsInAllPools"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxUpdateAfterBindDescriptorsInAllPools" vkMaxUpdateAfterBindDescriptorsInAllPools :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkShaderUniformBufferArrayNonUniformIndexingNative"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderUniformBufferArrayNonUniformIndexingNative" vkShaderUniformBufferArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkShaderSampledImageArrayNonUniformIndexingNative"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderSampledImageArrayNonUniformIndexingNative" vkShaderSampledImageArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkShaderStorageBufferArrayNonUniformIndexingNative"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderStorageBufferArrayNonUniformIndexingNative" vkShaderStorageBufferArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkShaderStorageImageArrayNonUniformIndexingNative"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderStorageImageArrayNonUniformIndexingNative" vkShaderStorageImageArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkShaderInputAttachmentArrayNonUniformIndexingNative"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderInputAttachmentArrayNonUniformIndexingNative" vkShaderInputAttachmentArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkRobustBufferAccessUpdateAfterBind"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "robustBufferAccessUpdateAfterBind" vkRobustBufferAccessUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkQuadDivergentImplicitLod"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "quadDivergentImplicitLod" vkQuadDivergentImplicitLod :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageDescriptorUpdateAfterBindSamplers"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindSamplers" vkMaxPerStageDescriptorUpdateAfterBindSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageDescriptorUpdateAfterBindUniformBuffers"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindUniformBuffers" vkMaxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageDescriptorUpdateAfterBindStorageBuffers"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindStorageBuffers" vkMaxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageDescriptorUpdateAfterBindSampledImages"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindSampledImages" vkMaxPerStageDescriptorUpdateAfterBindSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageDescriptorUpdateAfterBindStorageImages"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindStorageImages" vkMaxPerStageDescriptorUpdateAfterBindStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageDescriptorUpdateAfterBindInputAttachments"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindInputAttachments" vkMaxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxPerStageUpdateAfterBindResources"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageUpdateAfterBindResources" vkMaxPerStageUpdateAfterBindResources :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindSamplers"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindSamplers" vkMaxDescriptorSetUpdateAfterBindSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindUniformBuffers"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindUniformBuffers" vkMaxDescriptorSetUpdateAfterBindUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic" vkMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindStorageBuffers"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageBuffers" vkMaxDescriptorSetUpdateAfterBindStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic" vkMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindSampledImages"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindSampledImages" vkMaxDescriptorSetUpdateAfterBindSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindStorageImages"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageImages" vkMaxDescriptorSetUpdateAfterBindStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "vkMaxDescriptorSetUpdateAfterBindInputAttachments"+ , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindInputAttachments" vkMaxDescriptorSetUpdateAfterBindInputAttachments :: Word32 } deriving (Eq, Show)@@ -775,7 +782,6 @@ -- creation flags for descriptor set layout bindings -- -- = Description--- #_description# -- -- If @bindingCount@ is zero or if this structure is not in the @pNext@ -- chain, the 'VkDescriptorBindingFlagsEXT' for each descriptor set layout@@ -789,6 +795,14 @@ -- - If @bindingCount@ is not zero, @bindingCount@ /must/ equal -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@bindingCount@ --+-- - If+-- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@flags@+-- includes @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@,+-- then all elements of @pBindingFlags@ /must/ not include+-- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@,+-- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@, or+-- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@+-- -- - If an element of @pBindingFlags@ includes -- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@, then all -- other elements of@@ -872,18 +886,19 @@ -- - Each element of @pBindingFlags@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'VkDescriptorBindingFlagsEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfoEXT- { -- No documentation found for Nested "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" "vkBindingCount"+ , -- | @bindingCount@ is zero or the number of elements in @pBindingFlags@. vkBindingCount :: Word32- , -- No documentation found for Nested "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" "vkPBindingFlags"+ , -- | @pBindingFlags@ is a pointer to an array of+ -- 'VkDescriptorBindingFlagsEXT' bitfields, one for each descriptor set+ -- layout binding. vkPBindingFlags :: Ptr VkDescriptorBindingFlagsEXT } deriving (Eq, Show)@@ -903,7 +918,6 @@ -- specifying additional allocation parameters for descriptor sets -- -- = Description--- #_description# -- -- If @descriptorSetCount@ is zero or this structure is not included in the -- @pNext@ chain, then the variable lengths are considered to be zero.@@ -935,17 +949,19 @@ -- valid pointer to an array of @descriptorSetCount@ @uint32_t@ values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfoEXT- { -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" "vkDescriptorSetCount"+ , -- | @descriptorSetCount@ is zero or the number of elements in+ -- @pDescriptorCounts@. vkDescriptorSetCount :: Word32- , -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" "vkPDescriptorCounts"+ , -- | @pDescriptorCounts@ is an array of descriptor counts, with each member+ -- specifying the number of descriptors in a variable descriptor count+ -- binding in the corresponding descriptor set being allocated. vkPDescriptorCounts :: Ptr Word32 } deriving (Eq, Show)@@ -966,7 +982,6 @@ -- supported -- -- = Description--- #_description# -- -- If the create info includes a variable-sized descriptor, then -- @supported@ is determined assuming the requested size of the@@ -989,15 +1004,16 @@ -- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupportEXT- { -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT" "vkMaxVariableDescriptorCount"+ , -- | @maxVariableDescriptorCount@ indicates the maximum number of descriptors+ -- supported in the highest numbered binding of the layout, if that binding+ -- is variable-sized. vkMaxVariableDescriptorCount :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs view
@@ -39,15 +39,11 @@ -- | vkReleaseDisplayEXT - Release access to an acquired VkDisplayKHR -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ The physical device the display is on. -- -- - @display@ The display to release control of. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle@@ -56,11 +52,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'
src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs view
@@ -82,7 +82,6 @@ -- | VkDiscardRectangleModeEXT - Specify the discard rectangle mode -- -- = See Also--- #_see_also# -- -- 'VkPipelineDiscardRectangleStateCreateInfoEXT' newtype VkDiscardRectangleModeEXT = VkDiscardRectangleModeEXT Int32@@ -118,13 +117,11 @@ -- | VkPipelineDiscardRectangleStateCreateFlagsEXT - Reserved for future use -- -- = Description--- #_description# -- -- @VkPipelineDiscardRectangleStateCreateFlagsEXT@ is a bitmask type for -- setting a mask, but is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineDiscardRectangleStateCreateInfoEXT' newtype VkPipelineDiscardRectangleStateCreateFlagsEXT = VkPipelineDiscardRectangleStateCreateFlagsEXT VkFlags@@ -163,7 +160,6 @@ -- | vkCmdSetDiscardRectangleEXT - Set discard rectangles dynamically -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command will be -- recorded.@@ -179,7 +175,6 @@ -- discard rectangles. -- -- = Description--- #_description# -- -- The discard rectangle taken from element i of @pDiscardRectangles@ -- replace the current state for the discard rectangle index@@ -215,8 +210,8 @@ -- - @pDiscardRectangles@ /must/ be a valid pointer to an array of -- @discardRectangleCount@ @VkRect2D@ structures ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics operations@@ -232,18 +227,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'@@ -252,13 +246,11 @@ -- discard rectangle limits that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceDiscardRectanglePropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @maxDiscardRectangles@ is the maximum number of discard rectangles -- that /can/ be specified.@@ -274,15 +266,14 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceDiscardRectanglePropertiesEXT = VkPhysicalDeviceDiscardRectanglePropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "vkMaxDiscardRectangles"+ , -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "maxDiscardRectangles" vkMaxDiscardRectangles :: Word32 } deriving (Eq, Show)@@ -299,9 +290,6 @@ -- | VkPipelineDiscardRectangleStateCreateInfoEXT - Structure specifying -- discard rectangle ----- = Description--- #_description#--- -- == Valid Usage -- -- - @discardRectangleCount@ /must/ be between @0@ and@@ -319,24 +307,28 @@ -- value -- -- = See Also--- #_see_also# -- -- 'VkDiscardRectangleModeEXT', -- 'VkPipelineDiscardRectangleStateCreateFlagsEXT', -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineDiscardRectangleStateCreateInfoEXT = VkPipelineDiscardRectangleStateCreateInfoEXT- { -- No documentation found for Nested "VkPipelineDiscardRectangleStateCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineDiscardRectangleStateCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineDiscardRectangleStateCreateInfoEXT" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkPipelineDiscardRectangleStateCreateFlagsEXT- , -- No documentation found for Nested "VkPipelineDiscardRectangleStateCreateInfoEXT" "vkDiscardRectangleMode"+ , -- | @discardRectangleMode@ is the mode used to determine whether fragments+ -- that lie within the discard rectangle are discarded or not. vkDiscardRectangleMode :: VkDiscardRectangleModeEXT- , -- No documentation found for Nested "VkPipelineDiscardRectangleStateCreateInfoEXT" "vkDiscardRectangleCount"+ , -- | @discardRectangleCount@ is the number of discard rectangles used by the+ -- pipeline. vkDiscardRectangleCount :: Word32- , -- No documentation found for Nested "VkPipelineDiscardRectangleStateCreateInfoEXT" "vkPDiscardRectangles"+ , -- | @pDiscardRectangles@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structures, defining the+ -- discard rectangles. If the discard rectangle state is dynamic, this+ -- member is ignored. vkPDiscardRectangles :: Ptr VkRect2D } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs view
@@ -98,7 +98,6 @@ -- | VkDisplayPowerStateEXT - Possible power states for a display -- -- = See Also--- #_see_also# -- -- 'VkDisplayPowerInfoEXT' newtype VkDisplayPowerStateEXT = VkDisplayPowerStateEXT Int32@@ -144,7 +143,6 @@ -- | VkDeviceEventTypeEXT - Events that can occur on a device object -- -- = See Also--- #_see_also# -- -- 'VkDeviceEventInfoEXT' newtype VkDeviceEventTypeEXT = VkDeviceEventTypeEXT Int32@@ -175,7 +173,6 @@ -- | VkDisplayEventTypeEXT - Events that can occur on a display object -- -- = See Also--- #_see_also# -- -- 'VkDisplayEventInfoEXT' newtype VkDisplayEventTypeEXT = VkDisplayEventTypeEXT Int32@@ -221,7 +218,6 @@ -- | vkDisplayPowerControlEXT - Set the power state of a display -- -- = Parameters--- #_parameters# -- -- - @device@ is a logical device associated with @display@. --@@ -230,9 +226,6 @@ -- - @pDisplayPowerInfo@ is an instance of 'VkDisplayPowerInfoEXT' -- specifying the new power state of @display@. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -244,11 +237,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',@@ -257,7 +249,6 @@ -- | vkRegisterDeviceEventEXT - Signal a fence when a device event occurs -- -- = Parameters--- #_parameters# -- -- - @device@ is a logical device on which the event /may/ occur. --@@ -266,14 +257,13 @@ -- the application. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pFence@ points to a handle in which the resulting fence object is -- returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -288,11 +278,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -301,7 +290,6 @@ -- | vkRegisterDisplayEventEXT - Signal a fence when a display event occurs -- -- = Parameters--- #_parameters# -- -- - @device@ is a logical device associated with @display@ --@@ -312,14 +300,13 @@ -- to the application. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pFence@ points to a handle in which the resulting fence object is -- returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -336,11 +323,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -351,7 +337,6 @@ -- | vkGetSwapchainCounterEXT - Query the current value of a surface counter -- -- = Parameters--- #_parameters# -- -- - @device@ is the @VkDevice@ associated with @swapchain@. --@@ -362,7 +347,6 @@ -- - @pCounterValue@ will return the current value of the counter. -- -- = Description--- #_description# -- -- If a counter is not available because the swapchain is out of date, the -- implementation /may/ return @VK_ERROR_OUT_OF_DATE_KHR@.@@ -389,16 +373,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_DEVICE_LOST@ -- -- - @VK_ERROR_OUT_OF_DATE_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT',@@ -406,9 +389,6 @@ foreign import ccall "vkGetSwapchainCounterEXT" vkGetSwapchainCounterEXT :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult -- | VkDisplayPowerInfoEXT - Describe the power state of a display ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT@@@ -418,16 +398,16 @@ -- - @powerState@ /must/ be a valid 'VkDisplayPowerStateEXT' value -- -- = See Also--- #_see_also# -- -- 'VkDisplayPowerStateEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkDisplayPowerControlEXT' data VkDisplayPowerInfoEXT = VkDisplayPowerInfoEXT- { -- No documentation found for Nested "VkDisplayPowerInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDisplayPowerInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDisplayPowerInfoEXT" "vkPowerState"+ , -- | @powerState@ is a 'VkDisplayPowerStateEXT' value specifying the new+ -- power state of the display. vkPowerState :: VkDisplayPowerStateEXT } deriving (Eq, Show)@@ -443,9 +423,6 @@ *> poke (ptr `plusPtr` 16) (vkPowerState (poked :: VkDisplayPowerInfoEXT)) -- | VkDeviceEventInfoEXT - Describe a device event to create ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT@@@ -455,16 +432,15 @@ -- - @deviceEvent@ /must/ be a valid 'VkDeviceEventTypeEXT' value -- -- = See Also--- #_see_also# -- -- 'VkDeviceEventTypeEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkRegisterDeviceEventEXT' data VkDeviceEventInfoEXT = VkDeviceEventInfoEXT- { -- No documentation found for Nested "VkDeviceEventInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceEventInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceEventInfoEXT" "vkDeviceEvent"+ , -- No documentation found for Nested "VkDeviceEventInfoEXT" "deviceEvent" vkDeviceEvent :: VkDeviceEventTypeEXT } deriving (Eq, Show)@@ -480,9 +456,6 @@ *> poke (ptr `plusPtr` 16) (vkDeviceEvent (poked :: VkDeviceEventInfoEXT)) -- | VkDisplayEventInfoEXT - Describe a display event to create ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT@@@ -492,16 +465,16 @@ -- - @displayEvent@ /must/ be a valid 'VkDisplayEventTypeEXT' value -- -- = See Also--- #_see_also# -- -- 'VkDisplayEventTypeEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkRegisterDisplayEventEXT' data VkDisplayEventInfoEXT = VkDisplayEventInfoEXT- { -- No documentation found for Nested "VkDisplayEventInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDisplayEventInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDisplayEventInfoEXT" "vkDisplayEvent"+ , -- | @displayEvent@ is a 'VkDisplayEventTypeEXT' specifying when the fence+ -- will be signaled. vkDisplayEvent :: VkDisplayEventTypeEXT } deriving (Eq, Show)@@ -517,9 +490,6 @@ *> poke (ptr `plusPtr` 16) (vkDisplayEvent (poked :: VkDisplayEventInfoEXT)) -- | VkSwapchainCounterCreateInfoEXT - Specify the surface counters desired ----- = Description--- #_description#--- -- == Valid Usage -- -- - The bits in @surfaceCounters@ /must/ be supported by@@ -537,16 +507,17 @@ -- values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagsEXT' data VkSwapchainCounterCreateInfoEXT = VkSwapchainCounterCreateInfoEXT- { -- No documentation found for Nested "VkSwapchainCounterCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSwapchainCounterCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSwapchainCounterCreateInfoEXT" "vkSurfaceCounters"+ , -- | @surfaceCounters@ is a bitmask of+ -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT'+ -- specifying surface counters to enable for the swapchain. vkSurfaceCounters :: VkSurfaceCounterFlagsEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs view
@@ -83,7 +83,6 @@ -- | VkSurfaceCounterFlagBitsEXT - Surface-relative counter types -- -- = See Also--- #_see_also# -- -- 'VkSurfaceCounterFlagsEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkGetSwapchainCounterEXT'@@ -124,7 +123,6 @@ -- | vkGetPhysicalDeviceSurfaceCapabilities2EXT - Query surface capabilities -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be associated with -- the swapchain to be created, as described for@@ -137,7 +135,6 @@ -- returned. -- -- = Description--- #_description# -- -- @vkGetPhysicalDeviceSurfaceCapabilities2EXT@ behaves similarly to -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',@@ -158,10 +155,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -169,7 +166,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'VkSurfaceCapabilities2EXT',@@ -179,7 +175,6 @@ -- surface -- -- = Members--- #_members# -- -- All members of @VkSurfaceCapabilities2EXT@ are identical to the -- corresponding members of@@ -187,7 +182,6 @@ -- where one exists. The remaining members are: -- -- = Description--- #_description# -- -- - @sType@ is the type of this structure. --@@ -201,7 +195,8 @@ -- -- - @supportedSurfaceCounters@ /must/ not include -- @VK_SURFACE_COUNTER_VBLANK_EXT@ unless the surface queried is a--- <{html_spec_relative}#wsi-display-surfaces display surface>.+-- [display+-- surface](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#wsi-display-surfaces). -- -- == Valid Usage (Implicit) --@@ -210,7 +205,6 @@ -- - @pNext@ /must/ be @NULL@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkCompositeAlphaFlagsKHR', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',@@ -221,31 +215,31 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagsKHR', -- 'vkGetPhysicalDeviceSurfaceCapabilities2EXT' data VkSurfaceCapabilities2EXT = VkSurfaceCapabilities2EXT- { -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkSType"+ { -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkPNext"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkMinImageCount"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageCount" vkMinImageCount :: Word32- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkMaxImageCount"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageCount" vkMaxImageCount :: Word32- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkCurrentExtent"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "currentExtent" vkCurrentExtent :: VkExtent2D- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkMinImageExtent"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageExtent" vkMinImageExtent :: VkExtent2D- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkMaxImageExtent"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageExtent" vkMaxImageExtent :: VkExtent2D- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkMaxImageArrayLayers"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageArrayLayers" vkMaxImageArrayLayers :: Word32- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkSupportedTransforms"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedTransforms" vkSupportedTransforms :: VkSurfaceTransformFlagsKHR- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkCurrentTransform"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "currentTransform" vkCurrentTransform :: VkSurfaceTransformFlagBitsKHR- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkSupportedCompositeAlpha"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedCompositeAlpha" vkSupportedCompositeAlpha :: VkCompositeAlphaFlagsKHR- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkSupportedUsageFlags"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedUsageFlags" vkSupportedUsageFlags :: VkImageUsageFlags- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "vkSupportedSurfaceCounters"+ , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedSurfaceCounters" vkSupportedSurfaceCounters :: VkSurfaceCounterFlagsEXT } deriving (Eq, Show)@@ -282,13 +276,11 @@ -- | VkSurfaceCounterFlagsEXT - Bitmask of VkSurfaceCounterFlagBitsEXT -- -- = Description--- #_description# -- -- @VkSurfaceCounterFlagsEXT@ is a bitmask type for setting a mask of zero -- or more 'VkSurfaceCounterFlagBitsEXT'. -- -- = See Also--- #_see_also# -- -- 'VkSurfaceCapabilities2EXT', 'VkSurfaceCounterFlagBitsEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkSwapchainCounterCreateInfoEXT'
src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs view
@@ -77,7 +77,6 @@ -- host pointer -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that will be importing -- @pHostPointer@.@@ -86,9 +85,6 @@ -- -- - @pHostPointer@ is the host pointer to import from. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @handleType@ /must/ be@@ -119,14 +115,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',@@ -135,14 +130,13 @@ -- | VkImportMemoryHostPointerInfoEXT - import memory from a host pointer -- -- = Description--- #_description# -- -- Importing memory from a host pointer shares ownership of the memory -- between the host and the Vulkan implementation. The application /can/ -- continue to access the memory through the host pointer but it is the -- application’s responsibility to synchronize device and non-device access--- to the underlying memory as defined in--- <{html_spec_relative}#memory-device-hostaccess Host Access to Device Memory Objects>.+-- to the underlying memory as defined in [Host Access to Device Memory+-- Objects](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-hostaccess). -- -- Applications /can/ import the same underlying memory into multiple -- instances of Vulkan and multiple times into a given Vulkan instance.@@ -194,18 +188,17 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImportMemoryHostPointerInfoEXT = VkImportMemoryHostPointerInfoEXT- { -- No documentation found for Nested "VkImportMemoryHostPointerInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportMemoryHostPointerInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportMemoryHostPointerInfoEXT" "vkHandleType"+ , -- | @handleType@ specifies the handle type. vkHandleType :: VkExternalMemoryHandleTypeFlagBits- , -- No documentation found for Nested "VkImportMemoryHostPointerInfoEXT" "vkPHostPointer"+ , -- | @pHostPointer@ is the host pointer to import from. vkPHostPointer :: Ptr () } deriving (Eq, Show)@@ -223,11 +216,11 @@ *> poke (ptr `plusPtr` 24) (vkPHostPointer (poked :: VkImportMemoryHostPointerInfoEXT)) -- No documentation found for TopLevel "VkMemoryHostPointerPropertiesEXT" data VkMemoryHostPointerPropertiesEXT = VkMemoryHostPointerPropertiesEXT- { -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "vkMemoryTypeBits"+ , -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "memoryTypeBits" vkMemoryTypeBits :: Word32 } deriving (Eq, Show)@@ -246,13 +239,11 @@ -- implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @minImportedHostPointerAlignment@ is the minimum /required/ -- alignment, in bytes, for the base address and size of host pointers@@ -269,15 +260,14 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceExternalMemoryHostPropertiesEXT = VkPhysicalDeviceExternalMemoryHostPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "vkMinImportedHostPointerAlignment"+ , -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "minImportedHostPointerAlignment" vkMinImportedHostPointerAlignment :: VkDeviceSize } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs view
@@ -62,7 +62,6 @@ -- priority -- -- = Description--- #_description# -- -- Priority values are sorted in ascending order. A comparison operation on -- the enum values can be used to determine the priority order.@@ -79,7 +78,6 @@ -- Useful for critical tasks. -- -- = See Also--- #_see_also# -- -- 'VkDeviceQueueGlobalPriorityCreateInfoEXT' newtype VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityEXT Int32@@ -136,7 +134,6 @@ -- priority -- -- = Description--- #_description# -- -- A queue created without specifying -- @VkDeviceQueueGlobalPriorityCreateInfoEXT@ will default to@@ -150,16 +147,16 @@ -- - @globalPriority@ /must/ be a valid 'VkQueueGlobalPriorityEXT' value -- -- = See Also--- #_see_also# -- -- 'VkQueueGlobalPriorityEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoEXT- { -- No documentation found for Nested "VkDeviceQueueGlobalPriorityCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceQueueGlobalPriorityCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceQueueGlobalPriorityCreateInfoEXT" "vkGlobalPriority"+ , -- | @globalPriority@ is the system-wide priority associated to this queue as+ -- specified by 'VkQueueGlobalPriorityEXT' vkGlobalPriority :: VkQueueGlobalPriorityEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs view
@@ -60,7 +60,6 @@ -- | vkSetHdrMetadataEXT - function to set Hdr metadata -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device where the swapchain(s) were created. --@@ -73,9 +72,6 @@ -- - @pMetadata@ is a pointer to the array of @swapchainCount@ -- @VkHdrMetadataEXT@ structures. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -92,7 +88,6 @@ -- created, allocated, or retrieved from the same @VkInstance@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkHdrMetadataEXT',@@ -100,20 +95,13 @@ foreign import ccall "vkSetHdrMetadataEXT" vkSetHdrMetadataEXT :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO () -- | VkXYColorEXT - structure to specify X,Y chromaticity coordinates ----- = Members--- #_members#------ = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkHdrMetadataEXT' data VkXYColorEXT = VkXYColorEXT- { -- No documentation found for Nested "VkXYColorEXT" "vkX"+ { -- No documentation found for Nested "VkXYColorEXT" "x" vkX :: CFloat- , -- No documentation found for Nested "VkXYColorEXT" "vkY"+ , -- No documentation found for Nested "VkXYColorEXT" "y" vkY :: CFloat } deriving (Eq, Show)@@ -128,7 +116,6 @@ -- | VkHdrMetadataEXT - structure to specify Hdr metadata -- -- = Description--- #_description# -- -- __Note__ --@@ -136,30 +123,34 @@ -- thus no Valid Usage is given. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkXYColorEXT', -- 'vkSetHdrMetadataEXT' data VkHdrMetadataEXT = VkHdrMetadataEXT- { -- No documentation found for Nested "VkHdrMetadataEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkDisplayPrimaryRed"+ , -- | @displayPrimaryRed@ is the mastering display’s red primary in+ -- chromaticity coordinates vkDisplayPrimaryRed :: VkXYColorEXT- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkDisplayPrimaryGreen"+ , -- | @displayPrimaryGreen@ is the mastering display’s green primary in+ -- chromaticity coordinates vkDisplayPrimaryGreen :: VkXYColorEXT- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkDisplayPrimaryBlue"+ , -- | @displayPrimaryBlue@ is the mastering display’s blue primary in+ -- chromaticity coordinates vkDisplayPrimaryBlue :: VkXYColorEXT- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkWhitePoint"+ , -- | @whitePoint@ is the mastering display’s white-point in chromaticity+ -- coordinates vkWhitePoint :: VkXYColorEXT- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkMaxLuminance"+ , -- | @maxLuminance@ is the maximum luminance of the mastering display in nits vkMaxLuminance :: CFloat- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkMinLuminance"+ , -- | @minLuminance@ is the minimum luminance of the mastering display in nits vkMinLuminance :: CFloat- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkMaxContentLightLevel"+ , -- | @maxContentLightLevel@ is content’s maximum luminance in nits vkMaxContentLightLevel :: CFloat- , -- No documentation found for Nested "VkHdrMetadataEXT" "vkMaxFrameAverageLightLevel"+ , -- | @maxFrameAverageLightLevel@ is the maximum frame average light level in+ -- nits vkMaxFrameAverageLightLevel :: CFloat } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs view
@@ -72,7 +72,13 @@ ) --- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"+-- | @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ specifies that the+-- @sampleLocationsInfo@ state in+-- 'VkPipelineSampleLocationsStateCreateInfoEXT' will be ignored and /must/+-- be set dynamically with 'vkCmdSetSampleLocationsEXT' before any draw or+-- clear commands. Enabling custom sample locations is still indicated by+-- the @sampleLocationsEnable@ member of+-- @VkPipelineSampleLocationsStateCreateInfoEXT@. pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT :: VkDynamicState pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = VkDynamicState 1000143000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"@@ -102,16 +108,12 @@ -- | vkCmdSetSampleLocationsEXT - Set the dynamic sample locations state -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command will be -- recorded. -- -- - @pSampleLocationsInfo@ is the sample locations state to set. ----- = Description--- #_description#--- -- == Valid Usage -- -- - The bound graphics pipeline /must/ have been created with the@@ -138,8 +140,8 @@ -- - @pSampleLocationsInfo@ /must/ be a valid pointer to a valid -- @VkSampleLocationsInfoEXT@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics operations@@ -153,18 +155,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'VkSampleLocationsInfoEXT'@@ -173,7 +174,6 @@ -- specific multisampling capabilities of a physical device -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device from which to query the -- additional multisampling capabilities.@@ -185,9 +185,6 @@ -- additional multisampling capabilities specific to the sample count -- is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle@@ -200,7 +197,6 @@ -- @VkMultisamplePropertiesEXT@ structure -- -- = See Also--- #_see_also# -- -- 'VkMultisamplePropertiesEXT', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',@@ -210,7 +206,6 @@ -- location -- -- = Description--- #_description# -- -- The domain space of the sample location coordinates has an upper-left -- origin within the pixel in framebuffer space.@@ -224,13 +219,12 @@ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'. -- -- = See Also--- #_see_also# -- -- 'VkSampleLocationsInfoEXT' data VkSampleLocationEXT = VkSampleLocationEXT- { -- No documentation found for Nested "VkSampleLocationEXT" "vkX"+ { -- | @x@ is the horizontal coordinate of the sample’s location. vkX :: CFloat- , -- No documentation found for Nested "VkSampleLocationEXT" "vkY"+ , -- | @y@ is the vertical coordinate of the sample’s location. vkY :: CFloat } deriving (Eq, Show)@@ -246,7 +240,6 @@ -- locations -- -- = Description--- #_description# -- -- This structure /can/ be used either to specify the sample locations to -- be used for rendering or to specify the set of sample locations an image@@ -283,7 +276,6 @@ -- - @sampleLocationsCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkAttachmentSampleLocationsEXT', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',@@ -292,17 +284,22 @@ -- 'VkSampleLocationEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkSubpassSampleLocationsEXT', 'vkCmdSetSampleLocationsEXT' data VkSampleLocationsInfoEXT = VkSampleLocationsInfoEXT- { -- No documentation found for Nested "VkSampleLocationsInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSampleLocationsInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSampleLocationsInfoEXT" "vkSampleLocationsPerPixel"+ , -- | @sampleLocationsPerPixel@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'+ -- specifying the number of sample locations per pixel. vkSampleLocationsPerPixel :: VkSampleCountFlagBits- , -- No documentation found for Nested "VkSampleLocationsInfoEXT" "vkSampleLocationGridSize"+ , -- | @sampleLocationGridSize@ is the size of the sample location grid to+ -- select custom sample locations for. vkSampleLocationGridSize :: VkExtent2D- , -- No documentation found for Nested "VkSampleLocationsInfoEXT" "vkSampleLocationsCount"+ , -- | @sampleLocationsCount@ is the number of sample locations in+ -- @pSampleLocations@. vkSampleLocationsCount :: Word32- , -- No documentation found for Nested "VkSampleLocationsInfoEXT" "vkPSampleLocations"+ , -- | @pSampleLocations@ is an array of @sampleLocationsCount@+ -- 'VkSampleLocationEXT' structures. vkPSampleLocations :: Ptr VkSampleLocationEXT } deriving (Eq, Show)@@ -326,7 +323,6 @@ -- locations state to use in the initial layout transition of attachments -- -- = Description--- #_description# -- -- If the image referenced by the framebuffer attachment at index -- @attachmentIndex@ was not created with@@ -347,13 +343,16 @@ -- structure -- -- = See Also--- #_see_also# -- -- 'VkRenderPassSampleLocationsBeginInfoEXT', 'VkSampleLocationsInfoEXT' data VkAttachmentSampleLocationsEXT = VkAttachmentSampleLocationsEXT- { -- No documentation found for Nested "VkAttachmentSampleLocationsEXT" "vkAttachmentIndex"+ { -- | @attachmentIndex@ is the index of the attachment for which the sample+ -- locations state is provided. vkAttachmentIndex :: Word32- , -- No documentation found for Nested "VkAttachmentSampleLocationsEXT" "vkSampleLocationsInfo"+ , -- | @sampleLocationsInfo@ is the sample locations state to use for the+ -- layout transition of the given attachment from the initial layout of the+ -- attachment to the image layout specified for the attachment in the first+ -- subpass using it. vkSampleLocationsInfo :: VkSampleLocationsInfoEXT } deriving (Eq, Show)@@ -370,7 +369,6 @@ -- given subpass -- -- = Description--- #_description# -- -- If the image referenced by the depth\/stencil attachment used in the -- subpass identified by @subpassIndex@ was not created with@@ -394,13 +392,16 @@ -- structure -- -- = See Also--- #_see_also# -- -- 'VkRenderPassSampleLocationsBeginInfoEXT', 'VkSampleLocationsInfoEXT' data VkSubpassSampleLocationsEXT = VkSubpassSampleLocationsEXT- { -- No documentation found for Nested "VkSubpassSampleLocationsEXT" "vkSubpassIndex"+ { -- | @subpassIndex@ is the index of the subpass for which the sample+ -- locations state is provided. vkSubpassIndex :: Word32- , -- No documentation found for Nested "VkSubpassSampleLocationsEXT" "vkSampleLocationsInfo"+ , -- | @sampleLocationsInfo@ is the sample locations state to use for the+ -- layout transition of the depth\/stencil attachment away from the image+ -- layout the attachment is used with in the subpass specified in+ -- @subpassIndex@. vkSampleLocationsInfo :: VkSampleLocationsInfoEXT } deriving (Eq, Show)@@ -416,9 +417,6 @@ -- locations to use for the layout transition of custom sample locations -- compatible depth\/stencil attachments ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -435,23 +433,47 @@ -- @VkSubpassSampleLocationsEXT@ structures -- -- = See Also--- #_see_also# -- -- 'VkAttachmentSampleLocationsEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkSubpassSampleLocationsEXT' data VkRenderPassSampleLocationsBeginInfoEXT = VkRenderPassSampleLocationsBeginInfoEXT- { -- No documentation found for Nested "VkRenderPassSampleLocationsBeginInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkRenderPassSampleLocationsBeginInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkRenderPassSampleLocationsBeginInfoEXT" "vkAttachmentInitialSampleLocationsCount"+ , -- | @attachmentInitialSampleLocationsCount@ is the number of elements in the+ -- @pAttachmentInitialSampleLocations@ array. vkAttachmentInitialSampleLocationsCount :: Word32- , -- No documentation found for Nested "VkRenderPassSampleLocationsBeginInfoEXT" "vkPAttachmentInitialSampleLocations"+ , -- | @pAttachmentInitialSampleLocations@ is an array of+ -- @attachmentInitialSampleLocationsCount@ 'VkAttachmentSampleLocationsEXT'+ -- structures specifying the attachment indices and their corresponding+ -- sample location state. Each element of+ -- @pAttachmentInitialSampleLocations@ /can/ specify the sample location+ -- state to use in the automatic layout transition performed to transition+ -- a depth\/stencil attachment from the initial layout of the attachment to+ -- the image layout specified for the attachment in the first subpass using+ -- it. vkPAttachmentInitialSampleLocations :: Ptr VkAttachmentSampleLocationsEXT- , -- No documentation found for Nested "VkRenderPassSampleLocationsBeginInfoEXT" "vkPostSubpassSampleLocationsCount"+ , -- | @postSubpassSampleLocationsCount@ is the number of elements in the+ -- @pPostSubpassSampleLocations@ array. vkPostSubpassSampleLocationsCount :: Word32- , -- No documentation found for Nested "VkRenderPassSampleLocationsBeginInfoEXT" "vkPPostSubpassSampleLocations"+ , -- | @pPostSubpassSampleLocations@ is an array of+ -- @postSubpassSampleLocationsCount@ 'VkSubpassSampleLocationsEXT'+ -- structures specifying the subpass indices and their corresponding sample+ -- location state. Each element of @pPostSubpassSampleLocations@ /can/+ -- specify the sample location state to use in the automatic layout+ -- transition performed to transition the depth\/stencil attachment used by+ -- the specified subpass to the image layout specified in a dependent+ -- subpass or to the final layout of the attachment in case the specified+ -- subpass is the last subpass using that attachment. In addition, if+ -- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@+ -- is @VK_FALSE@, each element of @pPostSubpassSampleLocations@ /must/+ -- specify the sample location state that matches the sample locations used+ -- by all pipelines that will be bound to a command buffer during the+ -- specified subpass. If @variableSampleLocations@ is @VK_TRUE@, the sample+ -- locations used for rasterization do not depend on+ -- @pPostSubpassSampleLocations@. vkPPostSubpassSampleLocations :: Ptr VkSubpassSampleLocationsEXT } deriving (Eq, Show)@@ -474,9 +496,6 @@ -- | VkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying -- sample locations for a pipeline ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -486,18 +505,22 @@ -- structure -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'VkSampleLocationsInfoEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineSampleLocationsStateCreateInfoEXT = VkPipelineSampleLocationsStateCreateInfoEXT- { -- No documentation found for Nested "VkPipelineSampleLocationsStateCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineSampleLocationsStateCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineSampleLocationsStateCreateInfoEXT" "vkSampleLocationsEnable"+ , -- | @sampleLocationsEnable@ controls whether custom sample locations are+ -- used. If @sampleLocationsEnable@ is @VK_FALSE@, the default sample+ -- locations are used and the values specified in @sampleLocationsInfo@ are+ -- ignored. vkSampleLocationsEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineSampleLocationsStateCreateInfoEXT" "vkSampleLocationsInfo"+ , -- | @sampleLocationsInfo@ is the sample locations to use during+ -- rasterization if @sampleLocationsEnable@ is @VK_TRUE@ and the graphics+ -- pipeline isn’t created with @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@. vkSampleLocationsInfo :: VkSampleLocationsInfoEXT } deriving (Eq, Show)@@ -517,13 +540,11 @@ -- sample location limits that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceSampleLocationsPropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @sampleLocationSampleCounts@ is a bitmask of -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'@@ -557,25 +578,24 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceSampleLocationsPropertiesEXT = VkPhysicalDeviceSampleLocationsPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkSampleLocationSampleCounts"+ , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationSampleCounts" vkSampleLocationSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkMaxSampleLocationGridSize"+ , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "maxSampleLocationGridSize" vkMaxSampleLocationGridSize :: VkExtent2D- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkSampleLocationCoordinateRange"+ , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationCoordinateRange" vkSampleLocationCoordinateRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkSampleLocationSubPixelBits"+ , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationSubPixelBits" vkSampleLocationSubPixelBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "vkVariableSampleLocations"+ , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "variableSampleLocations" vkVariableSampleLocations :: VkBool32 } deriving (Eq, Show)@@ -600,9 +620,6 @@ -- | VkMultisamplePropertiesEXT - Structure returning information about -- sample count specific additional multisampling capabilities ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT@@@ -610,17 +627,17 @@ -- - @pNext@ /must/ be @NULL@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetPhysicalDeviceMultisamplePropertiesEXT' data VkMultisamplePropertiesEXT = VkMultisamplePropertiesEXT- { -- No documentation found for Nested "VkMultisamplePropertiesEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMultisamplePropertiesEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMultisamplePropertiesEXT" "vkMaxSampleLocationGridSize"+ , -- | @maxSampleLocationGridSize@ is the maximum size of the pixel grid in+ -- which sample locations /can/ vary. vkMaxSampleLocationGridSize :: VkExtent2D } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs view
@@ -65,7 +65,6 @@ -- | VkSamplerReductionModeEXT - Specify reduction mode for texture filtering -- -- = See Also--- #_see_also# -- -- 'VkSamplerReductionModeCreateInfoEXT' newtype VkSamplerReductionModeEXT = VkSamplerReductionModeEXT Int32@@ -91,8 +90,8 @@ -- | @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@ specifies that texel -- values are combined by computing a weighted average of values in the--- footprint, using weights as specified in--- <{html_spec_relative}#textures-unnormalized-to-integer the image operations chapter>.+-- footprint, using weights as specified in [the image operations+-- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-unnormalized-to-integer). pattern VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT :: VkSamplerReductionModeEXT pattern VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VkSamplerReductionModeEXT 0 @@ -126,13 +125,11 @@ -- sampler filter minmax limits that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @filterMinmaxSingleComponentFormats@ is a boolean value indicating -- whether a minimum set of required formats support min\/max@@ -196,17 +193,16 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "vkFilterMinmaxSingleComponentFormats"+ , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "filterMinmaxSingleComponentFormats" vkFilterMinmaxSingleComponentFormats :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "vkFilterMinmaxImageComponentMapping"+ , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "filterMinmaxImageComponentMapping" vkFilterMinmaxImageComponentMapping :: VkBool32 } deriving (Eq, Show)@@ -226,7 +222,6 @@ -- reduction mode -- -- = Description--- #_description# -- -- If this structure is not present, @reductionMode@ is considered to be -- @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@.@@ -239,16 +234,16 @@ -- - @reductionMode@ /must/ be a valid 'VkSamplerReductionModeEXT' value -- -- = See Also--- #_see_also# -- -- 'VkSamplerReductionModeEXT', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfoEXT- { -- No documentation found for Nested "VkSamplerReductionModeCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSamplerReductionModeCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSamplerReductionModeCreateInfoEXT" "vkReductionMode"+ , -- | @reductionMode@ is an enum of type 'VkSamplerReductionModeEXT' that+ -- controls how texture filtering combines texel values. vkReductionMode :: VkSamplerReductionModeEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs view
@@ -92,7 +92,6 @@ -- | VkValidationCacheHeaderVersionEXT - Encode validation cache version -- -- = See Also--- #_see_also# -- -- UNKNOWN:vkCreateValdiationCacheEXT, 'vkGetValidationCacheDataEXT' newtype VkValidationCacheHeaderVersionEXT = VkValidationCacheHeaderVersionEXT Int32@@ -121,13 +120,11 @@ -- | VkValidationCacheCreateFlagsEXT - Reserved for future use -- -- = Description--- #_description# -- -- @VkValidationCacheCreateFlagsEXT@ is a bitmask type for setting a mask, -- but is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkValidationCacheCreateInfoEXT' newtype VkValidationCacheCreateFlagsEXT = VkValidationCacheCreateFlagsEXT VkFlags@@ -170,11 +167,7 @@ data VkValidationCacheEXT_T -- | VkValidationCacheEXT - Opaque handle to a validation cache object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkShaderModuleValidationCacheCreateInfoEXT', -- 'vkCreateValidationCacheEXT', 'vkDestroyValidationCacheEXT',@@ -183,7 +176,6 @@ -- | vkCreateValidationCacheEXT - Creates a new validation cache -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the validation cache -- object.@@ -193,13 +185,14 @@ -- cache object. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pValidationCache@ is a pointer to a @VkValidationCacheEXT@ handle -- in which the resulting validation cache object is returned. -- -- = Description--- #_description# -- -- __Note__ --@@ -243,14 +236,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -259,7 +251,6 @@ -- | vkDestroyValidationCacheEXT - Destroy a validation cache object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the validation cache -- object.@@ -267,10 +258,9 @@ -- - @validationCache@ is the handle of the validation cache to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -299,7 +289,6 @@ -- - Host access to @validationCache@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -308,7 +297,6 @@ -- | vkGetValidationCacheDataEXT - Get the data store from a validation cache -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the validation cache. --@@ -320,7 +308,6 @@ -- - @pData@ is either @NULL@ or a pointer to a buffer. -- -- = Description--- #_description# -- -- If @pData@ is @NULL@, then the maximum size of the data that /can/ be -- retrieved from the validation cache, in bytes, is returned in@@ -349,28 +336,26 @@ -- bytes written to @pData@ /must/ be a header consisting of the following -- members: ----- > +----+--------------+--------------------------------------------------+--- > | Of | Size | Meaning |--- > | fs | | |--- > | et | | |--- > +====+==============+==================================================+--- > | 0 | 4 | length in bytes of the entire validation cache |--- > | | | header written as a stream of bytes, with the |--- > | | | least significant byte first |--- > +----+--------------+--------------------------------------------------+--- > | 4 | 4 | a 'VkValidationCacheHeaderVersionEXT' value |--- > | | | written as a stream of bytes, with the least |--- > | | | significant byte first |--- > +----+--------------+--------------------------------------------------+--- > | 8 | @VK_UUID_SIZ | a layer commit ID expressed as a UUID, which |--- > | | E@ | uniquely identifies the version of the |--- > | | | validation layers used to generate these |--- > | | | validation results |--- > +----+--------------+--------------------------------------------------+--- >--- > Layout for validation cache header version--- > @VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT@+-- +--------+----------------+--------------------------------------------------++-- | Offset | Size | Meaning |+-- +========+================+==================================================++-- | 0 | 4 | length in bytes of the entire validation cache |+-- | | | header written as a stream of bytes, with the |+-- | | | least significant byte first |+-- +--------+----------------+--------------------------------------------------++-- | 4 | 4 | a 'VkValidationCacheHeaderVersionEXT' value |+-- | | | written as a stream of bytes, with the least |+-- | | | significant byte first |+-- +--------+----------------+--------------------------------------------------++-- | 8 | @VK_UUID_SIZE@ | a layer commit ID expressed as a UUID, which |+-- | | | uniquely identifies the version of the |+-- | | | validation layers used to generate these |+-- | | | validation results |+-- +--------+----------------+--------------------------------------------------+ --+-- Layout for validation cache header version+-- @VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT@+-- -- The first four bytes encode the length of the entire validation cache -- header, in bytes. This value includes all fields in the header including -- the validation cache version field and the size of the length field.@@ -401,18 +386,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkValidationCacheEXT'@@ -421,7 +405,6 @@ -- caches -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the validation cache -- objects.@@ -436,7 +419,6 @@ -- included after the merge. -- -- = Description--- #_description# -- -- __Note__ --@@ -471,16 +453,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkValidationCacheEXT'@@ -488,9 +469,6 @@ -- | VkValidationCacheCreateInfoEXT - Structure specifying parameters of a -- newly created validation cache ----- = Description--- #_description#--- -- == Valid Usage -- -- - If @initialDataSize@ is not @0@, it /must/ be equal to the size of@@ -513,20 +491,23 @@ -- pointer to an array of @initialDataSize@ bytes -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkValidationCacheCreateFlagsEXT', 'vkCreateValidationCacheEXT' data VkValidationCacheCreateInfoEXT = VkValidationCacheCreateInfoEXT- { -- No documentation found for Nested "VkValidationCacheCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkValidationCacheCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkValidationCacheCreateInfoEXT" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkValidationCacheCreateFlagsEXT- , -- No documentation found for Nested "VkValidationCacheCreateInfoEXT" "vkInitialDataSize"+ , -- | @initialDataSize@ is the number of bytes in @pInitialData@. If+ -- @initialDataSize@ is zero, the validation cache will initially be empty. vkInitialDataSize :: CSize- , -- No documentation found for Nested "VkValidationCacheCreateInfoEXT" "vkPInitialData"+ , -- | @pInitialData@ is a pointer to previously retrieved validation cache+ -- data. If the validation cache data is incompatible (as defined below)+ -- with the device, the validation cache will be initially empty. If+ -- @initialDataSize@ is zero, @pInitialData@ is ignored. vkPInitialData :: Ptr () } deriving (Eq, Show)@@ -547,9 +528,6 @@ -- | VkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to -- use during shader module creation ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -558,15 +536,17 @@ -- - @validationCache@ /must/ be a valid @VkValidationCacheEXT@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkValidationCacheEXT' data VkShaderModuleValidationCacheCreateInfoEXT = VkShaderModuleValidationCacheCreateInfoEXT- { -- No documentation found for Nested "VkShaderModuleValidationCacheCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkShaderModuleValidationCacheCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkShaderModuleValidationCacheCreateInfoEXT" "vkValidationCache"+ , -- | @validationCache@ is the validation cache object from which the results+ -- of prior validation attempts will be written, and to which new+ -- validation results for this VkShaderModule will be written (if not+ -- already present). vkValidationCache :: VkValidationCacheEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs view
@@ -60,7 +60,6 @@ -- | VkValidationCheckEXT - Specify validation checks to disable -- -- = See Also--- #_see_also# -- -- 'VkValidationFlagsEXT' newtype VkValidationCheckEXT = VkValidationCheckEXT Int32@@ -103,9 +102,6 @@ -- | VkValidationFlagsEXT - Specify validation checks to disable for a Vulkan -- instance ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT@@@ -116,17 +112,18 @@ -- - @disabledValidationCheckCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkValidationCheckEXT' data VkValidationFlagsEXT = VkValidationFlagsEXT- { -- No documentation found for Nested "VkValidationFlagsEXT" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkValidationFlagsEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkValidationFlagsEXT" "vkDisabledValidationCheckCount"+ , -- | @disabledValidationCheckCount@ is the number of checks to disable. vkDisabledValidationCheckCount :: Word32- , -- No documentation found for Nested "VkValidationFlagsEXT" "vkPDisabledValidationChecks"+ , -- | @pDisabledValidationChecks@ is a pointer to an array of+ -- 'VkValidationCheckEXT' values specifying the validation checks to be+ -- disabled. vkPDisabledValidationChecks :: Ptr VkValidationCheckEXT } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs view
@@ -51,7 +51,6 @@ -- divisor used in instanced rendering -- -- = Description--- #_description# -- -- If this structure is not used to define a divisor value for an attribute -- then the divisor has a logical default value of 1.@@ -70,13 +69,19 @@ -- @binding@. -- -- = See Also--- #_see_also# -- -- 'VkPipelineVertexInputDivisorStateCreateInfoEXT' data VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescriptionEXT- { -- No documentation found for Nested "VkVertexInputBindingDivisorDescriptionEXT" "vkBinding"+ { -- | @binding@ is the binding number for which the divisor is specified. vkBinding :: Word32- , -- No documentation found for Nested "VkVertexInputBindingDivisorDescriptionEXT" "vkDivisor"+ , -- | @divisor@ is the the number of successive instances that will use the+ -- same value of the vertex attribute when instanced rendering is enabled.+ -- For example, if the divisor is N, the same vertex attribute will applied+ -- to N successive instances before moving on to the next vertex attribute.+ -- If a value of 0 is used for the divisor, then the first vertex attribute+ -- will be applied to all instances. The maximum value of divisor is+ -- implementation dependent and can be queried using+ -- @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@::@maxVertexAttribDivisor@. vkDivisor :: Word32 } deriving (Eq, Show)@@ -91,9 +96,6 @@ -- | VkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying -- vertex attributes assignment during instanced rendering ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -106,18 +108,20 @@ -- - @vertexBindingDivisorCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkVertexInputBindingDivisorDescriptionEXT' data VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfoEXT- { -- No documentation found for Nested "VkPipelineVertexInputDivisorStateCreateInfoEXT" "vkSType"+ { -- | @sType@ is the type of this structure vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineVertexInputDivisorStateCreateInfoEXT" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineVertexInputDivisorStateCreateInfoEXT" "vkVertexBindingDivisorCount"+ , -- | @vertexBindingDivisorCount@ is the number of elements in the+ -- @pVertexBindingDivisors@ array. vkVertexBindingDivisorCount :: Word32- , -- No documentation found for Nested "VkPipelineVertexInputDivisorStateCreateInfoEXT" "vkPVertexBindingDivisors"+ , -- | @pVertexBindingDivisors@ is a pointer to an array of+ -- @VkVertexInputBindingDivisorDescriptionEXT@ structures, which specifies+ -- the divisor value for each binding. vkPVertexBindingDivisors :: Ptr VkVertexInputBindingDivisorDescriptionEXT } deriving (Eq, Show)@@ -138,13 +142,11 @@ -- by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @maxVertexAttribDivisor@ is the maximum value of the number of -- instances that will repeat the value of vertex attribute data when@@ -156,15 +158,14 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "vkMaxVertexAttribDivisor"+ , -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "maxVertexAttribDivisor" vkMaxVertexAttribDivisor :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs view
@@ -63,7 +63,6 @@ -- display -- -- = Parameters--- #_parameters# -- -- - @device@ is the device associated with @swapchain@. --@@ -72,9 +71,6 @@ -- - @pDisplayTimingProperties@ is a pointer to an instance of the -- @VkRefreshCycleDurationGOOGLE@ structure. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -93,16 +89,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_DEVICE_LOST@ -- -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkRefreshCycleDurationGOOGLE',@@ -112,7 +107,6 @@ -- previously-presented image -- -- = Parameters--- #_parameters# -- -- - @device@ is the device associated with @swapchain@. --@@ -127,7 +121,6 @@ -- of @VkPastPresentationTimingGOOGLE@ structures. -- -- = Description--- #_description# -- -- If @pPresentationTimings@ is @NULL@, then the number of newly-available -- timing records for the given @swapchain@ is returned in@@ -166,12 +159,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_DEVICE_LOST@ -- -- - @VK_ERROR_OUT_OF_DATE_KHR@@@ -179,7 +172,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkPastPresentationTimingGOOGLE',@@ -188,15 +180,12 @@ -- | VkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a -- display ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'vkGetRefreshCycleDurationGOOGLE' data VkRefreshCycleDurationGOOGLE = VkRefreshCycleDurationGOOGLE- { -- No documentation found for Nested "VkRefreshCycleDurationGOOGLE" "vkRefreshDuration"+ { -- | @refreshDuration@ is the number of nanoseconds from the start of one+ -- refresh cycle to the next. vkRefreshDuration :: Word64 } deriving (Eq, Show)@@ -210,7 +199,6 @@ -- about a previously-presented image -- -- = Description--- #_description# -- -- The results for a given @swapchain@ and @presentID@ are only returned -- once from @vkGetPastPresentationTimingGOOGLE@.@@ -234,19 +222,33 @@ -- @presentMargin@ is satisfactory. -- -- = See Also--- #_see_also# -- -- 'vkGetPastPresentationTimingGOOGLE' data VkPastPresentationTimingGOOGLE = VkPastPresentationTimingGOOGLE- { -- No documentation found for Nested "VkPastPresentationTimingGOOGLE" "vkPresentID"+ { -- | @presentID@ is an application-provided value that was given to a+ -- previous @vkQueuePresentKHR@ command via+ -- 'VkPresentTimeGOOGLE'::@presentID@ (see below). It /can/ be used to+ -- uniquely identify a previous present with the+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR' command. vkPresentID :: Word32- , -- No documentation found for Nested "VkPastPresentationTimingGOOGLE" "vkDesiredPresentTime"+ , -- | @desiredPresentTime@ is an application-provided value that was given to+ -- a previous+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR' command+ -- via 'VkPresentTimeGOOGLE'::@desiredPresentTime@. If non-zero, it was+ -- used by the application to indicate that an image not be presented any+ -- sooner than @desiredPresentTime@. vkDesiredPresentTime :: Word64- , -- No documentation found for Nested "VkPastPresentationTimingGOOGLE" "vkActualPresentTime"+ , -- | @actualPresentTime@ is the time when the image of the @swapchain@ was+ -- actually displayed. vkActualPresentTime :: Word64- , -- No documentation found for Nested "VkPastPresentationTimingGOOGLE" "vkEarliestPresentTime"+ , -- | @earliestPresentTime@ is the time when the image of the @swapchain@+ -- could have been displayed. This /may/ differ from @actualPresentTime@ if+ -- the application requested that the image be presented no sooner than+ -- 'VkPresentTimeGOOGLE'::@desiredPresentTime@. vkEarliestPresentTime :: Word64- , -- No documentation found for Nested "VkPastPresentationTimingGOOGLE" "vkPresentMargin"+ , -- | @presentMargin@ is an indication of how early the @vkQueuePresentKHR@+ -- command was processed compared to how soon it needed to be processed,+ -- and still be presented at @earliestPresentTime@. vkPresentMargin :: Word64 } deriving (Eq, Show)@@ -267,9 +269,6 @@ -- | VkPresentTimesInfoGOOGLE - The earliest time each image should be -- presented ----- = Description--- #_description#--- -- == Valid Usage -- -- - @swapchainCount@ /must/ be the same value as@@ -286,17 +285,20 @@ -- - @swapchainCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkPresentTimeGOOGLE', 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPresentTimesInfoGOOGLE = VkPresentTimesInfoGOOGLE- { -- No documentation found for Nested "VkPresentTimesInfoGOOGLE" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPresentTimesInfoGOOGLE" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPresentTimesInfoGOOGLE" "vkSwapchainCount"+ , -- | @swapchainCount@ is the number of swapchains being presented to by this+ -- command. vkSwapchainCount :: Word32- , -- No documentation found for Nested "VkPresentTimesInfoGOOGLE" "vkPTimes"+ , -- | @pTimes@ is @NULL@ or a pointer to an array of @VkPresentTimeGOOGLE@+ -- elements with @swapchainCount@ entries. If not @NULL@, each element of+ -- @pTimes@ contains the earliest time to present the image corresponding+ -- to the entry in the @VkPresentInfoKHR@::@pImageIndices@ array. vkPTimes :: Ptr VkPresentTimeGOOGLE } deriving (Eq, Show)@@ -314,17 +316,23 @@ *> poke (ptr `plusPtr` 24) (vkPTimes (poked :: VkPresentTimesInfoGOOGLE)) -- | VkPresentTimeGOOGLE - The earliest time image should be presented ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkPresentTimesInfoGOOGLE' data VkPresentTimeGOOGLE = VkPresentTimeGOOGLE- { -- No documentation found for Nested "VkPresentTimeGOOGLE" "vkPresentID"+ { -- | @presentID@ is an application-provided identification value, that /can/+ -- be used with the results of 'vkGetPastPresentationTimingGOOGLE', in+ -- order to uniquely identify this present. In order to be useful to the+ -- application, it /should/ be unique within some period of time that is+ -- meaningful to the application. vkPresentID :: Word32- , -- No documentation found for Nested "VkPresentTimeGOOGLE" "vkDesiredPresentTime"+ , -- | @desiredPresentTime@ specifies that the image given /should/ not be+ -- displayed to the user any earlier than this time. @desiredPresentTime@+ -- is a time in nanoseconds, relative to a monotonically-increasing clock+ -- (e.g. @CLOCK_MONOTONIC@ (see clock_gettime(2)) on Android and Linux). A+ -- value of zero specifies that the presentation engine /may/ display the+ -- image at any time. This is useful when the application desires to+ -- provide @presentID@, but doesn’t need a specific @desiredPresentTime@. vkDesiredPresentTime :: Word64 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs view
@@ -104,7 +104,6 @@ -- Android native window -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance to associate the surface with. --@@ -114,13 +113,13 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. -- -- = Description--- #_description# -- -- During the lifetime of a surface created using a particular -- @ANativeWindow@ handle any attempts to create another surface for the@@ -158,10 +157,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -169,7 +168,6 @@ -- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkAndroidSurfaceCreateInfoKHR',@@ -179,9 +177,6 @@ -- | VkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a -- newly created Android surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @window@ /must/ point to a valid Android @ANativeWindow@.@@ -196,19 +191,19 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkAndroidSurfaceCreateFlagsKHR', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateAndroidSurfaceKHR' data VkAndroidSurfaceCreateInfoKHR = VkAndroidSurfaceCreateInfoKHR- { -- No documentation found for Nested "VkAndroidSurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkAndroidSurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkAndroidSurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkAndroidSurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkAndroidSurfaceCreateInfoKHR" "vkWindow"+ , -- | @window@ is a pointer to the @ANativeWindow@ to associate the surface+ -- with. vkWindow :: Ptr ANativeWindow } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_display.hs view
@@ -111,7 +111,6 @@ -- | VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending type -- -- = See Also--- #_see_also# -- -- 'VkDisplayPlaneAlphaFlagsKHR', 'VkDisplaySurfaceCreateInfoKHR' newtype VkDisplayPlaneAlphaFlagBitsKHR = VkDisplayPlaneAlphaFlagBitsKHR VkFlags@@ -226,11 +225,7 @@ data VkDisplayKHR_T -- | VkDisplayKHR - Opaque handle to a display object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkDisplayPlanePropertiesKHR', 'VkDisplayPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkAcquireXlibDisplayEXT',@@ -246,11 +241,7 @@ data VkDisplayModeKHR_T -- | VkDisplayModeKHR - Opaque handle to a display mode object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkDisplayModePropertiesKHR', 'VkDisplaySurfaceCreateInfoKHR', -- 'vkCreateDisplayModeKHR', 'vkGetDisplayPlaneCapabilitiesKHR'@@ -259,7 +250,6 @@ -- available displays -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is a physical device. --@@ -270,7 +260,6 @@ -- @VkDisplayPropertiesKHR@ structures. -- -- = Description--- #_description# -- -- If @pProperties@ is @NULL@, then the number of display devices available -- for @physicalDevice@ is returned in @pPropertyCount@. Otherwise,@@ -296,18 +285,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDisplayPropertiesKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'@@ -316,7 +304,6 @@ -- properties -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is a physical device. --@@ -327,7 +314,6 @@ -- @VkDisplayPlanePropertiesKHR@ structures. -- -- = Description--- #_description# -- -- If @pProperties@ is @NULL@, then the number of display planes available -- for @physicalDevice@ is returned in @pPropertyCount@. Otherwise,@@ -351,18 +337,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDisplayPlanePropertiesKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'@@ -371,7 +356,6 @@ -- plane supports -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is a physical device. --@@ -385,7 +369,6 @@ -- @VkDisplayKHR@ handles. -- -- = Description--- #_description# -- -- If @pDisplays@ is @NULL@, then the number of displays usable with the -- specified @planeIndex@ for @physicalDevice@ is returned in@@ -418,18 +401,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDisplayKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'@@ -438,7 +420,6 @@ -- supported by the display -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device associated with @display@. --@@ -451,7 +432,6 @@ -- @VkDisplayModePropertiesKHR@ structures. -- -- = Description--- #_description# -- -- If @pProperties@ is @NULL@, then the number of display modes available -- on the specified @display@ for @physicalDevice@ is returned in@@ -481,18 +461,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDisplayKHR', 'VkDisplayModePropertiesKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'@@ -500,7 +479,6 @@ -- | vkCreateDisplayModeKHR - Create a display mode -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device associated with @display@. --@@ -511,14 +489,11 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- display mode object when there is no more specific allocator--- available (see--- <{html_spec_relative}#memory-allocation Memory Allocation>).+-- available (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pMode@ returns the handle of the mode created. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle@@ -539,10 +514,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -550,7 +525,6 @@ -- - @VK_ERROR_INITIALIZATION_FAILED@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDisplayKHR', 'VkDisplayModeCreateInfoKHR', 'VkDisplayModeKHR',@@ -560,7 +534,6 @@ -- plane combination -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device associated with @display@ --@@ -575,9 +548,6 @@ -- - @pCapabilities@ is a pointer to a 'VkDisplayPlaneCapabilitiesKHR' -- structure in which the capabilities are returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle@@ -593,16 +563,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'VkDisplayModeKHR', 'VkDisplayPlaneCapabilitiesKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'@@ -612,7 +581,6 @@ -- representing a display plane and mode -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance corresponding to the physical device the -- targeted display is on.@@ -623,14 +591,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -645,16 +611,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkDisplaySurfaceCreateInfoKHR',@@ -665,7 +630,6 @@ -- device -- -- = Description--- #_description# -- -- __Note__ --@@ -693,26 +657,32 @@ -- of the screen needs to be updated in most frames. -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'VkDisplayKHR', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D', -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagsKHR', -- 'vkGetPhysicalDeviceDisplayPropertiesKHR' data VkDisplayPropertiesKHR = VkDisplayPropertiesKHR- { -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkDisplay"+ { -- | @display@ is a handle that is used to refer to the display described+ -- here. This handle will be valid for the lifetime of the Vulkan instance. vkDisplay :: VkDisplayKHR- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkDisplayName"+ , -- | @displayName@ is a pointer to a NULL-terminated string containing the+ -- name of the display. Generally, this will be the name provided by the+ -- display’s EDID. It /can/ be @NULL@ if no suitable name is available. If+ -- not @NULL@, the memory it points to /must/ remain accessible as long as+ -- @display@ is valid. vkDisplayName :: Ptr CChar- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkPhysicalDimensions"+ , -- | @physicalDimensions@ describes the physical width and height of the+ -- visible portion of the display, in millimeters. vkPhysicalDimensions :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkPhysicalResolution"+ , -- | @physicalResolution@ describes the physical, native, or preferred+ -- resolution of the display. vkPhysicalResolution :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkSupportedTransforms"+ , -- No documentation found for Nested "VkDisplayPropertiesKHR" "supportedTransforms" vkSupportedTransforms :: VkSurfaceTransformFlagsKHR- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkPlaneReorderPossible"+ , -- No documentation found for Nested "VkDisplayPropertiesKHR" "planeReorderPossible" vkPlaneReorderPossible :: VkBool32- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "vkPersistentContent"+ , -- No documentation found for Nested "VkDisplayPropertiesKHR" "persistentContent" vkPersistentContent :: VkBool32 } deriving (Eq, Show)@@ -737,17 +707,17 @@ -- | VkDisplayPlanePropertiesKHR - Structure describing display plane -- properties ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkDisplayKHR', 'vkGetPhysicalDeviceDisplayPlanePropertiesKHR' data VkDisplayPlanePropertiesKHR = VkDisplayPlanePropertiesKHR- { -- No documentation found for Nested "VkDisplayPlanePropertiesKHR" "vkCurrentDisplay"+ { -- | @currentDisplay@ is the handle of the display the plane is currently+ -- associated with. If the plane is not currently attached to any displays,+ -- this will be @VK_NULL_HANDLE@. vkCurrentDisplay :: VkDisplayKHR- , -- No documentation found for Nested "VkDisplayPlanePropertiesKHR" "vkCurrentStackIndex"+ , -- | @currentStackIndex@ is the current z-order of the plane. This will be+ -- between 0 and the value returned by+ -- @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ in @pPropertyCount@. vkCurrentStackIndex :: Word32 } deriving (Eq, Show)@@ -763,21 +733,20 @@ -- associated with a display mode -- -- = Description--- #_description# -- -- __Note__ -- -- For example, a 60Hz display mode would report a @refreshRate@ of 60,000. -- -- = See Also--- #_see_also# -- -- 'VkDisplayModeCreateInfoKHR', 'VkDisplayModePropertiesKHR', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D' data VkDisplayModeParametersKHR = VkDisplayModeParametersKHR- { -- No documentation found for Nested "VkDisplayModeParametersKHR" "vkVisibleRegion"+ { -- | @visibleRegion@ is the 2D extents of the visible region. vkVisibleRegion :: VkExtent2D- , -- No documentation found for Nested "VkDisplayModeParametersKHR" "vkRefreshRate"+ , -- | @refreshRate@ is a @uint32_t@ that is the number of times the display is+ -- refreshed each second multiplied by 1000. vkRefreshRate :: Word32 } deriving (Eq, Show)@@ -792,18 +761,17 @@ -- | VkDisplayModePropertiesKHR - Structure describing display mode -- properties ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkDisplayModeKHR', 'VkDisplayModeParametersKHR', -- 'vkGetDisplayModePropertiesKHR' data VkDisplayModePropertiesKHR = VkDisplayModePropertiesKHR- { -- No documentation found for Nested "VkDisplayModePropertiesKHR" "vkDisplayMode"+ { -- | @displayMode@ is a handle to the display mode described in this+ -- structure. This handle will be valid for the lifetime of the Vulkan+ -- instance. vkDisplayMode :: VkDisplayModeKHR- , -- No documentation found for Nested "VkDisplayModePropertiesKHR" "vkParameters"+ , -- | @parameters@ is a @VkDisplayModeParametersKHR@ structure describing the+ -- display parameters associated with @displayMode@. vkParameters :: VkDisplayModeParametersKHR } deriving (Eq, Show)@@ -818,9 +786,6 @@ -- | VkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly -- created display mode object ----- = Description--- #_description#--- -- == Valid Usage -- -- - The @width@ and @height@ members of the @visibleRegion@ member of@@ -837,18 +802,20 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkDisplayModeCreateFlagsKHR', 'VkDisplayModeParametersKHR', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateDisplayModeKHR' data VkDisplayModeCreateInfoKHR = VkDisplayModeCreateInfoKHR- { -- No documentation found for Nested "VkDisplayModeCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDisplayModeCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDisplayModeCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use, and /must/ be zero. vkFlags :: VkDisplayModeCreateFlagsKHR- , -- No documentation found for Nested "VkDisplayModeCreateInfoKHR" "vkParameters"+ , -- | @parameters@ is a @VkDisplayModeParametersKHR@ structure describing the+ -- display parameters to use in creating the new mode. If the parameters+ -- are not compatible with the specified display, the implementation /must/+ -- return @VK_ERROR_INITIALIZATION_FAILED@. vkParameters :: VkDisplayModeParametersKHR } deriving (Eq, Show)@@ -868,7 +835,6 @@ -- mode and plane combination -- -- = Description--- #_description# -- -- The minimum and maximum position and extent fields describe the -- implementation limits, if any, as they apply to the specified display@@ -901,30 +867,40 @@ -- unsupported combinations. -- -- = See Also--- #_see_also# -- -- 'VkDisplayPlaneAlphaFlagsKHR', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D', -- 'Graphics.Vulkan.Core10.Pipeline.VkOffset2D', -- 'vkGetDisplayPlaneCapabilitiesKHR' data VkDisplayPlaneCapabilitiesKHR = VkDisplayPlaneCapabilitiesKHR- { -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkSupportedAlpha"+ { -- | @supportedAlpha@ is a bitmask of 'VkDisplayPlaneAlphaFlagBitsKHR'+ -- describing the supported alpha blending modes. vkSupportedAlpha :: VkDisplayPlaneAlphaFlagsKHR- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMinSrcPosition"+ , -- | @minSrcPosition@ is the minimum source rectangle offset supported by+ -- this plane using the specified mode. vkMinSrcPosition :: VkOffset2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMaxSrcPosition"+ , -- | @maxSrcPosition@ is the maximum source rectangle offset supported by+ -- this plane using the specified mode. The @x@ and @y@ components of+ -- @maxSrcPosition@ /must/ each be greater than or equal to the @x@ and @y@+ -- components of @minSrcPosition@, respectively. vkMaxSrcPosition :: VkOffset2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMinSrcExtent"+ , -- | @minSrcExtent@ is the minimum source rectangle size supported by this+ -- plane using the specified mode. vkMinSrcExtent :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMaxSrcExtent"+ , -- | @maxSrcExtent@ is the maximum source rectangle size supported by this+ -- plane using the specified mode. vkMaxSrcExtent :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMinDstPosition"+ , -- | @minDstPosition@, @maxDstPosition@, @minDstExtent@, @maxDstExtent@ all+ -- have similar semantics to their corresponding @*Src*@ equivalents, but+ -- apply to the output region within the mode rather than the input region+ -- within the source image. Unlike the @*Src*@ offsets, @minDstPosition@+ -- and @maxDstPosition@ /may/ contain negative values. vkMinDstPosition :: VkOffset2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMaxDstPosition"+ , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "maxDstPosition" vkMaxDstPosition :: VkOffset2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMinDstExtent"+ , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "minDstExtent" vkMinDstExtent :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "vkMaxDstExtent"+ , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "maxDstExtent" vkMaxDstExtent :: VkExtent2D } deriving (Eq, Show)@@ -954,7 +930,6 @@ -- newly created display plane surface object -- -- = Description--- #_description# -- -- __Note__ --@@ -1010,7 +985,6 @@ -- - @alphaMode@ /must/ be a valid 'VkDisplayPlaneAlphaFlagBitsKHR' value -- -- = See Also--- #_see_also# -- -- 'VkDisplayModeKHR', 'VkDisplayPlaneAlphaFlagBitsKHR', -- 'VkDisplaySurfaceCreateFlagsKHR',@@ -1019,25 +993,32 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR', -- 'vkCreateDisplayPlaneSurfaceKHR' data VkDisplaySurfaceCreateInfoKHR = VkDisplaySurfaceCreateInfoKHR- { -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use, and /must/ be zero. vkFlags :: VkDisplaySurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkDisplayMode"+ , -- | @displayMode@ is a 'VkDisplayModeKHR' handle specifying the mode to use+ -- when displaying this surface. vkDisplayMode :: VkDisplayModeKHR- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkPlaneIndex"+ , -- | @planeIndex@ is the plane on which this surface appears. vkPlaneIndex :: Word32- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkPlaneStackIndex"+ , -- | @planeStackIndex@ is the z-order of the plane. vkPlaneStackIndex :: Word32- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkTransform"+ , -- | @transform@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR'+ -- value specifying the transformation to apply to images as part of the+ -- scanout operation. vkTransform :: VkSurfaceTransformFlagBitsKHR- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkGlobalAlpha"+ , -- | @globalAlpha@ is the global alpha value. This value is ignored if+ -- @alphaMode@ is not @VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR@. vkGlobalAlpha :: CFloat- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkAlphaMode"+ , -- | @alphaMode@ is a 'VkDisplayPlaneAlphaFlagBitsKHR' value specifying the+ -- type of alpha blending to use. vkAlphaMode :: VkDisplayPlaneAlphaFlagBitsKHR- , -- No documentation found for Nested "VkDisplaySurfaceCreateInfoKHR" "vkImageExtent"+ , -- | @imageExtent@ The size of the presentable images to use with the+ -- surface. vkImageExtent :: VkExtent2D } deriving (Eq, Show)@@ -1068,13 +1049,11 @@ -- | VkDisplayPlaneAlphaFlagsKHR - Bitmask of VkDisplayPlaneAlphaFlagBitsKHR -- -- = Description--- #_description# -- -- @VkDisplayPlaneAlphaFlagsKHR@ is a bitmask type for setting a mask of -- zero or more 'VkDisplayPlaneAlphaFlagBitsKHR'. -- -- = See Also--- #_see_also# -- -- 'VkDisplayPlaneAlphaFlagBitsKHR', 'VkDisplayPlaneCapabilitiesKHR' type VkDisplayPlaneAlphaFlagsKHR = VkDisplayPlaneAlphaFlagBitsKHR
src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs view
@@ -68,7 +68,6 @@ -- presentable images -- -- = Parameters--- #_parameters# -- -- - @device@ is the device to create the swapchains for. --@@ -80,13 +79,13 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- swapchain objects when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSwapchains@ is a pointer to an array of @VkSwapchainKHR@ handles -- in which the created swapchain objects will be returned. -- -- = Description--- #_description# -- -- @vkCreateSharedSwapchains@ is similar to -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',@@ -130,10 +129,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -145,7 +144,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -156,7 +154,6 @@ -- presentation to a swapchain -- -- = Description--- #_description# -- -- If the extent of the @srcRect@ and @dstRect@ are not equal, the -- presented pixels will be scaled accordingly.@@ -180,20 +177,37 @@ -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Pipeline.VkRect2D', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDisplayPresentInfoKHR = VkDisplayPresentInfoKHR- { -- No documentation found for Nested "VkDisplayPresentInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDisplayPresentInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDisplayPresentInfoKHR" "vkSrcRect"+ , -- | @srcRect@ is a rectangular region of pixels to present. It /must/ be a+ -- subset of the image being presented. If @VkDisplayPresentInfoKHR@ is not+ -- specified, this region will be assumed to be the entire presentable+ -- image. vkSrcRect :: VkRect2D- , -- No documentation found for Nested "VkDisplayPresentInfoKHR" "vkDstRect"+ , -- | @dstRect@ is a rectangular region within the visible region of the+ -- swapchain’s display mode. If @VkDisplayPresentInfoKHR@ is not specified,+ -- this region will be assumed to be the entire visible region of the+ -- visible region of the swapchain’s mode. If the specified rectangle is a+ -- subset of the display mode’s visible region, content from display planes+ -- below the swapchain’s plane will be visible outside the rectangle. If+ -- there are no planes below the swapchain’s, the area outside the+ -- specified rectangle will be black. If portions of the specified+ -- rectangle are outside of the display’s visible region, pixels mapping+ -- only to those portions of the rectangle will be discarded. vkDstRect :: VkRect2D- , -- No documentation found for Nested "VkDisplayPresentInfoKHR" "vkPersistent"+ , -- | @persistent@: If this is @VK_TRUE@, the display engine will enable+ -- buffered mode on displays that support it. This allows the display+ -- engine to stop sending content to the display until a new image is+ -- presented. The display will instead maintain a copy of the last+ -- presented image. This allows less power to be used, but /may/ increase+ -- presentation latency. If @VkDisplayPresentInfoKHR@ is not specified,+ -- persistent mode will not be used. vkPersistent :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs view
@@ -69,7 +69,6 @@ -- | vkGetFenceFdKHR - Get a POSIX file descriptor handle for a fence -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the fence being -- exported.@@ -82,7 +81,6 @@ -- payload. -- -- = Description--- #_description# -- -- Each call to @vkGetFenceFdKHR@ /must/ create a new file descriptor and -- transfer ownership of it to the application. To avoid leaking resources,@@ -106,8 +104,8 @@ -- -- Exporting a file descriptor from a fence /may/ have side effects -- depending on the transference of the specified handle type, as described--- in--- <{html_spec_relative}#synchronization-fences-importing Importing Fence State>.+-- in [Importing Fence+-- State](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing). -- -- == Valid Usage (Implicit) --@@ -120,16 +118,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkFenceGetFdInfoKHR'@@ -137,7 +134,6 @@ -- | vkImportFenceFdKHR - Import a fence from a POSIX file descriptor -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the fence. --@@ -145,7 +141,6 @@ -- specifying the fence and import parameters. -- -- = Description--- #_description# -- -- Importing a fence payload from a file descriptor transfers ownership of -- the file descriptor from the application to the Vulkan implementation.@@ -170,16 +165,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkImportFenceFdInfoKHR'@@ -187,32 +181,29 @@ -- | VkImportFenceFdInfoKHR - (None) -- -- = Description--- #_description# -- -- The handle types supported by @handleType@ are: ----- > +-----------------------+-----------------------+-----------------------+--- > | Handle Type | Transference | Permanence Supported |--- > +=======================+=======================+=======================+--- > | @VK_EXTERNAL_FENCE_HA | Reference | Temporary,Permanent |--- > | NDLE_TYPE_OPAQUE_FD_B | | |--- > | IT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- > | @VK_EXTERNAL_FENCE_HA | Copy | Temporary |--- > | NDLE_TYPE_SYNC_FD_BIT | | |--- > | @ | | |--- > +-----------------------+-----------------------+-----------------------+--- >--- > Handle Types Supported by VkImportFenceFdInfoKHR+-- +-----------------------------------------------+-----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +===============================================+=======================+=======================++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Reference | Temporary,Permanent |+-- +-----------------------------------------------+-----------------------+-----------------------++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ | Copy | Temporary |+-- +-----------------------------------------------+-----------------------+-----------------------+ --+-- Handle Types Supported by VkImportFenceFdInfoKHR+-- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the--- <{html_spec_relative}#synchronization-fence-handletypes-fd Handle Types Supported by VkImportFenceFdInfoKHR>+-- - @handleType@ /must/ be a value included in the [Handle Types+-- Supported by+-- VkImportFenceFdInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fence-handletypes-fd) -- table. -- -- - @fd@ /must/ obey any requirements listed for @handleType@ in--- <{html_spec_relative}#external-fence-handle-types-compatibility external fence handle types compatibility>.+-- [external fence handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility). -- -- If @handleType@ is @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@, the -- special value @-1@ for @fd@ is treated like a valid sync file descriptor@@ -251,24 +242,25 @@ -- - Host access to @fence@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkFence', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkImportFenceFdKHR' data VkImportFenceFdInfoKHR = VkImportFenceFdInfoKHR- { -- No documentation found for Nested "VkImportFenceFdInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportFenceFdInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportFenceFdInfoKHR" "vkFence"+ , -- | @fence@ is the fence into which the payload will be imported. vkFence :: VkFence- , -- No documentation found for Nested "VkImportFenceFdInfoKHR" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlagBits'+ -- specifying additional parameters for the fence payload import operation. vkFlags :: VkFenceImportFlags- , -- No documentation found for Nested "VkImportFenceFdInfoKHR" "vkHandleType"+ , -- | @handleType@ specifies the type of @fd@. vkHandleType :: VkExternalFenceHandleTypeFlagBits- , -- No documentation found for Nested "VkImportFenceFdInfoKHR" "vkFd"+ , -- | @fd@ is the external handle to import. vkFd :: CInt } deriving (Eq, Show)@@ -292,7 +284,6 @@ -- operation -- -- = Description--- #_description# -- -- The properties of the file descriptor returned depend on the value of -- @handleType@. See@@ -308,13 +299,13 @@ -- -- - If @handleType@ refers to a handle type with copy payload -- transference semantics, @fence@ /must/ be signaled, or have an--- associated--- <{html_spec_relative}#synchronization-fences-signaling fence signal operation>+-- associated [fence signal+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling) -- pending execution. -- -- - @fence@ /must/ not currently have its payload replaced by an--- imported payload as described below in--- <{html_spec_relative}#synchronization-fences-importing Importing Fence Payloads>+-- imported payload as described below in [Importing Fence+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing) -- unless that imported payload’s handle type was included in -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties'::@exportFromImportedHandleTypes@ -- for @handleType@.@@ -334,19 +325,18 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkFence', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetFenceFdKHR' data VkFenceGetFdInfoKHR = VkFenceGetFdInfoKHR- { -- No documentation found for Nested "VkFenceGetFdInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkFenceGetFdInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkFenceGetFdInfoKHR" "vkFence"+ , -- | @fence@ is the fence from which state will be exported. vkFence :: VkFence- , -- No documentation found for Nested "VkFenceGetFdInfoKHR" "vkHandleType"+ , -- | @handleType@ is the type of handle requested. vkHandleType :: VkExternalFenceHandleTypeFlagBits } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs view
@@ -79,7 +79,6 @@ -- | vkGetFenceWin32HandleKHR - Get a Windows HANDLE for a fence -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the fence being -- exported.@@ -92,7 +91,6 @@ -- state. -- -- = Description--- #_description# -- -- For handle types defined as NT handles, the handles returned by -- @vkGetFenceWin32HandleKHR@ are owned by the application. To avoid@@ -101,8 +99,8 @@ -- -- Exporting a Windows handle from a fence /may/ have side effects -- depending on the transference of the specified handle type, as described--- in--- <{html_spec_relative}#synchronization-fences-importing Importing Fence Payloads>.+-- in [Importing Fence+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing). -- -- == Valid Usage (Implicit) --@@ -115,16 +113,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkFenceGetWin32HandleInfoKHR'@@ -132,7 +129,6 @@ -- | vkImportFenceWin32HandleKHR - Import a fence from a Windows HANDLE -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the fence. --@@ -141,7 +137,6 @@ -- import parameters. -- -- = Description--- #_description# -- -- Importing a fence payload from Windows handles does not transfer -- ownership of the handle to the Vulkan implementation. For handle types@@ -161,16 +156,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkImportFenceWin32HandleInfoKHR'@@ -178,28 +172,24 @@ -- | VkImportFenceWin32HandleInfoKHR - (None) -- -- = Description--- #_description# -- -- The handle types supported by @handleType@ are: ----- > +-----------------------+-----------------------+-----------------------+--- > | Handle Type | Transference | Permanence Supported |--- > +=======================+=======================+=======================+--- > | @VK_EXTERNAL_FENCE_HA | Reference | Temporary,Permanent |--- > | NDLE_TYPE_OPAQUE_WIN3 | | |--- > | 2_BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- > | @VK_EXTERNAL_FENCE_HA | Reference | Temporary,Permanent |--- > | NDLE_TYPE_OPAQUE_WIN3 | | |--- > | 2_KMT_BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- >--- > Handle Types Supported by VkImportFenceWin32HandleInfoKHR+-- +------------------------------------------------------+-----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +======================================================+=======================+=======================++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Reference | Temporary,Permanent |+-- +------------------------------------------------------+-----------------------+-----------------------++-- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Reference | Temporary,Permanent |+-- +------------------------------------------------------+-----------------------+-----------------------+ --+-- Handle Types Supported by VkImportFenceWin32HandleInfoKHR+-- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the--- <{html_spec_relative}#synchronization-fence-handletypes-win32 Handle Types Supported by VkImportFenceWin32HandleInfoKHR>+-- - @handleType@ /must/ be a value included in the [Handle Types+-- Supported by+-- VkImportFenceWin32HandleInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fence-handletypes-win32) -- table. -- -- - If @handleType@ is not@@ -216,12 +206,12 @@ -- - If @handle@ is not @NULL@, @name@ must be @NULL@. -- -- - If @handle@ is not @NULL@, it /must/ obey any requirements listed--- for @handleType@ in--- <{html_spec_relative}#external-fence-handle-types-compatibility external fence handle types compatibility>.+-- for @handleType@ in [external fence handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility). -- -- - If @name@ is not @NULL@, it /must/ obey any requirements listed for--- @handleType@ in--- <{html_spec_relative}#external-fence-handle-types-compatibility external fence handle types compatibility>.+-- @handleType@ in [external fence handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility). -- -- == Valid Usage (Implicit) --@@ -245,7 +235,6 @@ -- - Host access to @fence@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkFence',@@ -253,19 +242,22 @@ -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkImportFenceWin32HandleKHR' data VkImportFenceWin32HandleInfoKHR = VkImportFenceWin32HandleInfoKHR- { -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkFence"+ , -- | @fence@ is the fence into which the state will be imported. vkFence :: VkFence- , -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlagBits'+ -- specifying additional parameters for the fence payload import operation. vkFlags :: VkFenceImportFlags- , -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkHandleType"+ , -- | @handleType@ specifies the type of @handle@. vkHandleType :: VkExternalFenceHandleTypeFlagBits- , -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkHandle"+ , -- | @handle@ is the external handle to import, or @NULL@. vkHandle :: HANDLE- , -- No documentation found for Nested "VkImportFenceWin32HandleInfoKHR" "vkName"+ , -- | @name@ is the NULL-terminated UTF-16 string naming the underlying+ -- synchronization primitive to import, or @NULL@. vkName :: LPCWSTR } deriving (Eq, Show)@@ -291,7 +283,6 @@ -- attributes of Windows handles exported from a fence -- -- = Description--- #_description# -- -- If this structure is not present, or if @pAttributes@ is set to @NULL@, -- default security descriptor values will be used, and child processes@@ -326,19 +317,21 @@ -- pointer to a valid @SECURITY_ATTRIBUTES@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportFenceWin32HandleInfoKHR = VkExportFenceWin32HandleInfoKHR- { -- No documentation found for Nested "VkExportFenceWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportFenceWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportFenceWin32HandleInfoKHR" "vkPAttributes"+ , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure+ -- specifying security attributes of the handle. vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- No documentation found for Nested "VkExportFenceWin32HandleInfoKHR" "vkDwAccess"+ , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle. vkDwAccess :: DWORD- , -- No documentation found for Nested "VkExportFenceWin32HandleInfoKHR" "vkName"+ , -- | @name@ is a NULL-terminated UTF-16 string to associate with the+ -- underlying synchronization primitive referenced by NT handles exported+ -- from the created fence. vkName :: LPCWSTR } deriving (Eq, Show)@@ -360,7 +353,6 @@ -- export operation -- -- = Description--- #_description# -- -- The properties of the handle returned depend on the value of -- @handleType@. See@@ -379,16 +371,16 @@ -- each valid unique combination of @fence@ and @handleType@. -- -- - @fence@ /must/ not currently have its payload replaced by an--- imported payload as described below in--- <{html_spec_relative}#synchronization-fences-importing Importing Fence Payloads>+-- imported payload as described below in [Importing Fence+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing) -- unless that imported payload’s handle type was included in -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - If @handleType@ refers to a handle type with copy payload -- transference semantics, @fence@ /must/ be signaled, or have an--- associated--- <{html_spec_relative}#synchronization-fences-signaling fence signal operation>+-- associated [fence signal+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling) -- pending execution. -- -- - @handleType@ /must/ be defined as an NT handle or a global share@@ -408,20 +400,19 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkFence', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetFenceWin32HandleKHR' data VkFenceGetWin32HandleInfoKHR = VkFenceGetWin32HandleInfoKHR- { -- No documentation found for Nested "VkFenceGetWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkFenceGetWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkFenceGetWin32HandleInfoKHR" "vkFence"+ , -- | @fence@ is the fence from which state will be exported. vkFence :: VkFence- , -- No documentation found for Nested "VkFenceGetWin32HandleInfoKHR" "vkHandleType"+ , -- | @handleType@ is the type of handle requested. vkHandleType :: VkExternalFenceHandleTypeFlagBits } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs view
@@ -74,7 +74,6 @@ -- | vkGetMemoryFdKHR - Get a POSIX file descriptor for a memory object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the device memory being -- exported.@@ -87,7 +86,6 @@ -- resources of the device memory object. -- -- = Description--- #_description# -- -- Each call to @vkGetMemoryFdKHR@ /must/ create a new file descriptor and -- transfer ownership of it to the application. To avoid leaking resources,@@ -108,16 +106,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkMemoryGetFdInfoKHR'@@ -126,7 +123,6 @@ -- Descriptors -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that will be importing @fd@. --@@ -136,9 +132,6 @@ -- -- - @pMemoryFdProperties@ will return properties of the handle @fd@. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @fd@ /must/ be an external memory handle created outside of the@@ -160,14 +153,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',@@ -177,7 +169,6 @@ -- device from a file descriptor -- -- = Description--- #_description# -- -- Importing memory from a file descriptor transfers ownership of the file -- descriptor from the application to the Vulkan implementation. The@@ -209,10 +200,11 @@ -- - The memory represented by @fd@ /must/ have been created from a -- physical device and driver that is compatible with @device@ and -- @handleType@, as described in--- <{html_spec_relative}#external-memory-handle-types-compatibility {html_spec_relative}#external-memory-handle-types-compatibility>.+-- [{html_spec_relative}#external-memory-handle-types-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility). -- -- - @fd@ /must/ obey any requirements listed for @handleType@ in--- <{html_spec_relative}#external-memory-handle-types-compatibility external memory handle types compatibility>.+-- [external memory handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility). -- -- == Valid Usage (Implicit) --@@ -223,18 +215,17 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImportMemoryFdInfoKHR = VkImportMemoryFdInfoKHR- { -- No documentation found for Nested "VkImportMemoryFdInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportMemoryFdInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportMemoryFdInfoKHR" "vkHandleType"+ , -- | @handleType@ specifies the handle type of @fd@. vkHandleType :: VkExternalMemoryHandleTypeFlagBits- , -- No documentation found for Nested "VkImportMemoryFdInfoKHR" "vkFd"+ , -- | @fd@ is the external handle to import. vkFd :: CInt } deriving (Eq, Show)@@ -252,20 +243,17 @@ *> poke (ptr `plusPtr` 20) (vkFd (poked :: VkImportMemoryFdInfoKHR)) -- | VkMemoryFdPropertiesKHR - Properties of External Memory File Descriptors ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetMemoryFdPropertiesKHR' data VkMemoryFdPropertiesKHR = VkMemoryFdPropertiesKHR- { -- No documentation found for Nested "VkMemoryFdPropertiesKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryFdPropertiesKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryFdPropertiesKHR" "vkMemoryTypeBits"+ , -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory+ -- type which the specified file descriptor /can/ be imported as. vkMemoryTypeBits :: Word32 } deriving (Eq, Show)@@ -283,7 +271,6 @@ -- operation -- -- = Description--- #_description# -- -- The properties of the file descriptor exported depend on the value of -- @handleType@. See@@ -291,6 +278,14 @@ -- for a description of the properties of the defined external memory -- handle types. --+-- __Note__+--+-- The size of the exported file /may/ be larger than the size requested by+-- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo'::allocationSize. If+-- @handleType@ is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@, then+-- the application /can/ query the file’s actual size with+-- [lseek(2)](man:lseek(2)).+-- -- == Valid Usage -- -- - @handleType@ /must/ have been included in@@ -312,19 +307,18 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetMemoryFdKHR' data VkMemoryGetFdInfoKHR = VkMemoryGetFdInfoKHR- { -- No documentation found for Nested "VkMemoryGetFdInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryGetFdInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryGetFdInfoKHR" "vkMemory"+ , -- | @memory@ is the memory object from which the handle will be exported. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkMemoryGetFdInfoKHR" "vkHandleType"+ , -- | @handleType@ is the type of handle requested. vkHandleType :: VkExternalMemoryHandleTypeFlagBits } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs view
@@ -87,7 +87,6 @@ -- | vkGetMemoryWin32HandleKHR - Get a Windows HANDLE for a memory object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the device memory being -- exported.@@ -100,7 +99,6 @@ -- resources of the device memory object. -- -- = Description--- #_description# -- -- For handle types defined as NT handles, the handles returned by -- @vkGetMemoryWin32HandleKHR@ are owned by the application. To avoid@@ -118,16 +116,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkMemoryGetWin32HandleInfoKHR'@@ -136,7 +133,6 @@ -- Win32 Handles -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that will be importing @handle@. --@@ -146,9 +142,6 @@ -- -- - @pMemoryWin32HandleProperties@ will return properties of @handle@. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @handle@ /must/ be an external memory handle created outside of the@@ -170,14 +163,13 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',@@ -187,7 +179,6 @@ -- same physical device -- -- = Description--- #_description# -- -- Importing memory objects from Windows handles does not transfer -- ownership of the handle to the Vulkan implementation. For handle types@@ -230,12 +221,12 @@ -- - if @handle@ is not @NULL@, @name@ must be @NULL@. -- -- - If @handle@ is not @NULL@, it /must/ obey any requirements listed--- for @handleType@ in--- <{html_spec_relative}#external-memory-handle-types-compatibility external memory handle types compatibility>.+-- for @handleType@ in [external memory handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility). -- -- - If @name@ is not @NULL@, it /must/ obey any requirements listed for--- @handleType@ in--- <{html_spec_relative}#external-memory-handle-types-compatibility external memory handle types compatibility>.+-- @handleType@ in [external memory handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility). -- -- == Valid Usage (Implicit) --@@ -247,20 +238,20 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImportMemoryWin32HandleInfoKHR = VkImportMemoryWin32HandleInfoKHR- { -- No documentation found for Nested "VkImportMemoryWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoKHR" "vkHandleType"+ , -- | @handleType@ specifies the type of @handle@ or @name@. vkHandleType :: VkExternalMemoryHandleTypeFlagBits- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoKHR" "vkHandle"+ , -- | @handle@ is the external handle to import, or @NULL@. vkHandle :: HANDLE- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoKHR" "vkName"+ , -- | @name@ is a NULL-terminated UTF-16 string naming the underlying memory+ -- resource to import, or @NULL@. vkName :: LPCWSTR } deriving (Eq, Show)@@ -282,7 +273,6 @@ -- attributes of Windows handles exported from a memory -- -- = Description--- #_description# -- -- If this structure is not present, or if @pAttributes@ is set to @NULL@, -- default security descriptor values will be used, and child processes@@ -330,19 +320,21 @@ -- pointer to a valid @SECURITY_ATTRIBUTES@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportMemoryWin32HandleInfoKHR = VkExportMemoryWin32HandleInfoKHR- { -- No documentation found for Nested "VkExportMemoryWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoKHR" "vkPAttributes"+ , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure+ -- specifying security attributes of the handle. vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoKHR" "vkDwAccess"+ , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle. vkDwAccess :: DWORD- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoKHR" "vkName"+ , -- | @name@ is a NULL-terminated UTF-16 string to associate with the+ -- underlying resource referenced by NT handles exported from the created+ -- memory. vkName :: LPCWSTR } deriving (Eq, Show)@@ -363,20 +355,17 @@ -- | VkMemoryWin32HandlePropertiesKHR - Properties of External Memory Windows -- Handles ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetMemoryWin32HandlePropertiesKHR' data VkMemoryWin32HandlePropertiesKHR = VkMemoryWin32HandlePropertiesKHR- { -- No documentation found for Nested "VkMemoryWin32HandlePropertiesKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryWin32HandlePropertiesKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryWin32HandlePropertiesKHR" "vkMemoryTypeBits"+ , -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory+ -- type which the specified windows handle /can/ be imported as. vkMemoryTypeBits :: Word32 } deriving (Eq, Show)@@ -394,7 +383,6 @@ -- semaphore export operation -- -- = Description--- #_description# -- -- The properties of the handle returned depend on the value of -- @handleType@. See@@ -429,20 +417,19 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetMemoryWin32HandleKHR' data VkMemoryGetWin32HandleInfoKHR = VkMemoryGetWin32HandleInfoKHR- { -- No documentation found for Nested "VkMemoryGetWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryGetWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryGetWin32HandleInfoKHR" "vkMemory"+ , -- | @memory@ is the memory object from which the handle will be exported. vkMemory :: VkDeviceMemory- , -- No documentation found for Nested "VkMemoryGetWin32HandleInfoKHR" "vkHandleType"+ , -- | @handleType@ is the type of handle requested. vkHandleType :: VkExternalMemoryHandleTypeFlagBits } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs view
@@ -69,7 +69,6 @@ -- | vkGetSemaphoreFdKHR - Get a POSIX file descriptor handle for a semaphore -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the semaphore being -- exported.@@ -82,7 +81,6 @@ -- payload. -- -- = Description--- #_description# -- -- Each call to @vkGetSemaphoreFdKHR@ /must/ create a new file descriptor -- and transfer ownership of it to the application. To avoid leaking@@ -101,8 +99,8 @@ -- -- Exporting a file descriptor from a semaphore /may/ have side effects -- depending on the transference of the specified handle type, as described--- in--- <{html_spec_relative}#synchronization-semaphores-importing Importing Semaphore State>.+-- in [Importing Semaphore+-- State](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing). -- -- == Valid Usage (Implicit) --@@ -115,16 +113,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkSemaphoreGetFdInfoKHR'@@ -132,7 +129,6 @@ -- | vkImportSemaphoreFdKHR - Import a semaphore from a POSIX file descriptor -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the semaphore. --@@ -140,7 +136,6 @@ -- structure specifying the semaphore and import parameters. -- -- = Description--- #_description# -- -- Importing a semaphore payload from a file descriptor transfers ownership -- of the file descriptor from the application to the Vulkan@@ -165,16 +160,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkImportSemaphoreFdInfoKHR'@@ -183,32 +177,29 @@ -- to import to a semaphore -- -- = Description--- #_description# -- -- The handle types supported by @handleType@ are: ----- > +-----------------------+-----------------------+-----------------------+--- > | Handle Type | Transference | Permanence Supported |--- > +=======================+=======================+=======================+--- > | @VK_EXTERNAL_SEMAPHOR | Reference | Temporary,Permanent |--- > | E_HANDLE_TYPE_OPAQUE_ | | |--- > | FD_BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- > | @VK_EXTERNAL_SEMAPHOR | Copy | Temporary |--- > | E_HANDLE_TYPE_SYNC_FD | | |--- > | _BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- >--- > Handle Types Supported by VkImportSemaphoreFdInfoKHR+-- +---------------------------------------------------+-----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +===================================================+=======================+=======================++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Reference | Temporary,Permanent |+-- +---------------------------------------------------+-----------------------+-----------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@ | Copy | Temporary |+-- +---------------------------------------------------+-----------------------+-----------------------+ --+-- Handle Types Supported by VkImportSemaphoreFdInfoKHR+-- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the--- <{html_spec_relative}#synchronization-semaphore-handletypes-fd Handle Types Supported by VkImportSemaphoreFdInfoKHR>+-- - @handleType@ /must/ be a value included in the [Handle Types+-- Supported by+-- VkImportSemaphoreFdInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd) -- table. -- -- - @fd@ /must/ obey any requirements listed for @handleType@ in--- <{html_spec_relative}#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.+-- [external semaphore handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility). -- -- == Valid Usage (Implicit) --@@ -231,24 +222,26 @@ -- - Host access to @semaphore@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkImportSemaphoreFdKHR' data VkImportSemaphoreFdInfoKHR = VkImportSemaphoreFdInfoKHR- { -- No documentation found for Nested "VkImportSemaphoreFdInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportSemaphoreFdInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportSemaphoreFdInfoKHR" "vkSemaphore"+ , -- | @semaphore@ is the semaphore into which the payload will be imported. vkSemaphore :: VkSemaphore- , -- No documentation found for Nested "VkImportSemaphoreFdInfoKHR" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlagBits'+ -- specifying additional parameters for the semaphore payload import+ -- operation. vkFlags :: VkSemaphoreImportFlags- , -- No documentation found for Nested "VkImportSemaphoreFdInfoKHR" "vkHandleType"+ , -- | @handleType@ specifies the type of @fd@. vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits- , -- No documentation found for Nested "VkImportSemaphoreFdInfoKHR" "vkFd"+ , -- | @fd@ is the external handle to import. vkFd :: CInt } deriving (Eq, Show)@@ -272,7 +265,6 @@ -- export operation -- -- = Description--- #_description# -- -- The properties of the file descriptor returned depend on the value of -- @handleType@. See@@ -287,21 +279,21 @@ -- when @semaphore@’s current payload was created. -- -- - @semaphore@ /must/ not currently have its payload replaced by an--- imported payload as described below in--- <{html_spec_relative}#synchronization-semaphores-importing Importing Semaphore Payloads>+-- imported payload as described below in [Importing Semaphore+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing) -- unless that imported payload’s handle type was included in -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, as defined below in--- <{html_spec_relative}#synchronization-semaphores-importing Importing Semaphore Payloads>,+-- transference semantics, as defined below in [Importing Semaphore+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing), -- there /must/ be no queue waiting on @semaphore@. -- -- - If @handleType@ refers to a handle type with copy payload -- transference semantics, @semaphore@ /must/ be signaled, or have an--- associated--- <{html_spec_relative}#synchronization-semaphores-signaling semaphore signal operation>+-- associated [semaphore signal+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling) -- pending execution. -- -- - @handleType@ /must/ be defined as a POSIX file descriptor handle.@@ -319,19 +311,18 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetSemaphoreFdKHR' data VkSemaphoreGetFdInfoKHR = VkSemaphoreGetFdInfoKHR- { -- No documentation found for Nested "VkSemaphoreGetFdInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSemaphoreGetFdInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSemaphoreGetFdInfoKHR" "vkSemaphore"+ , -- | @semaphore@ is the semaphore from which state will be exported. vkSemaphore :: VkSemaphore- , -- No documentation found for Nested "VkSemaphoreGetFdInfoKHR" "vkHandleType"+ , -- | @handleType@ is the type of handle requested. vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs view
@@ -88,7 +88,6 @@ -- | vkGetSemaphoreWin32HandleKHR - Get a Windows HANDLE for a semaphore -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the semaphore being -- exported.@@ -101,7 +100,6 @@ -- state. -- -- = Description--- #_description# -- -- For handle types defined as NT handles, the handles returned by -- @vkGetSemaphoreWin32HandleKHR@ are owned by the application. To avoid@@ -110,8 +108,8 @@ -- -- Exporting a Windows handle from a semaphore /may/ have side effects -- depending on the transference of the specified handle type, as described--- in--- <{html_spec_relative}#synchronization-semaphores-importing Importing Semaphore Payloads>.+-- in [Importing Semaphore+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing). -- -- == Valid Usage (Implicit) --@@ -124,16 +122,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkSemaphoreGetWin32HandleInfoKHR'@@ -142,7 +139,6 @@ -- HANDLE -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that created the semaphore. --@@ -151,7 +147,6 @@ -- semaphore and import parameters. -- -- = Description--- #_description# -- -- Importing a semaphore payload from Windows handles does not transfer -- ownership of the handle to the Vulkan implementation. For handle types@@ -171,16 +166,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkImportSemaphoreWin32HandleInfoKHR'@@ -189,32 +183,26 @@ -- handle to import to a semaphore -- -- = Description--- #_description# -- -- The handle types supported by @handleType@ are: ----- > +-----------------------+-----------------------+-----------------------+--- > | Handle Type | Transference | Permanence Supported |--- > +=======================+=======================+=======================+--- > | @VK_EXTERNAL_SEMAPHOR | Reference | Temporary,Permanent |--- > | E_HANDLE_TYPE_OPAQUE_ | | |--- > | WIN32_BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- > | @VK_EXTERNAL_SEMAPHOR | Reference | Temporary,Permanent |--- > | E_HANDLE_TYPE_OPAQUE_ | | |--- > | WIN32_KMT_BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- > | @VK_EXTERNAL_SEMAPHOR | Reference | Temporary,Permanent |--- > | E_HANDLE_TYPE_D3D12_F | | |--- > | ENCE_BIT@ | | |--- > +-----------------------+-----------------------+-----------------------+--- >--- > Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR+-- +----------------------------------------------------------+-----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +==========================================================+=======================+=======================++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Reference | Temporary,Permanent |+-- +----------------------------------------------------------+-----------------------+-----------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Reference | Temporary,Permanent |+-- +----------------------------------------------------------+-----------------------+-----------------------++-- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@ | Reference | Temporary,Permanent |+-- +----------------------------------------------------------+-----------------------+-----------------------+ --+-- Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR+-- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the--- <{html_spec_relative}#synchronization-semaphore-handletypes-win32 Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR>+-- - @handleType@ /must/ be a value included in the [Handle Types+-- Supported by+-- VkImportSemaphoreWin32HandleInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32) -- table. -- -- - If @handleType@ is not@@ -232,12 +220,12 @@ -- - If @handle@ is not @NULL@, @name@ must be @NULL@. -- -- - If @handle@ is not @NULL@, it /must/ obey any requirements listed--- for @handleType@ in--- <{html_spec_relative}#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.+-- for @handleType@ in [external semaphore handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility). -- -- - If @name@ is not @NULL@, it /must/ obey any requirements listed for--- @handleType@ in--- <{html_spec_relative}#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.+-- @handleType@ in [external semaphore handle types+-- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility). -- -- == Valid Usage (Implicit) --@@ -261,7 +249,6 @@ -- - Host access to @semaphore@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',@@ -269,19 +256,23 @@ -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkImportSemaphoreWin32HandleKHR' data VkImportSemaphoreWin32HandleInfoKHR = VkImportSemaphoreWin32HandleInfoKHR- { -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkSemaphore"+ , -- | @semaphore@ is the semaphore into which the payload will be imported. vkSemaphore :: VkSemaphore- , -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkFlags"+ , -- | @flags@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlagBits'+ -- specifying additional parameters for the semaphore payload import+ -- operation. vkFlags :: VkSemaphoreImportFlags- , -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkHandleType"+ , -- | @handleType@ specifies the type of @handle@. vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits- , -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkHandle"+ , -- | @handle@ is the external handle to import, or @NULL@. vkHandle :: HANDLE- , -- No documentation found for Nested "VkImportSemaphoreWin32HandleInfoKHR" "vkName"+ , -- | @name@ is a NULL-terminated UTF-16 string naming the underlying+ -- synchronization primitive to import, or @NULL@. vkName :: LPCWSTR } deriving (Eq, Show)@@ -307,7 +298,6 @@ -- attributes of Windows handles exported from a semaphore -- -- = Description--- #_description# -- -- If this structure is not present, or if @pAttributes@ is set to @NULL@, -- default security descriptor values will be used, and child processes@@ -353,19 +343,21 @@ -- pointer to a valid @SECURITY_ATTRIBUTES@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportSemaphoreWin32HandleInfoKHR = VkExportSemaphoreWin32HandleInfoKHR- { -- No documentation found for Nested "VkExportSemaphoreWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportSemaphoreWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportSemaphoreWin32HandleInfoKHR" "vkPAttributes"+ , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure+ -- specifying security attributes of the handle. vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- No documentation found for Nested "VkExportSemaphoreWin32HandleInfoKHR" "vkDwAccess"+ , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle. vkDwAccess :: DWORD- , -- No documentation found for Nested "VkExportSemaphoreWin32HandleInfoKHR" "vkName"+ , -- | @name@ is a NULL-terminated UTF-16 string to associate with the+ -- underlying synchronization primitive referenced by NT handles exported+ -- from the created semaphore. vkName :: LPCWSTR } deriving (Eq, Show)@@ -387,14 +379,13 @@ -- fence-backed semaphores -- -- = Description--- #_description# -- -- If the semaphore in -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pWaitSemaphores@ or -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pSignalSemaphores@ -- corresponding to an entry in @pWaitSemaphoreValues@ or -- @pSignalSemaphoreValues@ respectively does not currently have a--- <{html_spec_relative}#synchronization-semaphores-payloads payload>+-- [payload](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-payloads) -- referring to a Direct3D 12 fence, the implementation /must/ ignore the -- value in the @pWaitSemaphoreValues@ or @pSignalSemaphoreValues@ entry. --@@ -422,21 +413,29 @@ -- @signalSemaphoreValuesCount@ @uint64_t@ values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkD3D12FenceSubmitInfoKHR = VkD3D12FenceSubmitInfoKHR- { -- No documentation found for Nested "VkD3D12FenceSubmitInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkD3D12FenceSubmitInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkD3D12FenceSubmitInfoKHR" "vkWaitSemaphoreValuesCount"+ , -- | @waitSemaphoreValuesCount@ is the number of semaphore wait values+ -- specified in @pWaitSemaphoreValues@. vkWaitSemaphoreValuesCount :: Word32- , -- No documentation found for Nested "VkD3D12FenceSubmitInfoKHR" "vkPWaitSemaphoreValues"+ , -- | @pWaitSemaphoreValues@ is an array of length @waitSemaphoreValuesCount@+ -- containing values for the corresponding semaphores in+ -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pWaitSemaphores@ to wait+ -- for. vkPWaitSemaphoreValues :: Ptr Word64- , -- No documentation found for Nested "VkD3D12FenceSubmitInfoKHR" "vkSignalSemaphoreValuesCount"+ , -- | @signalSemaphoreValuesCount@ is the number of semaphore signal values+ -- specified in @pSignalSemaphoreValues@. vkSignalSemaphoreValuesCount :: Word32- , -- No documentation found for Nested "VkD3D12FenceSubmitInfoKHR" "vkPSignalSemaphoreValues"+ , -- | @pSignalSemaphoreValues@ is an array of length+ -- @signalSemaphoreValuesCount@ containing values for the corresponding+ -- semaphores in+ -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pSignalSemaphores@ to set+ -- when signaled. vkPSignalSemaphoreValues :: Ptr Word64 } deriving (Eq, Show)@@ -460,7 +459,6 @@ -- semaphore export operation -- -- = Description--- #_description# -- -- The properties of the handle returned depend on the value of -- @handleType@. See@@ -479,21 +477,21 @@ -- for each valid unique combination of @semaphore@ and @handleType@. -- -- - @semaphore@ /must/ not currently have its payload replaced by an--- imported payload as described below in--- <{html_spec_relative}#synchronization-semaphores-importing Importing Semaphore Payloads>+-- imported payload as described below in [Importing Semaphore+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing) -- unless that imported payload’s handle type was included in -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, as defined below in--- <{html_spec_relative}#synchronization-semaphores-importing Importing Semaphore Payloads>,+-- transference semantics, as defined below in [Importing Semaphore+-- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing), -- there /must/ be no queue waiting on @semaphore@. -- -- - If @handleType@ refers to a handle type with copy payload -- transference semantics, @semaphore@ /must/ be signaled, or have an--- associated--- <{html_spec_relative}#synchronization-semaphores-signaling semaphore signal operation>+-- associated [semaphore signal+-- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling) -- pending execution. -- -- - @handleType@ /must/ be defined as an NT handle or a global share@@ -513,20 +511,19 @@ -- value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits', -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetSemaphoreWin32HandleKHR' data VkSemaphoreGetWin32HandleInfoKHR = VkSemaphoreGetWin32HandleInfoKHR- { -- No documentation found for Nested "VkSemaphoreGetWin32HandleInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSemaphoreGetWin32HandleInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSemaphoreGetWin32HandleInfoKHR" "vkSemaphore"+ , -- | @semaphore@ is the semaphore from which state will be exported. vkSemaphore :: VkSemaphore- , -- No documentation found for Nested "VkSemaphoreGetWin32HandleInfoKHR" "vkHandleType"+ , -- | @handleType@ is the type of handle requested. vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs view
@@ -71,7 +71,6 @@ -- surface on a physical device -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be associated with -- the swapchain to be created, as described for@@ -87,7 +86,6 @@ -- returned. -- -- = Description--- #_description# -- -- @vkGetPhysicalDeviceSurfaceCapabilities2KHR@ behaves similarly to -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',@@ -107,10 +105,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -118,7 +116,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'VkPhysicalDeviceSurfaceInfo2KHR', 'VkSurfaceCapabilities2KHR'@@ -127,7 +124,6 @@ -- surface -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be associated with -- the swapchain to be created, as described for@@ -145,7 +141,6 @@ -- 'VkSurfaceFormat2KHR' structures. -- -- = Description--- #_description# -- -- If @pSurfaceFormats@ is @NULL@, then the number of format tuples -- supported for the given @surface@ is returned in @pSurfaceFormatCount@.@@ -178,12 +173,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -191,7 +186,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'VkPhysicalDeviceSurfaceInfo2KHR', 'VkSurfaceFormat2KHR'@@ -200,7 +194,6 @@ -- related swapchain creation parameters -- -- = Description--- #_description# -- -- The members of @VkPhysicalDeviceSurfaceInfo2KHR@ correspond to the -- arguments to@@ -217,18 +210,17 @@ -- - @surface@ /must/ be a valid @VkSurfaceKHR@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR', -- 'vkGetPhysicalDeviceSurfaceCapabilities2KHR', -- 'vkGetPhysicalDeviceSurfaceFormats2KHR' data VkPhysicalDeviceSurfaceInfo2KHR = VkPhysicalDeviceSurfaceInfo2KHR- { -- No documentation found for Nested "VkPhysicalDeviceSurfaceInfo2KHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSurfaceInfo2KHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSurfaceInfo2KHR" "vkSurface"+ , -- | @surface@ is the surface that will be associated with the swapchain. vkSurface :: VkSurfaceKHR } deriving (Eq, Show)@@ -245,9 +237,6 @@ -- | VkSurfaceCapabilities2KHR - Structure describing capabilities of a -- surface ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR@@@ -256,17 +245,18 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR' -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR', -- 'vkGetPhysicalDeviceSurfaceCapabilities2KHR' data VkSurfaceCapabilities2KHR = VkSurfaceCapabilities2KHR- { -- No documentation found for Nested "VkSurfaceCapabilities2KHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSurfaceCapabilities2KHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSurfaceCapabilities2KHR" "vkSurfaceCapabilities"+ , -- | @surfaceCapabilities@ is a structure of type+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'+ -- describing the capabilities of the specified surface. vkSurfaceCapabilities :: VkSurfaceCapabilitiesKHR } deriving (Eq, Show)@@ -283,9 +273,6 @@ -- | VkSurfaceFormat2KHR - Structure describing a supported swapchain format -- tuple ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR@@@ -293,17 +280,19 @@ -- - @pNext@ /must/ be @NULL@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceFormatKHR', -- 'vkGetPhysicalDeviceSurfaceFormats2KHR' data VkSurfaceFormat2KHR = VkSurfaceFormat2KHR- { -- No documentation found for Nested "VkSurfaceFormat2KHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSurfaceFormat2KHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSurfaceFormat2KHR" "vkSurfaceFormat"+ , -- | @surfaceFormat@ is an instance of+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceFormatKHR'+ -- describing a format-color space pair that is compatible with the+ -- specified surface. vkSurfaceFormat :: VkSurfaceFormatKHR } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs view
@@ -46,7 +46,6 @@ -- with a particular set of formats -- -- = Description--- #_description# -- -- If @viewFormatCount@ is zero, @pViewFormats@ is ignored and the image is -- created as if the @VkImageFormatListCreateInfoKHR@ structure were not@@ -58,7 +57,8 @@ -- - If @viewFormatCount@ is not @0@, all of the formats in the -- @pViewFormats@ array /must/ be compatible with the format specified -- in the @format@ field of @VkImageCreateInfo@, as described in the--- <{html_spec_relative}#resources-image-views-compatibility compatibility table>.+-- [compatibility+-- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views-compatibility). -- -- - If @VkImageCreateInfo@::@flags@ does not contain -- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@, @viewFormatCount@ /must/ be@@ -77,18 +77,18 @@ -- 'Graphics.Vulkan.Core10.Core.VkFormat' values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkFormat', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfoKHR- { -- No documentation found for Nested "VkImageFormatListCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageFormatListCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageFormatListCreateInfoKHR" "vkViewFormatCount"+ , -- | @viewFormatCount@ is the number of entries in the @pViewFormats@ array. vkViewFormatCount :: Word32- , -- No documentation found for Nested "VkImageFormatListCreateInfoKHR" "vkPViewFormats"+ , -- | @pViewFormats@ is an array which lists of all formats which /can/ be+ -- used when creating views of this image. vkPViewFormats :: Ptr VkFormat } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs view
@@ -50,9 +50,6 @@ -- | VkPresentRegionsKHR - Structure hint of rectangular regions changed by -- vkQueuePresentKHR ----- = Description--- #_description#--- -- == Valid Usage -- -- - @swapchainCount@ /must/ be the same value as@@ -69,17 +66,21 @@ -- - @swapchainCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkPresentRegionKHR', 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPresentRegionsKHR = VkPresentRegionsKHR- { -- No documentation found for Nested "VkPresentRegionsKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPresentRegionsKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPresentRegionsKHR" "vkSwapchainCount"+ , -- | @swapchainCount@ is the number of swapchains being presented to by this+ -- command. vkSwapchainCount :: Word32- , -- No documentation found for Nested "VkPresentRegionsKHR" "vkPRegions"+ , -- | @pRegions@ is @NULL@ or a pointer to an array of @VkPresentRegionKHR@+ -- elements with @swapchainCount@ entries. If not @NULL@, each element of+ -- @pRegions@ contains the region that has changed since the last present+ -- to the swapchain in the corresponding entry in the+ -- @VkPresentInfoKHR@::@pSwapchains@ array. vkPRegions :: Ptr VkPresentRegionKHR } deriving (Eq, Show)@@ -98,9 +99,6 @@ -- | VkPresentRegionKHR - Structure containing rectangular region changed by -- vkQueuePresentKHR for a given VkImage ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - If @rectangleCount@ is not @0@, and @pRectangles@ is not @NULL@,@@ -108,13 +106,18 @@ -- @rectangleCount@ @VkRectLayerKHR@ structures -- -- = See Also--- #_see_also# -- -- 'VkPresentRegionsKHR', 'VkRectLayerKHR' data VkPresentRegionKHR = VkPresentRegionKHR- { -- No documentation found for Nested "VkPresentRegionKHR" "vkRectangleCount"+ { -- | @rectangleCount@ is the number of rectangles in @pRectangles@, or zero+ -- if the entire image has changed and should be presented. vkRectangleCount :: Word32- , -- No documentation found for Nested "VkPresentRegionKHR" "vkPRectangles"+ , -- | @pRectangles@ is either @NULL@ or a pointer to an array of+ -- @VkRectLayerKHR@ structures. The @VkRectLayerKHR@ structure is the+ -- framebuffer coordinates, plus layer, of a portion of a presentable image+ -- that has changed and /must/ be presented. If non-@NULL@, each entry in+ -- @pRectangles@ is a rectangle of the given image that has changed since+ -- the last image was presented to the given swapchain. vkPRectangles :: Ptr VkRectLayerKHR } deriving (Eq, Show)@@ -129,9 +132,6 @@ -- | VkRectLayerKHR - Structure containing a rectangle, including layer, -- changed by vkQueuePresentKHR for a given VkImage ----- = Description--- #_description#--- -- == Valid Usage -- -- - The sum of @offset@ and @extent@ /must/ be no greater than the@@ -149,16 +149,16 @@ -- of the swapchain. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D', -- 'Graphics.Vulkan.Core10.Pipeline.VkOffset2D', 'VkPresentRegionKHR' data VkRectLayerKHR = VkRectLayerKHR- { -- No documentation found for Nested "VkRectLayerKHR" "vkOffset"+ { -- | @offset@ is the origin of the rectangle, in pixels. vkOffset :: VkOffset2D- , -- No documentation found for Nested "VkRectLayerKHR" "vkExtent"+ , -- | @extent@ is the size of the rectangle, in pixels. vkExtent :: VkExtent2D- , -- No documentation found for Nested "VkRectLayerKHR" "vkLayer"+ , -- | @layer@ is the layer of the image. For images with only one layer, the+ -- value of @layer@ /must/ be 0. vkLayer :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs view
@@ -113,7 +113,6 @@ -- Mir window -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance to associate the surface with. --@@ -123,14 +122,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -145,16 +142,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -165,7 +161,6 @@ -- presentation to Mir -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. --@@ -175,7 +170,6 @@ -- desired Mir compositor. -- -- = Description--- #_description# -- -- This platform-specific function /can/ be called prior to creating a -- surface.@@ -193,16 +187,12 @@ -- - @connection@ /must/ be a valid pointer to a @MirConnection@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkGetPhysicalDeviceMirPresentationSupportKHR" vkGetPhysicalDeviceMirPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32 -- | VkMirSurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Mir surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @connection@ /must/ point to a valid @MirConnection@.@@ -218,20 +208,20 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkMirSurfaceCreateFlagsKHR', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateMirSurfaceKHR' data VkMirSurfaceCreateInfoKHR = VkMirSurfaceCreateInfoKHR- { -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkMirSurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "vkConnection"+ , -- | @connection@ and @surface@ are pointers to the @MirConnection@ and+ -- @MirSurface@ for the window to associate the surface with. vkConnection :: Ptr MirConnection- , -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "vkMirSurface"+ , -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "mirSurface" vkMirSurface :: Ptr MirSurface } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs view
@@ -61,10 +61,14 @@ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR" pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR :: VkStructureType pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = VkStructureType 1000080000--- No documentation found for Nested "VkDescriptorUpdateTemplateType" "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"+-- | @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ specifies that+-- the descriptor update template will be used for push descriptor updates+-- only. pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR :: VkDescriptorUpdateTemplateType pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = VkDescriptorUpdateTemplateType 1--- No documentation found for Nested "VkDescriptorSetLayoutCreateFlagBits" "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"+-- | @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ specifies that+-- descriptor sets /must/ not be allocated using this layout, and+-- descriptors are instead pushed by 'vkCmdPushDescriptorSetKHR'. pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR :: VkDescriptorSetLayoutCreateFlagBits pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = VkDescriptorSetLayoutCreateFlagBits 0x00000001 -- No documentation found for TopLevel "VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION"@@ -77,7 +81,6 @@ -- buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer that the descriptors will be -- recorded in.@@ -103,7 +106,6 @@ -- structures describing the descriptors to be updated. -- -- = Description--- #_description# -- -- /Push descriptors/ are a small bank of descriptors whose storage is -- internally managed by the command buffer rather than being written into@@ -116,8 +118,8 @@ -- cause shaders to use the updated descriptors for subsequent rendering -- commands (either compute or graphics, according to the -- @pipelineBindPoint@) until the descriptor is overwritten, or else until--- the set is disturbed as described in--- <{html_spec_relative}#descriptorsets-compatibility Pipeline Layout Compatibility>.+-- the set is disturbed as described in [Pipeline Layout+-- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility). -- When the set is disturbed or push descriptors with a different -- descriptor set layout are set, all push descriptors become invalid. --@@ -174,8 +176,8 @@ -- - @pDescriptorWrites@ /must/ be a valid pointer to an array of -- @descriptorWriteCount@ valid @VkWriteDescriptorSet@ structures ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -194,18 +196,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',@@ -216,7 +217,6 @@ -- command buffer using a descriptor update template -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer that the descriptors will be -- recorded in.@@ -235,9 +235,6 @@ -- - @pData@ Points to memory which contains the descriptors for the -- templated update. ----- = Description--- #_description#--- -- == Valid Usage -- -- - The pipelineBindPoint specified during the creation of the@@ -261,8 +258,8 @@ -- -- - @layout@ /must/ be a valid @VkPipelineLayout@ handle ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -280,16 +277,16 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- __API example.__ -- -- > struct AppBufferView {@@ -345,7 +342,6 @@ -- > vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData); -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate',@@ -355,13 +351,11 @@ -- descriptor limits that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the @VkPhysicalDevicePushDescriptorPropertiesKHR@ -- structure describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @maxPushDescriptors@ is the maximum number of descriptors that /can/ -- be used in a descriptor set created with@@ -373,15 +367,14 @@ -- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorPropertiesKHR- { -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "vkMaxPushDescriptors"+ , -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "maxPushDescriptors" vkMaxPushDescriptors :: Word32 } deriving (Eq, Show)
@@ -73,15 +73,11 @@ -- | vkGetSwapchainStatusKHR - Get a swapchain’s status -- -- = Parameters--- #_parameters# -- -- - @device@ is the device associated with @swapchain@. -- -- - @swapchain@ is the swapchain to query. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -97,12 +93,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_SUBOPTIMAL_KHR@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -114,7 +110,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'@@ -122,25 +117,29 @@ -- | VkSharedPresentSurfaceCapabilitiesKHR - structure describing -- capabilities of a surface for shared presentation ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be -- @VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkSharedPresentSurfaceCapabilitiesKHR = VkSharedPresentSurfaceCapabilitiesKHR- { -- No documentation found for Nested "VkSharedPresentSurfaceCapabilitiesKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSharedPresentSurfaceCapabilitiesKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSharedPresentSurfaceCapabilitiesKHR" "vkSharedPresentSupportedUsageFlags"+ , -- | @sharedPresentSupportedUsageFlags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+ -- representing the ways the application /can/ use the shared presentable+ -- image from a swapchain created with+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkPresentModeKHR' set to+ -- @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or+ -- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ for the surface on the+ -- specified device. @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ /must/ be+ -- included in the set but implementations /may/ support additional usages. vkSharedPresentSupportedUsageFlags :: VkImageUsageFlags } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs view
@@ -112,8 +112,117 @@ -- | VkColorSpaceKHR - supported color space of the presentation engine --+-- = Description+--+-- - @VK_COLOR_SPACE_SRGB_NONLINEAR_KHR@ specifies support for the sRGB+-- color space.+--+-- - @VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT@ specifies support for the+-- Display-P3 color space and applies an sRGB-like transfer function+-- (defined below).+--+-- - @VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT@ specifies support for the+-- extended sRGB color space and applies a linear transfer function.+--+-- - @VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT@ specifies support for+-- the extended sRGB color space and applies an sRGB transfer function.+--+-- - @VK_COLOR_SPACE_DCI_P3_LINEAR_EXT@ specifies support for the DCI-P3+-- color space and applies a linear OETF.+--+-- - @VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT@ specifies support for the+-- DCI-P3 color space and applies the Gamma 2.6 OETF.+--+-- - @VK_COLOR_SPACE_BT709_LINEAR_EXT@ specifies support for the BT709+-- color space and applies a linear OETF.+--+-- - @VK_COLOR_SPACE_BT709_NONLINEAR_EXT@ specifies support for the BT709+-- color space and applies the SMPTE 170M OETF.+--+-- - @VK_COLOR_SPACE_BT2020_LINEAR_EXT@ specifies support for the BT2020+-- color space and applies a linear OETF.+--+-- - @VK_COLOR_SPACE_HDR10_ST2084_EXT@ specifies support for the HDR10+-- (BT2020 color) space and applies the SMPTE ST2084 Perceptual+-- Quantizer (PQ) OETF.+--+-- - @VK_COLOR_SPACE_DOLBYVISION_EXT@ specifies support for the Dolby+-- Vision (BT2020 color space), proprietary encoding, and applies the+-- SMPTE ST2084 OETF.+--+-- - @VK_COLOR_SPACE_HDR10_HLG_EXT@ specifies support for the HDR10+-- (BT2020 color space) and applies the Hybrid Log Gamma (HLG) OETF.+--+-- - @VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT@ specifies support for the+-- AdobeRGB color space and applies a linear OETF.+--+-- - @VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT@ specifies support for the+-- AdobeRGB color space and applies the Gamma 2.2 OETF.+--+-- - @VK_COLOR_SPACE_PASS_THROUGH_EXT@ specifies that color components+-- are used “as is”. This is intended to allow applications to supply+-- data for color spaces not described here.+--+-- The color components of Non-linear color space swap chain images have+-- had the appropriate transfer function applied. Vulkan requires that all+-- implementations support the sRGB transfer function when using an SRGB+-- pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084,+-- /must/ not be performed by the implementation, but /can/ be performed by+-- the application shader. This extension defines enums for+-- 'VkColorSpaceKHR' that correspond to the following color spaces:+--+-- +--------------+----------+----------+----------+-------------+------------++-- | Name | Red | Green | Blue | White-point | Transfer |+-- | | Primary | Primary | Primary | | function |+-- +==============+==========+==========+==========+=============+============++-- | DCI-P3 | 0.680, | 0.265, | 0.150, | 0.3127, | Gamma 2.6 |+-- | | 0.320 | 0.690 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | Display-P3 | 0.680, | 0.265, | 0.150, | 0.3127, | Display-P3 |+-- | | 0.320 | 0.690 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | BT709 | 0.640, | 0.300, | 0.150, | 0.3127, | SMPTE 170M |+-- | | 0.330 | 0.600 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | sRGB | 0.640, | 0.300, | 0.150, | 0.3127, | sRGB |+-- | | 0.330 | 0.600 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | extended | 0.640, | 0.300, | 0.150, | 0.3127, | extended |+-- | sRGB | 0.330 | 0.600 | 0.060 | 0.3290 | sRGB |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | HDR10_ST2084 | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 |+-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | DOLBYVISION | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 |+-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | HDR10_HLG | 0.708, | 0.170, | 0.131, | 0.3127, | HLG |+-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | AdobeRGB | 0.640, | 0.210, | 0.150, | 0.3127, | AdobeRGB |+-- | | 0.330 | 0.710 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++--+-- Color Spaces and Attributes+--+-- For Opto-Electrical Transfer Function (OETF), unless otherwise+-- specified, the values of L and E are defined as:+--+-- L - linear luminance of image \(0 \leq L \leq 1\) for conventional+-- colorimetry+--+-- E - corresponding electrical signal (value stored in memory)+-- -- = See Also--- #_see_also# -- -- 'VkSurfaceFormatKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'@@ -164,8 +273,7 @@ ) ) --- | @VK_COLOR_SPACE_SRGB_NONLINEAR_KHR@ specifies support for the sRGB color--- space.+-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR" pattern VK_COLOR_SPACE_SRGB_NONLINEAR_KHR :: VkColorSpaceKHR pattern VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = VkColorSpaceKHR 0 -- ** VkPresentModeKHR@@ -173,7 +281,6 @@ -- | VkPresentModeKHR - presentation mode supported for a surface -- -- = Description--- #_description# -- -- - @VK_PRESENT_MODE_IMMEDIATE_KHR@ specifies that the presentation -- engine does not wait for a vertical blanking period to update the@@ -216,6 +323,53 @@ -- during or after each vertical blanking period in which the queue is -- non-empty. --+-- - @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ specifies that the+-- presentation engine and application have concurrent access to a+-- single image, which is referred to as a /shared presentable image/.+-- The presentation engine is only required to update the current image+-- after a new presentation request is received. Therefore the+-- application /must/ make a presentation request whenever an update is+-- required. However, the presentation engine /may/ update the current+-- image at any point, meaning this mode /may/ result in visible+-- tearing.+--+-- - @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ specifies that the+-- presentation engine and application have concurrent access to a+-- single image, which is referred to as a /shared presentable image/.+-- The presentation engine periodically updates the current image on+-- its regular refresh cycle. The application is only required to make+-- one initial presentation request, after which the presentation+-- engine /must/ update the current image without any need for further+-- presentation requests. The application /can/ indicate the image+-- contents have been updated by making a presentation request, but+-- this does not guarantee the timing of when it will be updated. This+-- mode /may/ result in visible tearing if rendering to the image is+-- not timed correctly.+--+-- The supported+-- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits' of+-- the presentable images of a swapchain created for a surface /may/ differ+-- depending on the presentation mode, and can be determined as per the+-- table below:+--+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | Presentation mode | Image usage flags |+-- +=================================================+========================================================================================================================================++-- | @VK_PRESENT_MODE_IMMEDIATE_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | @VK_PRESENT_MODE_MAILBOX_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | @VK_PRESENT_MODE_FIFO_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | @VK_PRESENT_MODE_FIFO_RELAXED_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++-- | @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |+-- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------++--+-- Presentable image usage queries+-- -- __Note__ -- -- For reference, the mode indicated by @VK_PRESENT_MODE_FIFO_KHR@ is@@ -226,7 +380,6 @@ -- {WGL|GLX}_EXT_swap_control_tear extensions). -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR', -- 'vkGetPhysicalDeviceSurfacePresentModesKHR'@@ -280,7 +433,6 @@ -- device -- -- = Description--- #_description# -- -- These values are described as follows: --@@ -309,7 +461,6 @@ -- default will be used. -- -- = See Also--- #_see_also# -- -- 'VkCompositeAlphaFlagsKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'@@ -357,7 +508,6 @@ -- device -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',@@ -467,7 +617,6 @@ -- | VkSurfaceKHR - Opaque handle to a surface object -- -- = Description--- #_description# -- -- The @VK_KHR_surface@ extension declares the @VkSurfaceKHR@ object, and -- provides a function for destroying @VkSurfaceKHR@ objects. Separate@@ -477,7 +626,6 @@ -- handles of other Vulkan objects. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkPhysicalDeviceSurfaceInfo2KHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',@@ -503,7 +651,6 @@ -- | vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance used to create the surface. --@@ -511,10 +658,10 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- = Description--- #_description# -- -- Destroying a @VkSurfaceKHR@ merely severs the connection between Vulkan -- and the native surface, and does not imply destroying the native@@ -550,7 +697,6 @@ -- - Host access to @surface@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance', 'VkSurfaceKHR'@@ -559,7 +705,6 @@ -- supported -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. --@@ -570,9 +715,6 @@ -- - @pSupported@ is a pointer to a @VkBool32@, which is set to @VK_TRUE@ -- to indicate support, and @VK_FALSE@ otherwise. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@@@ -592,10 +734,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -603,7 +745,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',@@ -612,7 +753,6 @@ -- | vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be associated with -- the swapchain to be created, as described for@@ -624,9 +764,6 @@ -- 'VkSurfaceCapabilitiesKHR' structure in which the capabilities are -- returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle@@ -641,10 +778,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -652,7 +789,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'VkSurfaceCapabilitiesKHR', 'VkSurfaceKHR'@@ -661,7 +797,6 @@ -- surface -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be associated with -- the swapchain to be created, as described for@@ -676,7 +811,6 @@ -- @VkSurfaceFormatKHR@ structures. -- -- = Description--- #_description# -- -- If @pSurfaceFormats@ is @NULL@, then the number of format pairs -- supported for the given @surface@ is returned in @pSurfaceFormatCount@.@@ -711,12 +845,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -724,7 +858,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'VkSurfaceFormatKHR', 'VkSurfaceKHR'@@ -733,7 +866,6 @@ -- modes -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device that will be associated with -- the swapchain to be created, as described for@@ -749,7 +881,6 @@ -- modes. -- -- = Description--- #_description# -- -- If @pPresentModes@ is @NULL@, then the number of presentation modes -- supported for the given @surface@ is returned in @pPresentModeCount@.@@ -780,12 +911,12 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -793,7 +924,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'VkPresentModeKHR', 'VkSurfaceKHR'@@ -802,15 +932,21 @@ -- surface -- -- = Description--- #_description# -- -- __Note__ --+-- Supported usage flags of a presentable image when using+-- @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or+-- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ presentation mode are+-- provided by+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@.+--+-- __Note__+-- -- Formulas such as min(N, @maxImageCount@) are not correct, since -- @maxImageCount@ /may/ be zero. -- -- = See Also--- #_see_also# -- -- 'VkCompositeAlphaFlagsKHR', -- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',@@ -819,25 +955,63 @@ -- 'VkSurfaceTransformFlagBitsKHR', 'VkSurfaceTransformFlagsKHR', -- 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR' data VkSurfaceCapabilitiesKHR = VkSurfaceCapabilitiesKHR- { -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkMinImageCount"+ { -- | @minImageCount@ is the minimum number of images the specified device+ -- supports for a swapchain created for the surface, and will be at least+ -- one. vkMinImageCount :: Word32- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkMaxImageCount"+ , -- | @maxImageCount@ is the maximum number of images the specified device+ -- supports for a swapchain created for the surface, and will be either 0,+ -- or greater than or equal to @minImageCount@. A value of 0 means that+ -- there is no limit on the number of images, though there /may/ be limits+ -- related to the total amount of memory used by presentable images. vkMaxImageCount :: Word32- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkCurrentExtent"+ , -- | @currentExtent@ is the current width and height of the surface, or the+ -- special value (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size+ -- will be determined by the extent of a swapchain targeting the surface. vkCurrentExtent :: VkExtent2D- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkMinImageExtent"+ , -- | @minImageExtent@ contains the smallest valid swapchain extent for the+ -- surface on the specified device. The @width@ and @height@ of the extent+ -- will each be less than or equal to the corresponding @width@ and+ -- @height@ of @currentExtent@, unless @currentExtent@ has the special+ -- value described above. vkMinImageExtent :: VkExtent2D- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkMaxImageExtent"+ , -- | @maxImageExtent@ contains the largest valid swapchain extent for the+ -- surface on the specified device. The @width@ and @height@ of the extent+ -- will each be greater than or equal to the corresponding @width@ and+ -- @height@ of @minImageExtent@. The @width@ and @height@ of the extent+ -- will each be greater than or equal to the corresponding @width@ and+ -- @height@ of @currentExtent@, unless @currentExtent@ has the special+ -- value described above. vkMaxImageExtent :: VkExtent2D- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkMaxImageArrayLayers"+ , -- | @maxImageArrayLayers@ is the maximum number of layers presentable images+ -- /can/ have for a swapchain created for this device and surface, and will+ -- be at least one. vkMaxImageArrayLayers :: Word32- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkSupportedTransforms"+ , -- | @supportedTransforms@ is a bitmask of 'VkSurfaceTransformFlagBitsKHR'+ -- indicating the presentation transforms supported for the surface on the+ -- specified device. At least one bit will be set. vkSupportedTransforms :: VkSurfaceTransformFlagsKHR- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkCurrentTransform"+ , -- | @currentTransform@ is 'VkSurfaceTransformFlagBitsKHR' value indicating+ -- the surface’s current transform relative to the presentation engine’s+ -- natural orientation. vkCurrentTransform :: VkSurfaceTransformFlagBitsKHR- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkSupportedCompositeAlpha"+ , -- | @supportedCompositeAlpha@ is a bitmask of 'VkCompositeAlphaFlagBitsKHR',+ -- representing the alpha compositing modes supported by the presentation+ -- engine for the surface on the specified device, and at least one bit+ -- will be set. Opaque composition /can/ be achieved in any alpha+ -- compositing mode by either using an image format that has no alpha+ -- component, or by ensuring that all pixels in the presentable images have+ -- an alpha value of 1.0. vkSupportedCompositeAlpha :: VkCompositeAlphaFlagsKHR- , -- No documentation found for Nested "VkSurfaceCapabilitiesKHR" "vkSupportedUsageFlags"+ , -- | @supportedUsageFlags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'+ -- representing the ways the application /can/ use the presentable images+ -- of a swapchain created with 'VkPresentModeKHR' set to+ -- @VK_PRESENT_MODE_IMMEDIATE_KHR@, @VK_PRESENT_MODE_MAILBOX_KHR@,+ -- @VK_PRESENT_MODE_FIFO_KHR@ or @VK_PRESENT_MODE_FIFO_RELAXED_KHR@ for the+ -- surface on the specified device. @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@+ -- /must/ be included in the set but implementations /may/ support+ -- additional usages. vkSupportedUsageFlags :: VkImageUsageFlags } deriving (Eq, Show)@@ -868,19 +1042,17 @@ -- | VkSurfaceFormatKHR - Structure describing a supported swapchain -- format-color space pair ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkColorSpaceKHR', 'Graphics.Vulkan.Core10.Core.VkFormat', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkSurfaceFormat2KHR', -- 'vkGetPhysicalDeviceSurfaceFormatsKHR' data VkSurfaceFormatKHR = VkSurfaceFormatKHR- { -- No documentation found for Nested "VkSurfaceFormatKHR" "vkFormat"+ { -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' that is compatible+ -- with the specified surface. vkFormat :: VkFormat- , -- No documentation found for Nested "VkSurfaceFormatKHR" "vkColorSpace"+ , -- | @colorSpace@ is a presentation 'VkColorSpaceKHR' that is compatible with+ -- the surface. vkColorSpace :: VkColorSpaceKHR } deriving (Eq, Show)@@ -895,13 +1067,11 @@ -- | VkCompositeAlphaFlagsKHR - Bitmask of VkCompositeAlphaFlagBitsKHR -- -- = Description--- #_description# -- -- @VkCompositeAlphaFlagsKHR@ is a bitmask type for setting a mask of zero -- or more 'VkCompositeAlphaFlagBitsKHR'. -- -- = See Also--- #_see_also# -- -- 'VkCompositeAlphaFlagBitsKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',@@ -910,13 +1080,11 @@ -- | VkSurfaceTransformFlagsKHR - Bitmask of VkSurfaceTransformFlagBitsKHR -- -- = Description--- #_description# -- -- @VkSurfaceTransformFlagsKHR@ is a bitmask type for setting a mask of -- zero or more 'VkSurfaceTransformFlagBitsKHR'. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',
src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs view
@@ -143,11 +143,7 @@ -- | VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkSwapchainCreateFlagsKHR' newtype VkSwapchainCreateFlagBitsKHR = VkSwapchainCreateFlagBitsKHR VkFlags@@ -179,7 +175,6 @@ -- device group present modes -- -- = See Also--- #_see_also# -- -- 'VkDeviceGroupPresentInfoKHR', 'VkDeviceGroupPresentModeFlagsKHR' newtype VkDeviceGroupPresentModeFlagBitsKHR = VkDeviceGroupPresentModeFlagBitsKHR VkFlags@@ -264,7 +259,10 @@ -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SWAPCHAIN_KHR" pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR :: VkObjectType pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR = VkObjectType 1000001000--- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"+-- | @VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR@ specifies that+-- images created from the swapchain (i.e. with the @swapchain@ member of+-- 'VkImageSwapchainCreateInfoKHR' set to this swapchain’s handle) /must/+-- use @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@. pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: VkSwapchainCreateFlagBitsKHR pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VkSwapchainCreateFlagBitsKHR 0x00000001 -- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"@@ -281,7 +279,6 @@ -- | VkSwapchainKHR - Opaque handle to a swapchain object -- -- = Description--- #_description# -- -- A swapchain is an abstraction for an array of presentable images that -- are associated with a surface. The presentable images are represented by@@ -333,7 +330,6 @@ -- the swapchain at initialization time, rather than in its main loop. -- -- = See Also--- #_see_also# -- -- 'VkAcquireNextImageInfoKHR', 'VkBindImageMemorySwapchainInfoKHR', -- 'VkImageSwapchainCreateInfoKHR', 'VkPresentInfoKHR',@@ -350,7 +346,6 @@ -- | vkCreateSwapchainKHR - Create a swapchain -- -- = Parameters--- #_parameters# -- -- - @device@ is the device to create the swapchain for. --@@ -360,14 +355,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- swapchain object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSwapchain@ is a pointer to a @VkSwapchainKHR@ handle in which the -- created swapchain object will be returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -390,10 +383,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -405,7 +398,6 @@ -- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -414,7 +406,6 @@ -- | vkDestroySwapchainKHR - Destroy a swapchain object -- -- = Parameters--- #_parameters# -- -- - @device@ is the @VkDevice@ associated with @swapchain@. --@@ -422,10 +413,10 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- swapchain object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- = Description--- #_description# -- -- The application /must/ not destroy a swapchain until after completion of -- all outstanding operations on images that were acquired from the@@ -439,6 +430,14 @@ -- invalidate the parent @VkSurfaceKHR@, and a new swapchain /can/ be -- created with it. --+-- When a swapchain associated with a display surface is destroyed, if the+-- image most recently presented to the display surface is from the+-- swapchain being destroyed, then either any display resources modified by+-- presenting images from any swapchain associated with the display surface+-- /must/ be reverted by the implementation to their state prior to the+-- first present performed on one of these swapchains, or such resources+-- /must/ be left in their current state.+-- -- == Valid Usage -- -- - All uses of presentable images acquired from @swapchain@ /must/ have@@ -469,7 +468,6 @@ -- - Host access to @swapchain@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSwapchainKHR'@@ -478,7 +476,6 @@ -- associated with a swapchain -- -- = Parameters--- #_parameters# -- -- - @device@ is the device associated with @swapchain@. --@@ -492,7 +489,6 @@ -- @VkImage@ handles. -- -- = Description--- #_description# -- -- If @pSwapchainImages@ is @NULL@, then the number of presentable images -- for @swapchain@ is returned in @pSwapchainImageCount@. Otherwise,@@ -526,18 +522,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkSwapchainKHR'@@ -546,7 +541,6 @@ -- presentable image -- -- = Parameters--- #_parameters# -- -- - @device@ is the device associated with @swapchain@. --@@ -566,9 +560,6 @@ -- of the next image to use (i.e. an index into the array of images -- returned by @vkGetSwapchainImagesKHR@). ----- = Description--- #_description#--- -- == Valid Usage -- -- - @swapchain@ /must/ not be in the retired state@@ -631,7 +622,7 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_TIMEOUT@@@ -640,7 +631,7 @@ -- -- - @VK_SUBOPTIMAL_KHR@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -652,7 +643,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Queue.VkFence',@@ -661,7 +651,6 @@ -- | vkQueuePresentKHR - Queue an image for presentation -- -- = Parameters--- #_parameters# -- -- - @queue@ is a queue that is capable of presentation to the target -- surface’s platform on the same device as the image’s swapchain.@@ -670,7 +659,6 @@ -- structure specifying the parameters of the presentation. -- -- = Description--- #_description# -- -- __Note__ --@@ -685,13 +673,17 @@ -- supported from @queue@ as determined using a call to -- @vkGetPhysicalDeviceSurfaceSupportKHR@ --+-- - If more than one member of @pSwapchains@ was created from a display+-- surface, all display surfaces referenced that refer to the same+-- display /must/ use the same display mode+-- -- - When a semaphore unsignal operation defined by the elements of the -- @pWaitSemaphores@ member of @pPresentInfo@ executes on @queue@, no -- other queue /must/ be waiting on the same semaphore. -- -- - All elements of the @pWaitSemaphores@ member of @pPresentInfo@--- /must/ be semaphores that are signaled, or have--- <{html_spec_relative}#synchronization-semaphores-signaling semaphore signal operations>+-- /must/ be semaphores that are signaled, or have [semaphore signal+-- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling) -- previously submitted for execution. -- -- Any writes to memory backing the images referenced by the@@ -743,23 +735,23 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | - | - | Any | - |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | - | - | Any | - |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_SUBOPTIMAL_KHR@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -771,7 +763,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'VkPresentInfoKHR', 'Graphics.Vulkan.Core10.Queue.VkQueue' foreign import ccall "vkQueuePresentKHR" vkQueuePresentKHR :: ("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult@@ -779,7 +770,6 @@ -- other physical devices -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device. --@@ -787,9 +777,6 @@ -- type 'VkDeviceGroupPresentCapabilitiesKHR' that is filled with the -- logical device’s capabilities. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -799,16 +786,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkDeviceGroupPresentCapabilitiesKHR'@@ -817,7 +803,6 @@ -- a surface -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device. --@@ -828,7 +813,6 @@ -- device group present modes for the surface. -- -- = Description--- #_description# -- -- The modes returned by this command are not invariant, and /may/ change -- in response to the surface being moved, resized, or occluded. These@@ -853,10 +837,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -864,7 +848,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkDeviceGroupPresentModeFlagsKHR',@@ -874,7 +857,6 @@ -- presentable image -- -- = Parameters--- #_parameters# -- -- - @device@ is the device associated with @swapchain@. --@@ -884,9 +866,6 @@ -- - @pImageIndex@ is a pointer to a @uint32_t@ that is set to the index -- of the next image to use. ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the number of currently acquired images is greater than the@@ -909,7 +888,7 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_TIMEOUT@@@ -918,7 +897,7 @@ -- -- - @VK_SUBOPTIMAL_KHR@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -930,7 +909,6 @@ -- - @VK_ERROR_SURFACE_LOST_KHR@ -- -- = See Also--- #_see_also# -- -- 'VkAcquireNextImageInfoKHR', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'@@ -939,7 +917,6 @@ -- surface on a physical device -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. --@@ -952,7 +929,6 @@ -- structures. -- -- = Description--- #_description# -- -- If @pRects@ is @NULL@, then the number of rectangles used when -- presenting the given @surface@ is returned in @pRectCount@. Otherwise,@@ -991,18 +967,17 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ -- -- - @VK_INCOMPLETE@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice', -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',@@ -1012,7 +987,6 @@ -- created swapchain object -- -- = Description--- #_description# -- -- __Note__ --@@ -1116,6 +1090,11 @@ -- has entered a state that causes @VK_ERROR_OUT_OF_DATE_KHR@ to be -- returned. --+-- The application /can/ continue to use a shared presentable image+-- obtained from @oldSwapchain@ until a presentable image is acquired from+-- the new swapchain, as long as it has not entered a state that causes it+-- to return @VK_ERROR_OUT_OF_DATE_KHR@.+-- -- == Valid Usage -- -- - @surface@ /must/ be a surface that is supported by the device as@@ -1131,6 +1110,10 @@ -- structure returned by @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ -- for the surface if the returned @maxImageCount@ is not zero --+-- - @minImageCount@ /must/ be @1@ if @presentMode@ is either+-- @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or+-- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@+-- -- - @imageFormat@ and @imageColorSpace@ /must/ match the @format@ and -- @colorSpace@ members, respectively, of one of the -- @VkSurfaceFormatKHR@ structures returned by@@ -1149,11 +1132,25 @@ -- @VkSurfaceCapabilitiesKHR@ structure returned by -- @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ for the surface ----- - @imageUsage@ /must/ be a subset of the supported usage flags present--- in the @supportedUsageFlags@ member of the--- @VkSurfaceCapabilitiesKHR@ structure returned by--- @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ for the surface+-- - If @presentMode@ is @VK_PRESENT_MODE_IMMEDIATE_KHR@,+-- @VK_PRESENT_MODE_MAILBOX_KHR@, @VK_PRESENT_MODE_FIFO_KHR@ or+-- @VK_PRESENT_MODE_FIFO_RELAXED_KHR@, @imageUsage@ /must/ be a subset+-- of the supported usage flags present in the @supportedUsageFlags@+-- member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR'+-- for @surface@ --+-- - If @presentMode@ is @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or+-- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@, @imageUsage@ /must/+-- be a subset of the supported usage flags present in the+-- @sharedPresentSupportedUsageFlags@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR'+-- for @surface@+-- -- - If @imageSharingMode@ is @VK_SHARING_MODE_CONCURRENT@, -- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of -- @queueFamilyIndexCount@ @uint32_t@ values@@ -1163,8 +1160,10 @@ -- -- - If @imageSharingMode@ is @VK_SHARING_MODE_CONCURRENT@, each element -- of @pQueueFamilyIndices@ /must/ be unique and /must/ be less than--- @pQueueFamilyPropertyCount@ returned by+-- @pQueueFamilyPropertyCount@ returned by either -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2' -- for the @physicalDevice@ that was used to create @device@ -- -- - @preTransform@ /must/ be one of the bits present in the@@ -1182,6 +1181,11 @@ -- returned by @vkGetPhysicalDeviceSurfacePresentModesKHR@ for the -- surface --+-- - If the logical device was created with+-- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo'::@physicalDeviceCount@+-- equal to 1, @flags@ /must/ not contain+-- @VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR@+-- -- - @oldSwapchain@ /must/ not be in the retired state -- -- - @imageFormat@, @imageUsage@, @imageExtent@, and @imageArrayLayers@@@ -1243,7 +1247,6 @@ -- @VkInstance@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkColorSpaceKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkCompositeAlphaFlagBitsKHR',@@ -1259,41 +1262,52 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR', -- 'vkCreateSwapchainKHR' data VkSwapchainCreateInfoKHR = VkSwapchainCreateInfoKHR- { -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkSwapchainCreateFlagBitsKHR' indicating+ -- parameters of the swapchain creation. vkFlags :: VkSwapchainCreateFlagsKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkSurface"+ , -- | @surface@ is the surface onto which the swapchain will present images.+ -- If the creation succeeds, the swapchain becomes associated with+ -- @surface@. vkSurface :: VkSurfaceKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkMinImageCount"+ , -- | @minImageCount@ is the minimum number of presentable images that the+ -- application needs. The implementation will either create the swapchain+ -- with at least that many images, or it will fail to create the swapchain. vkMinImageCount :: Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkImageFormat"+ , -- | @imageFormat@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value+ -- specifying the format the swapchain image(s) will be created with. vkImageFormat :: VkFormat- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkImageColorSpace"+ , -- | @imageColorSpace@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkColorSpaceKHR' value+ -- specifying the way the swapchain interprets image data. vkImageColorSpace :: VkColorSpaceKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkImageExtent"+ , -- | @imageExtent@ is the size (in pixels) of the swapchain image(s). The+ -- behavior is platform-dependent if the image extent does not match the+ -- surface’s @currentExtent@ as returned by+ -- @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@. vkImageExtent :: VkExtent2D- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkImageArrayLayers"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageArrayLayers" vkImageArrayLayers :: Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkImageUsage"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageUsage" vkImageUsage :: VkImageUsageFlags- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkImageSharingMode"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageSharingMode" vkImageSharingMode :: VkSharingMode- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkQueueFamilyIndexCount"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "queueFamilyIndexCount" vkQueueFamilyIndexCount :: Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkPQueueFamilyIndices"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "pQueueFamilyIndices" vkPQueueFamilyIndices :: Ptr Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkPreTransform"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "preTransform" vkPreTransform :: VkSurfaceTransformFlagBitsKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkCompositeAlpha"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "compositeAlpha" vkCompositeAlpha :: VkCompositeAlphaFlagBitsKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkPresentMode"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "presentMode" vkPresentMode :: VkPresentModeKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkClipped"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "clipped" vkClipped :: VkBool32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "vkOldSwapchain"+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "oldSwapchain" vkOldSwapchain :: VkSwapchainKHR } deriving (Eq, Show)@@ -1341,17 +1355,19 @@ -- presentation -- -- = Description--- #_description# -- -- Before an application /can/ present an image, the image’s layout /must/--- be transitioned to the @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ layout.+-- be transitioned to the @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ layout, or for+-- a shared presentable image the @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@+-- layout. -- -- __Note__ ----- When transitioning the image to @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@, there--- is no need to delay subsequent processing, or perform any visibility--- operations (as 'vkQueuePresentKHR' performs automatic visibility--- operations). To achieve this, the @dstAccessMask@ member of the+-- When transitioning the image to @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@ or+-- @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@, there is no need to delay subsequent+-- processing, or perform any visibility operations (as 'vkQueuePresentKHR'+-- performs automatic visibility operations). To achieve this, the+-- @dstAccessMask@ member of the -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier' -- /should/ be set to @0@, and the @dstStageMask@ parameter /should/ be set -- to @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@.@@ -1361,8 +1377,9 @@ -- - Each element of @pImageIndices@ /must/ be the index of a presentable -- image acquired from the swapchain specified by the corresponding -- element of the @pSwapchains@ array, and the presented image--- subresource /must/ be in the @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@--- layout at the time the operation is executed on a @VkDevice@+-- subresource /must/ be in the @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ or+-- @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@ layout at the time the+-- operation is executed on a @VkDevice@ -- -- == Valid Usage (Implicit) --@@ -1399,28 +1416,41 @@ -- allocated, or retrieved from the same @VkInstance@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkResult', -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR', -- 'vkQueuePresentKHR' data VkPresentInfoKHR = VkPresentInfoKHR- { -- No documentation found for Nested "VkPresentInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPresentInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPresentInfoKHR" "vkWaitSemaphoreCount"+ , -- | @waitSemaphoreCount@ is the number of semaphores to wait for before+ -- issuing the present request. The number /may/ be zero. vkWaitSemaphoreCount :: Word32- , -- No documentation found for Nested "VkPresentInfoKHR" "vkPWaitSemaphores"+ , -- | @pWaitSemaphores@, if not @NULL@, is an array of @VkSemaphore@ objects+ -- with @waitSemaphoreCount@ entries, and specifies the semaphores to wait+ -- for before issuing the present request. vkPWaitSemaphores :: Ptr VkSemaphore- , -- No documentation found for Nested "VkPresentInfoKHR" "vkSwapchainCount"+ , -- | @swapchainCount@ is the number of swapchains being presented to by this+ -- command. vkSwapchainCount :: Word32- , -- No documentation found for Nested "VkPresentInfoKHR" "vkPSwapchains"+ , -- | @pSwapchains@ is an array of @VkSwapchainKHR@ objects with+ -- @swapchainCount@ entries. A given swapchain /must/ not appear in this+ -- list more than once. vkPSwapchains :: Ptr VkSwapchainKHR- , -- No documentation found for Nested "VkPresentInfoKHR" "vkPImageIndices"+ , -- | @pImageIndices@ is an array of indices into the array of each+ -- swapchain’s presentable images, with @swapchainCount@ entries. Each+ -- entry in this array identifies the image to present on the corresponding+ -- entry in the @pSwapchains@ array. vkPImageIndices :: Ptr Word32- , -- No documentation found for Nested "VkPresentInfoKHR" "vkPResults"+ , -- | @pResults@ is an array of 'Graphics.Vulkan.Core10.Core.VkResult' typed+ -- elements with @swapchainCount@ entries. Applications that do not need+ -- per-swapchain results /can/ use @NULL@ for @pResults@. If non-@NULL@,+ -- each entry in @pResults@ will be set to the+ -- 'Graphics.Vulkan.Core10.Core.VkResult' for presenting the swapchain+ -- corresponding to the same index in @pSwapchains@. vkPResults :: Ptr VkResult } deriving (Eq, Show)@@ -1448,7 +1478,6 @@ -- physical devices -- -- = Description--- #_description# -- -- @modes@ always has @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@ set. --@@ -1466,19 +1495,23 @@ -- - @pNext@ /must/ be @NULL@ -- -- = See Also--- #_see_also# -- -- 'VkDeviceGroupPresentModeFlagsKHR', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetDeviceGroupPresentCapabilitiesKHR' data VkDeviceGroupPresentCapabilitiesKHR = VkDeviceGroupPresentCapabilitiesKHR- { -- No documentation found for Nested "VkDeviceGroupPresentCapabilitiesKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupPresentCapabilitiesKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupPresentCapabilitiesKHR" "vkPresentMask"+ , -- | @presentMask@ is an array of masks, where the mask at element i is+ -- non-zero if physical device i has a presentation engine, and where bit j+ -- is set in element i if physical device i /can/ present swapchain images+ -- from physical device j. If element i is non-zero, then bit i /must/ be+ -- set. vkPresentMask :: Vector VK_MAX_DEVICE_GROUP_SIZE Word32- , -- No documentation found for Nested "VkDeviceGroupPresentCapabilitiesKHR" "vkModes"+ , -- | @modes@ is a bitmask of 'VkDeviceGroupPresentModeFlagBitsKHR' indicating+ -- which device group presentation modes are supported. vkModes :: VkDeviceGroupPresentModeFlagsKHR } deriving (Eq, Show)@@ -1497,15 +1530,13 @@ -- | VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to -- swapchain memory ----- = Description--- #_description#--- -- == Valid Usage -- -- - If @swapchain@ is not -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the fields of -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' /must/ match the--- <{html_spec_relative}#swapchain-wsi-image-create-info implied image creation parameters>+-- [implied image creation+-- parameters](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#swapchain-wsi-image-create-info) -- of the swapchain -- -- == Valid Usage (Implicit)@@ -1518,15 +1549,15 @@ -- /must/ be a valid @VkSwapchainKHR@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR' data VkImageSwapchainCreateInfoKHR = VkImageSwapchainCreateInfoKHR- { -- No documentation found for Nested "VkImageSwapchainCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImageSwapchainCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImageSwapchainCreateInfoKHR" "vkSwapchain"+ , -- | @swapchain@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a+ -- handle of a swapchain that the image will be bound to. vkSwapchain :: VkSwapchainKHR } deriving (Eq, Show)@@ -1544,7 +1575,6 @@ -- memory to bind to -- -- = Description--- #_description# -- -- If @swapchain@ is not @NULL@, the @swapchain@ and @imageIndex@ are used -- to determine the memory that the image is bound to, instead of @memory@@@ -1570,17 +1600,17 @@ -- - Host access to @swapchain@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR' data VkBindImageMemorySwapchainInfoKHR = VkBindImageMemorySwapchainInfoKHR- { -- No documentation found for Nested "VkBindImageMemorySwapchainInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindImageMemorySwapchainInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindImageMemorySwapchainInfoKHR" "vkSwapchain"+ , -- | @swapchain@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a+ -- swapchain handle. vkSwapchain :: VkSwapchainKHR- , -- No documentation found for Nested "VkBindImageMemorySwapchainInfoKHR" "vkImageIndex"+ , -- | @imageIndex@ is an image index within @swapchain@. vkImageIndex :: Word32 } deriving (Eq, Show)@@ -1600,7 +1630,6 @@ -- acquire -- -- = Description--- #_description# -- -- If 'vkAcquireNextImageKHR' is used, the device mask is considered to -- include all physical devices in the logical device.@@ -1671,26 +1700,27 @@ -- - Host access to @fence@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkFence', -- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR', -- 'vkAcquireNextImage2KHR' data VkAcquireNextImageInfoKHR = VkAcquireNextImageInfoKHR- { -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkSwapchain"+ , -- | @swapchain@ is a non-retired swapchain from which an image is acquired. vkSwapchain :: VkSwapchainKHR- , -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkTimeout"+ , -- | @timeout@ specifies how long the function waits, in nanoseconds, if no+ -- image is available. vkTimeout :: Word64- , -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkSemaphore"+ , -- | @semaphore@ is @VK_NULL_HANDLE@ or a semaphore to signal. vkSemaphore :: VkSemaphore- , -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkFence"+ , -- | @fence@ is @VK_NULL_HANDLE@ or a fence to signal. vkFence :: VkFence- , -- No documentation found for Nested "VkAcquireNextImageInfoKHR" "vkDeviceMask"+ , -- | @deviceMask@ is a mask of physical devices for which the swapchain image+ -- will be ready to use when the semaphore or fence is signaled. vkDeviceMask :: Word32 } deriving (Eq, Show)@@ -1716,7 +1746,6 @@ -- devices\' images are presented -- -- = Description--- #_description# -- -- If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@, then each -- element of @pDeviceMasks@ selects which instance of the swapchain image@@ -1794,20 +1823,21 @@ -- - @mode@ /must/ be a valid 'VkDeviceGroupPresentModeFlagBitsKHR' value -- -- = See Also--- #_see_also# -- -- 'VkDeviceGroupPresentModeFlagBitsKHR', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupPresentInfoKHR = VkDeviceGroupPresentInfoKHR- { -- No documentation found for Nested "VkDeviceGroupPresentInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupPresentInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupPresentInfoKHR" "vkSwapchainCount"+ , -- | @swapchainCount@ is zero or the number of elements in @pDeviceMasks@. vkSwapchainCount :: Word32- , -- No documentation found for Nested "VkDeviceGroupPresentInfoKHR" "vkPDeviceMasks"+ , -- | @pDeviceMasks@ is an array of device masks, one for each element of+ -- 'VkPresentInfoKHR'::pSwapchains. vkPDeviceMasks :: Ptr Word32- , -- No documentation found for Nested "VkDeviceGroupPresentInfoKHR" "vkMode"+ , -- | @mode@ is the device group present mode that will be used for this+ -- present. vkMode :: VkDeviceGroupPresentModeFlagBitsKHR } deriving (Eq, Show)@@ -1829,7 +1859,6 @@ -- a newly created swapchain object -- -- = Description--- #_description# -- -- If this structure is not present, @modes@ is considered to be -- @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@.@@ -1845,16 +1874,15 @@ -- - @modes@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'VkDeviceGroupPresentModeFlagsKHR', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDeviceGroupSwapchainCreateInfoKHR = VkDeviceGroupSwapchainCreateInfoKHR- { -- No documentation found for Nested "VkDeviceGroupSwapchainCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGroupSwapchainCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGroupSwapchainCreateInfoKHR" "vkModes"+ , -- | @modes@ is a bitfield of modes that the swapchain /can/ be used with. vkModes :: VkDeviceGroupPresentModeFlagsKHR } deriving (Eq, Show)@@ -1871,13 +1899,11 @@ -- | VkSwapchainCreateFlagsKHR - Bitmask of VkSwapchainCreateFlagBitsKHR -- -- = Description--- #_description# -- -- @VkSwapchainCreateFlagsKHR@ is a bitmask type for setting a mask of zero -- or more 'VkSwapchainCreateFlagBitsKHR'. -- -- = See Also--- #_see_also# -- -- 'VkSwapchainCreateFlagBitsKHR', 'VkSwapchainCreateInfoKHR' type VkSwapchainCreateFlagsKHR = VkSwapchainCreateFlagBitsKHR@@ -1885,13 +1911,11 @@ -- VkDeviceGroupPresentModeFlagBitsKHR -- -- = Description--- #_description# -- -- @VkDeviceGroupPresentModeFlagsKHR@ is a bitmask type for setting a mask -- of zero or more 'VkDeviceGroupPresentModeFlagBitsKHR'. -- -- = See Also--- #_see_also# -- -- 'VkDeviceGroupPresentCapabilitiesKHR', -- 'VkDeviceGroupPresentModeFlagBitsKHR',
src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs view
@@ -113,7 +113,6 @@ -- Wayland window -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance to associate the surface with. --@@ -123,14 +122,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -145,16 +142,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -165,7 +161,6 @@ -- for presentation to Wayland -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. --@@ -175,7 +170,6 @@ -- compositor. -- -- = Description--- #_description# -- -- This platform-specific function /can/ be called prior to creating a -- surface.@@ -193,16 +187,12 @@ -- - @display@ /must/ be a valid pointer to a @wl_display@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkGetPhysicalDeviceWaylandPresentationSupportKHR" vkGetPhysicalDeviceWaylandPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32 -- | VkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a -- newly created Wayland surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @display@ /must/ point to a valid Wayland @wl_display@.@@ -219,20 +209,20 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkWaylandSurfaceCreateFlagsKHR', 'vkCreateWaylandSurfaceKHR' data VkWaylandSurfaceCreateInfoKHR = VkWaylandSurfaceCreateInfoKHR- { -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkWaylandSurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "vkDisplay"+ , -- | @display@ and @surface@ are pointers to the Wayland @wl_display@ and+ -- @wl_surface@ to associate the surface with. vkDisplay :: Ptr Wl_display- , -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "vkSurface"+ , -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "surface" vkSurface :: Ptr Wl_surface } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs view
@@ -48,9 +48,6 @@ -- | VkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex -- mechanism to synchronize work ----- = Description--- #_description#--- -- == Valid Usage -- -- - Each member of @pAcquireSyncs@ and @pReleaseSyncs@ /must/ be a@@ -84,28 +81,37 @@ -- allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkWin32KeyedMutexAcquireReleaseInfoKHR = VkWin32KeyedMutexAcquireReleaseInfoKHR- { -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkSType"+ { -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkPNext"+ , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkAcquireCount"+ , -- | @acquireCount@ is the number of entries in the @pAcquireSyncs@,+ -- @pAcquireKeys@, and @pAcquireTimeoutMilliseconds@ arrays. vkAcquireCount :: Word32- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkPAcquireSyncs"+ , -- | @pAcquireSyncs@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were+ -- imported from Direct3D 11 resources. vkPAcquireSyncs :: Ptr VkDeviceMemory- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkPAcquireKeys"+ , -- | @pAcquireKeys@ is a pointer to an array of mutex key values to wait for+ -- prior to beginning the submitted work. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pAcquireSyncs@. vkPAcquireKeys :: Ptr Word64- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkPAcquireTimeouts"+ , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pAcquireTimeouts" vkPAcquireTimeouts :: Ptr Word32- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkReleaseCount"+ , -- | @releaseCount@ is the number of entries in the @pReleaseSyncs@ and+ -- @pReleaseKeys@ arrays. vkReleaseCount :: Word32- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkPReleaseSyncs"+ , -- | @pReleaseSyncs@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were+ -- imported from Direct3D 11 resources. vkPReleaseSyncs :: Ptr VkDeviceMemory- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "vkPReleaseKeys"+ , -- | @pReleaseKeys@ is a pointer to an array of mutex key values to set when+ -- the submitted work has completed. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pReleaseSyncs@. vkPReleaseKeys :: Ptr Word64 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs view
@@ -113,7 +113,6 @@ -- Win32 native window -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance to associate the surface with. --@@ -123,14 +122,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -145,16 +142,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -165,14 +161,12 @@ -- support for presentation on a Win32 display -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. -- -- - @queueFamilyIndex@ is the queue family index. -- -- = Description--- #_description# -- -- This platform-specific function /can/ be called prior to creating a -- surface.@@ -188,16 +182,12 @@ -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkGetPhysicalDeviceWin32PresentationSupportKHR" vkGetPhysicalDeviceWin32PresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32 -- | VkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Win32 surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @hinstance@ /must/ be a valid Win32 @HINSTANCE@.@@ -213,20 +203,20 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkWin32SurfaceCreateFlagsKHR', 'vkCreateWin32SurfaceKHR' data VkWin32SurfaceCreateInfoKHR = VkWin32SurfaceCreateInfoKHR- { -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkWin32SurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "vkHinstance"+ , -- | @hinstance@ and @hwnd@ are the Win32 @HINSTANCE@ and @HWND@ for the+ -- window to associate the surface with. vkHinstance :: HINSTANCE- , -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "vkHwnd"+ , -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "hwnd" vkHwnd :: HWND } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs view
@@ -116,7 +116,6 @@ -- X11 window, using the XCB client-side library -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance to associate the surface with. --@@ -126,14 +125,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -148,16 +145,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -168,7 +164,6 @@ -- presentation to X11 server using XCB -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. --@@ -178,7 +173,6 @@ -- @visual_id@ is an X11 visual (@xcb_visualid_t@). -- -- = Description--- #_description# -- -- This platform-specific function /can/ be called prior to creating a -- surface.@@ -196,16 +190,12 @@ -- - @connection@ /must/ be a valid pointer to a @xcb_connection_t@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkGetPhysicalDeviceXcbPresentationSupportKHR" vkGetPhysicalDeviceXcbPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32 -- | VkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Xcb surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @connection@ /must/ point to a valid X11 @xcb_connection_t@.@@ -221,20 +211,20 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkXcbSurfaceCreateFlagsKHR', 'vkCreateXcbSurfaceKHR' data VkXcbSurfaceCreateInfoKHR = VkXcbSurfaceCreateInfoKHR- { -- No documentation found for Nested "VkXcbSurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkXcbSurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkXcbSurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkXcbSurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkXcbSurfaceCreateInfoKHR" "vkConnection"+ , -- | @connection@ is a pointer to an @xcb_connection_t@ to the X server. vkConnection :: Ptr Xcb_connection_t- , -- No documentation found for Nested "VkXcbSurfaceCreateInfoKHR" "vkWindow"+ , -- | @window@ is the @xcb_window_t@ for the X11 window to associate the+ -- surface with. vkWindow :: Xcb_window_t } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs view
@@ -117,7 +117,6 @@ -- X11 window, using the Xlib client-side library -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance to associate the surface with. --@@ -127,14 +126,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -149,16 +146,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -169,7 +165,6 @@ -- for presentation to X11 server using Xlib -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device. --@@ -180,7 +175,6 @@ -- - @visualId@ is an X11 visual (@VisualID@). -- -- = Description--- #_description# -- -- This platform-specific function /can/ be called prior to creating a -- surface.@@ -198,16 +192,12 @@ -- - @dpy@ /must/ be a valid pointer to a @Display@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' foreign import ccall "vkGetPhysicalDeviceXlibPresentationSupportKHR" vkGetPhysicalDeviceXlibPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32 -- | VkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Xlib surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @dpy@ /must/ point to a valid Xlib @Display@.@@ -223,20 +213,19 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkXlibSurfaceCreateFlagsKHR', 'vkCreateXlibSurfaceKHR' data VkXlibSurfaceCreateInfoKHR = VkXlibSurfaceCreateInfoKHR- { -- No documentation found for Nested "VkXlibSurfaceCreateInfoKHR" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkXlibSurfaceCreateInfoKHR" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkXlibSurfaceCreateInfoKHR" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkXlibSurfaceCreateFlagsKHR- , -- No documentation found for Nested "VkXlibSurfaceCreateInfoKHR" "vkDpy"+ , -- | @dpy@ is a pointer to an Xlib @Display@ connection to the X server. vkDpy :: Ptr Display- , -- No documentation found for Nested "VkXlibSurfaceCreateInfoKHR" "vkWindow"+ , -- | @window@ is an Xlib @Window@ to associate the surface with. vkWindow :: Window } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs view
@@ -99,7 +99,6 @@ -- | vkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIView -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance with which to associate the surface. --@@ -109,14 +108,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -131,10 +128,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -142,7 +139,6 @@ -- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'VkIOSSurfaceCreateInfoMVK',@@ -152,9 +148,6 @@ -- | VkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly -- created iOS surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @pView@ /must/ be a valid @UIView@ and /must/ be backed by a@@ -169,18 +162,19 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkIOSSurfaceCreateFlagsMVK', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateIOSSurfaceMVK' data VkIOSSurfaceCreateInfoMVK = VkIOSSurfaceCreateInfoMVK- { -- No documentation found for Nested "VkIOSSurfaceCreateInfoMVK" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkIOSSurfaceCreateInfoMVK" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkIOSSurfaceCreateInfoMVK" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkIOSSurfaceCreateFlagsMVK- , -- No documentation found for Nested "VkIOSSurfaceCreateInfoMVK" "vkPView"+ , -- | @pView@ is a reference to a @UIView@ object which will display this+ -- surface. This @UIView@ /must/ be backed by a @CALayer@ instance of type+ -- @CAMetalLayer@. vkPView :: Ptr () } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs view
@@ -100,7 +100,6 @@ -- NSView -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance with which to associate the surface. --@@ -110,14 +109,12 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @instance@ /must/ be a valid @VkInstance@ handle@@ -132,10 +129,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -143,7 +140,6 @@ -- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -153,9 +149,6 @@ -- | VkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly -- created macOS surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @pView@ /must/ be a valid @NSView@ and /must/ be backed by a@@ -170,18 +163,19 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'VkMacOSSurfaceCreateFlagsMVK', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateMacOSSurfaceMVK' data VkMacOSSurfaceCreateInfoMVK = VkMacOSSurfaceCreateInfoMVK- { -- No documentation found for Nested "VkMacOSSurfaceCreateInfoMVK" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkMacOSSurfaceCreateInfoMVK" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMacOSSurfaceCreateInfoMVK" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkMacOSSurfaceCreateFlagsMVK- , -- No documentation found for Nested "VkMacOSSurfaceCreateInfoMVK" "vkPView"+ , -- | @pView@ is a reference to a @NSView@ object which will display this+ -- surface. This @NSView@ /must/ be backed by a @CALayer@ instance of type+ -- @CAMetalLayer@. vkPView :: Ptr () } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs view
@@ -101,7 +101,6 @@ -- layer -- -- = Parameters--- #_parameters# -- -- - @instance@ is the instance with which to associate the surface. --@@ -111,13 +110,13 @@ -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see <{html_spec_relative}#memory-allocation Memory Allocation>).+-- (see [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)). -- -- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created -- surface object is returned. -- -- = Description--- #_description# -- -- During the lifetime of a surface created using a particular -- @nn@::@vi@::@NativeWindowHandle@ any attempts to create another surface@@ -144,10 +143,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -155,7 +154,6 @@ -- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',@@ -165,9 +163,6 @@ -- | VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly -- created VI surface object ----- = Description--- #_description#--- -- == Valid Usage -- -- - @window@ /must/ be a valid @nn@::@vi@::@NativeWindowHandle@@@ -181,18 +176,18 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkViSurfaceCreateFlagsNN', 'vkCreateViSurfaceNN' data VkViSurfaceCreateInfoNN = VkViSurfaceCreateInfoNN- { -- No documentation found for Nested "VkViSurfaceCreateInfoNN" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkViSurfaceCreateInfoNN" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkViSurfaceCreateInfoNN" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkViSurfaceCreateFlagsNN- , -- No documentation found for Nested "VkViSurfaceCreateInfoNN" "vkWindow"+ , -- | @window@ is the @nn@::@vi@::@NativeWindowHandle@ for the+ -- @nn@::@vi@::@Layer@ with which to associate the surface. vkWindow :: Ptr () } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs view
@@ -159,39 +159,32 @@ -- | VkIndirectCommandsTokenTypeNVX - Enum specifying -- -- = Description--- #_description# ----- > +-----------------------------------------------+----------------------+--- > | Token type | Equivalent command |--- > +===============================================+======================+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX | @vkCmdBindPipeline@ |--- > | @ | |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_S | @vkCmdBindDescriptor |--- > | ET_NVX@ | Sets@ |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER | @vkCmdBindIndexBuffe |--- > | _NVX@ | r@ |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFE | @vkCmdBindVertexBuff |--- > | R_NVX@ | ers@ |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTAN | @vkCmdPushConstants@ |--- > | T_NVX@ | |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED | @vkCmdDrawIndexedInd |--- > | _NVX@ | irect@ |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX@ | @vkCmdDrawIndirect@ |--- > +-----------------------------------------------+----------------------+--- > | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX | @vkCmdDispatchIndire |--- > | @ | ct@ |--- > +-----------------------------------------------+----------------------+--- >--- > Supported indirect command tokens+-- \' --+-- +------------------------------------------------------+----------------------------++-- | Token type | Equivalent command |+-- +======================================================+============================++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX@ | @vkCmdBindPipeline@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX@ | @vkCmdBindDescriptorSets@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX@ | @vkCmdBindIndexBuffer@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX@ | @vkCmdBindVertexBuffers@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX@ | @vkCmdPushConstants@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX@ | @vkCmdDrawIndexedIndirect@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX@ | @vkCmdDrawIndirect@ |+-- +------------------------------------------------------+----------------------------++-- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX@ | @vkCmdDispatchIndirect@ |+-- +------------------------------------------------------+----------------------------++--+-- Supported indirect command tokens+-- -- = See Also--- #_see_also# -- -- 'VkIndirectCommandsLayoutTokenNVX', 'VkIndirectCommandsTokenNVX' newtype VkIndirectCommandsTokenTypeNVX = VkIndirectCommandsTokenTypeNVX Int32@@ -261,7 +254,6 @@ -- | VkObjectEntryTypeNVX - Enum specifying object table entry type -- -- = See Also--- #_see_also# -- -- 'VkObjectTableCreateInfoNVX', 'VkObjectTableDescriptorSetEntryNVX', -- 'VkObjectTableEntryNVX', 'VkObjectTableIndexBufferEntryNVX',@@ -323,7 +315,6 @@ -- usage of a indirect commands layout -- -- = See Also--- #_see_also# -- -- 'VkIndirectCommandsLayoutUsageFlagsNVX' newtype VkIndirectCommandsLayoutUsageFlagBitsNVX = VkIndirectCommandsLayoutUsageFlagBitsNVX VkFlags@@ -380,7 +371,6 @@ -- object entry -- -- = See Also--- #_see_also# -- -- 'VkObjectEntryUsageFlagsNVX' newtype VkObjectEntryUsageFlagBitsNVX = VkObjectEntryUsageFlagBitsNVX VkFlags@@ -454,11 +444,7 @@ data VkObjectTableNVX_T -- | VkObjectTableNVX - Opaque handle to an object table ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkCmdProcessCommandsInfoNVX', 'VkCmdReserveSpaceForCommandsInfoNVX', -- 'vkCreateObjectTableNVX', 'vkDestroyObjectTableNVX',@@ -469,11 +455,7 @@ -- | VkIndirectCommandsLayoutNVX - Opaque handle to an indirect commands -- layout object ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkCmdProcessCommandsInfoNVX', 'VkCmdReserveSpaceForCommandsInfoNVX', -- 'vkCreateIndirectCommandsLayoutNVX',@@ -483,7 +465,6 @@ -- device -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the primary command buffer in which the -- generation process takes space.@@ -492,9 +473,6 @@ -- 'VkCmdProcessCommandsInfoNVX' structure containing parameters -- affecting the processing of commands. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle@@ -502,8 +480,8 @@ -- - @pProcessCommandsInfo@ /must/ be a valid pointer to a valid -- @VkCmdProcessCommandsInfoNVX@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -519,18 +497,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Inside | Graphics | |--- > | Secondary | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Inside | Graphics | |+-- | Secondary | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'VkCmdProcessCommandsInfoNVX', -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'@@ -539,7 +516,6 @@ -- buffer space -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the secondary command buffer in which the space -- for device-generated commands is reserved.@@ -548,9 +524,6 @@ -- 'vkCmdReserveSpaceForCommandsNVX' structure containing parameters -- affecting the reservation of command buffer space. ----- = Description--- #_description#--- -- == Valid Usage -- -- - The provided @commandBuffer@ /must/ not have had a prior space@@ -567,8 +540,8 @@ -- - @pReserveSpaceInfo@ /must/ be a valid pointer to a valid -- @VkCmdReserveSpaceForCommandsInfoNVX@ structure ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics, or compute operations@@ -586,18 +559,17 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Secondary | Inside | Graphics | |--- > | | | Compute | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Secondary | Inside | Graphics | |+-- | | | Compute | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'VkCmdReserveSpaceForCommandsInfoNVX', -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'@@ -606,7 +578,6 @@ -- object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the indirect command -- layout.@@ -616,14 +587,13 @@ -- parameters affecting creation of the indirect command layout. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pIndirectCommandsLayout@ points to a @VkIndirectCommandsLayoutNVX@ -- handle in which the resulting indirect command layout is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -639,16 +609,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -657,17 +626,15 @@ -- | vkDestroyIndirectCommandsLayoutNVX - Destroy a object table -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the layout. -- -- - @indirectCommandsLayout@ is the table to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -694,7 +661,6 @@ -- retrieved from @device@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -703,7 +669,6 @@ -- | vkCreateObjectTableNVX - Create an object table -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the object table. --@@ -712,14 +677,13 @@ -- affecting creation of the table. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- - @pObjectTable@ points to a @VkObjectTableNVX@ handle in which the -- resulting object table is returned. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @device@ /must/ be a valid @VkDevice@ handle@@ -735,16 +699,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -753,17 +716,15 @@ -- | vkDestroyObjectTableNVX - Destroy a object table -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that destroys the table. -- -- - @objectTable@ is the table to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- <{html_spec_relative}#memory-allocation Memory Allocation> chapter.------ = Description--- #_description#+-- [Memory+-- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- chapter. -- -- == Valid Usage --@@ -793,7 +754,6 @@ -- - Host access to @objectTable@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',@@ -802,7 +762,6 @@ -- | vkRegisterObjectsNVX - Register resource bindings in an object table -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the object table. --@@ -821,9 +780,6 @@ -- - @pObjectIndices@ are the indices at which each resource is -- registered. ----- = Description--- #_description#--- -- == Valid Usage -- -- - The contents of @pObjectTableEntry@ /must/ yield plausible bindings@@ -859,16 +815,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkObjectTableEntryNVX', 'VkObjectTableNVX'@@ -876,7 +831,6 @@ -- | vkUnregisterObjectsNVX - Unregister resource bindings in an object table -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that creates the object table. --@@ -891,9 +845,6 @@ -- -- - @pObjectIndices@ provides the array of object indices to be removed. ----- = Description--- #_description#--- -- == Valid Usage -- -- - At any @pObjectIndices@ there /must/ be a registered resource@@ -928,16 +879,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'VkObjectEntryTypeNVX', 'VkObjectTableNVX'@@ -946,7 +896,6 @@ -- device-generated commands related properties of a physical device -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the handle to the physical device whose -- properties will be queried.@@ -959,9 +908,6 @@ -- 'VkDeviceGeneratedCommandsLimitsNVX' structure, that will be filled -- with returned information. ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle@@ -973,7 +919,6 @@ -- @VkDeviceGeneratedCommandsLimitsNVX@ structure -- -- = See Also--- #_see_also# -- -- 'VkDeviceGeneratedCommandsFeaturesNVX', -- 'VkDeviceGeneratedCommandsLimitsNVX',@@ -982,9 +927,6 @@ -- | VkDeviceGeneratedCommandsFeaturesNVX - Structure specifying physical -- device support ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -993,16 +935,18 @@ -- - @pNext@ /must/ be @NULL@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX' data VkDeviceGeneratedCommandsFeaturesNVX = VkDeviceGeneratedCommandsFeaturesNVX- { -- No documentation found for Nested "VkDeviceGeneratedCommandsFeaturesNVX" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGeneratedCommandsFeaturesNVX" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGeneratedCommandsFeaturesNVX" "vkComputeBindingPointSupport"+ , -- | @computeBindingPointSupport@ specifies whether the @VkObjectTableNVX@+ -- supports entries with @VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX@ bit set+ -- and @VkIndirectCommandsLayoutNVX@ supports+ -- @VK_PIPELINE_BIND_POINT_COMPUTE@. vkComputeBindingPointSupport :: VkBool32 } deriving (Eq, Show)@@ -1019,9 +963,6 @@ -- | VkDeviceGeneratedCommandsLimitsNVX - Structure specifying physical -- device limits ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -1030,24 +971,28 @@ -- - @pNext@ /must/ be @NULL@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX' data VkDeviceGeneratedCommandsLimitsNVX = VkDeviceGeneratedCommandsLimitsNVX- { -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkMaxIndirectCommandsLayoutTokenCount"+ , -- | @maxIndirectCommandsLayoutTokenCount@ the maximum number of tokens in+ -- @VkIndirectCommandsLayoutNVX@. vkMaxIndirectCommandsLayoutTokenCount :: Word32- , -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkMaxObjectEntryCounts"+ , -- | @maxObjectEntryCounts@ the maximum number of entries per resource type+ -- in @VkObjectTableNVX@. vkMaxObjectEntryCounts :: Word32- , -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkMinSequenceCountBufferOffsetAlignment"+ , -- | @minSequenceCountBufferOffsetAlignment@ the minimum alignment for memory+ -- addresses optionally used in @vkCmdProcessCommandsNVX@. vkMinSequenceCountBufferOffsetAlignment :: Word32- , -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkMinSequenceIndexBufferOffsetAlignment"+ , -- | @minSequenceIndexBufferOffsetAlignment@ the minimum alignment for memory+ -- addresses optionally used in @vkCmdProcessCommandsNVX@. vkMinSequenceIndexBufferOffsetAlignment :: Word32- , -- No documentation found for Nested "VkDeviceGeneratedCommandsLimitsNVX" "vkMinCommandsTokenBufferOffsetAlignment"+ , -- | @minCommandsTokenBufferOffsetAlignment@ the minimum alignment for memory+ -- addresses optionally used in @vkCmdProcessCommandsNVX@. vkMinCommandsTokenBufferOffsetAlignment :: Word32 } deriving (Eq, Show)@@ -1072,9 +1017,6 @@ -- | VkIndirectCommandsTokenNVX - Structure specifying parameters for the -- reservation of command buffer space ----- = Description--- #_description#--- -- == Valid Usage -- -- - The @buffer@’s usage flag /must/ have the@@ -1090,17 +1032,17 @@ -- - @buffer@ /must/ be a valid @VkBuffer@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'VkCmdProcessCommandsInfoNVX', @VkDeviceSize@, -- 'VkIndirectCommandsTokenTypeNVX' data VkIndirectCommandsTokenNVX = VkIndirectCommandsTokenNVX- { -- No documentation found for Nested "VkIndirectCommandsTokenNVX" "vkTokenType"+ { -- | @tokenType@ specifies the token command type. vkTokenType :: VkIndirectCommandsTokenTypeNVX- , -- No documentation found for Nested "VkIndirectCommandsTokenNVX" "vkBuffer"+ , -- | @buffer@ specifies the @VkBuffer@ storing the functional arguments for+ -- each squence. These argumetns can be written by the device. vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkIndirectCommandsTokenNVX" "vkOffset"+ , -- | @offset@ specified an offset into @buffer@ where the arguments start. vkOffset :: VkDeviceSize } deriving (Eq, Show)@@ -1117,9 +1059,6 @@ -- | VkIndirectCommandsLayoutTokenNVX - Struct specifying the details of an -- indirect command layout token ----- = Description--- #_description#--- -- == Valid Usage -- -- - @bindingUnit@ /must/ stay within device supported limits for the@@ -1135,18 +1074,19 @@ -- - @tokenType@ /must/ be a valid 'VkIndirectCommandsTokenTypeNVX' value -- -- = See Also--- #_see_also# -- -- 'VkIndirectCommandsLayoutCreateInfoNVX', -- 'VkIndirectCommandsTokenTypeNVX' data VkIndirectCommandsLayoutTokenNVX = VkIndirectCommandsLayoutTokenNVX- { -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNVX" "vkTokenType"+ { -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNVX" "tokenType" vkTokenType :: VkIndirectCommandsTokenTypeNVX- , -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNVX" "vkBindingUnit"+ , -- | @bindingUnit@ has a different meaning depending on the type, please+ -- refer pseudo code further down for details. vkBindingUnit :: Word32- , -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNVX" "vkDynamicCount"+ , -- | @dynamicCount@ has a different meaning depending on the type, please+ -- refer pseudo code further down for details. vkDynamicCount :: Word32- , -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNVX" "vkDivisor"+ , -- | @divisor@ defines the rate at which the input data buffers are accessed. vkDivisor :: Word32 } deriving (Eq, Show)@@ -1166,7 +1106,6 @@ -- parameters of a newly created indirect commands layout object -- -- = Description--- #_description# -- -- The following code illustrates some of the key flags: --@@ -1231,7 +1170,6 @@ -- - @tokenCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkIndirectCommandsLayoutTokenNVX', -- 'VkIndirectCommandsLayoutUsageFlagsNVX',@@ -1239,17 +1177,21 @@ -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCreateIndirectCommandsLayoutNVX' data VkIndirectCommandsLayoutCreateInfoNVX = VkIndirectCommandsLayoutCreateInfoNVX- { -- No documentation found for Nested "VkIndirectCommandsLayoutCreateInfoNVX" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkIndirectCommandsLayoutCreateInfoNVX" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkIndirectCommandsLayoutCreateInfoNVX" "vkPipelineBindPoint"+ , -- | @pipelineBindPoint@ is the @VkPipelineBindPoint@ that this layout+ -- targets. vkPipelineBindPoint :: VkPipelineBindPoint- , -- No documentation found for Nested "VkIndirectCommandsLayoutCreateInfoNVX" "vkFlags"+ , -- | @flags@ is a bitmask of 'VkIndirectCommandsLayoutUsageFlagBitsNVX'+ -- specifying usage hints of this layout. vkFlags :: VkIndirectCommandsLayoutUsageFlagsNVX- , -- No documentation found for Nested "VkIndirectCommandsLayoutCreateInfoNVX" "vkTokenCount"+ , -- | @tokenCount@ is the length of the individual command sequnce. vkTokenCount :: Word32- , -- No documentation found for Nested "VkIndirectCommandsLayoutCreateInfoNVX" "vkPTokens"+ , -- | @pTokens@ is an array describing each command token in detail. See+ -- 'VkIndirectCommandsTokenTypeNVX' and 'VkIndirectCommandsLayoutTokenNVX'+ -- below for details. vkPTokens :: Ptr VkIndirectCommandsLayoutTokenNVX } deriving (Eq, Show)@@ -1272,9 +1214,6 @@ -- | VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the -- generation of commands ----- = Description--- #_description#--- -- == Valid Usage -- -- - The provided @objectTable@ /must/ include all objects referenced by@@ -1355,7 +1294,6 @@ -- synchronized -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,@@ -1363,29 +1301,47 @@ -- 'VkObjectTableNVX', 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCmdProcessCommandsNVX' data VkCmdProcessCommandsInfoNVX = VkCmdProcessCommandsInfoNVX- { -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkObjectTable"+ , -- | @objectTable@ is the @VkObjectTableNVX@ to be used for the generation+ -- process. Only registered objects at the time+ -- 'vkCmdReserveSpaceForCommandsNVX' is called, will be taken into account+ -- for the reservation. vkObjectTable :: VkObjectTableNVX- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkIndirectCommandsLayout"+ , -- | @indirectCommandsLayout@ is the @VkIndirectCommandsLayoutNVX@ that+ -- provides the command sequence to generate. vkIndirectCommandsLayout :: VkIndirectCommandsLayoutNVX- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkIndirectCommandsTokenCount"+ , -- | @indirectCommandsTokenCount@ defines the number of input tokens used. vkIndirectCommandsTokenCount :: Word32- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkPIndirectCommandsTokens"+ , -- | @pIndirectCommandsTokens@ provides an array of+ -- 'VkIndirectCommandsTokenNVX' that reference the input data for each+ -- token command. vkPIndirectCommandsTokens :: Ptr VkIndirectCommandsTokenNVX- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkMaxSequencesCount"+ , -- | @maxSequencesCount@ is the maximum number of sequences for which command+ -- buffer space will be reserved. If @sequencesCountBuffer@ is+ -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', this is also the+ -- actual number of sequences generated. vkMaxSequencesCount :: Word32- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkTargetCommandBuffer"+ , -- | @targetCommandBuffer@ /can/ be the secondary @VkCommandBuffer@ in which+ -- the commands should be recorded. If @targetCommandBuffer@ is @NULL@ an+ -- implicit reservation as well as execution takes place on the processing+ -- @VkCommandBuffer@. vkTargetCommandBuffer :: VkCommandBuffer- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkSequencesCountBuffer"+ , -- | @sequencesCountBuffer@ /can/ be @VkBuffer@ from which the actual amount+ -- of sequences is sourced from as @uint32_t@ value. vkSequencesCountBuffer :: VkBuffer- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkSequencesCountOffset"+ , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@+ -- where the count value is stored. vkSequencesCountOffset :: VkDeviceSize- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkSequencesIndexBuffer"+ , -- | @sequencesIndexBuffer@ /must/ be set if @indirectCommandsLayout@’s+ -- @VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT@ is set and+ -- provides the used sequence indices as @uint32_t@ array. Otherwise it+ -- /must/ be 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'. vkSequencesIndexBuffer :: VkBuffer- , -- No documentation found for Nested "VkCmdProcessCommandsInfoNVX" "vkSequencesIndexOffset"+ , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@+ -- where the index values start. vkSequencesIndexOffset :: VkDeviceSize } deriving (Eq, Show)@@ -1420,9 +1376,6 @@ -- | VkCmdReserveSpaceForCommandsInfoNVX - Structure specifying parameters -- for the reservation of command buffer space ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -1443,21 +1396,25 @@ -- - Host access to @objectTable@ /must/ be externally synchronized -- -- = See Also--- #_see_also# -- -- 'VkIndirectCommandsLayoutNVX', 'VkObjectTableNVX', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'vkCmdReserveSpaceForCommandsNVX' data VkCmdReserveSpaceForCommandsInfoNVX = VkCmdReserveSpaceForCommandsInfoNVX- { -- No documentation found for Nested "VkCmdReserveSpaceForCommandsInfoNVX" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkCmdReserveSpaceForCommandsInfoNVX" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCmdReserveSpaceForCommandsInfoNVX" "vkObjectTable"+ , -- | @objectTable@ is the @VkObjectTableNVX@ to be used for the generation+ -- process. Only registered objects at the time+ -- 'vkCmdReserveSpaceForCommandsNVX' is called, will be taken into account+ -- for the reservation. vkObjectTable :: VkObjectTableNVX- , -- No documentation found for Nested "VkCmdReserveSpaceForCommandsInfoNVX" "vkIndirectCommandsLayout"+ , -- | @indirectCommandsLayout@ is the @VkIndirectCommandsLayoutNVX@ that+ -- /must/ also be used at generation time. vkIndirectCommandsLayout :: VkIndirectCommandsLayoutNVX- , -- No documentation found for Nested "VkCmdReserveSpaceForCommandsInfoNVX" "vkMaxSequencesCount"+ , -- | @maxSequencesCount@ is the maximum number of sequences for which command+ -- buffer space will be reserved. vkMaxSequencesCount :: Word32 } deriving (Eq, Show)@@ -1478,9 +1435,6 @@ -- | VkObjectTableCreateInfoNVX - Structure specifying the parameters of a -- newly created object table ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the@@ -1524,32 +1478,51 @@ -- - @objectCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateObjectTableNVX' data VkObjectTableCreateInfoNVX = VkObjectTableCreateInfoNVX- { -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkObjectCount"+ , -- | @objectCount@ is the number of entry configurations that the object+ -- table supports. vkObjectCount :: Word32- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkPObjectEntryTypes"+ , -- | @pObjectEntryTypes@ is an array of 'VkObjectEntryTypeNVX' values+ -- providing the entry type of a given configuration. vkPObjectEntryTypes :: Ptr VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkPObjectEntryCounts"+ , -- | @pObjectEntryCounts@ is an array of counts of how many objects can be+ -- registered in the table. vkPObjectEntryCounts :: Ptr Word32- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkPObjectEntryUsageFlags"+ , -- | @pObjectEntryUsageFlags@ is an array of bitmasks of+ -- 'VkObjectEntryUsageFlagBitsNVX' specifying the binding usage of the+ -- entry. vkPObjectEntryUsageFlags :: Ptr VkObjectEntryUsageFlagsNVX- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkMaxUniformBuffersPerDescriptor"+ , -- | @maxUniformBuffersPerDescriptor@ is the maximum number of+ -- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or+ -- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ used by any single+ -- registered @VkDescriptorSet@ in this table. vkMaxUniformBuffersPerDescriptor :: Word32- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkMaxStorageBuffersPerDescriptor"+ , -- | @maxStorageBuffersPerDescriptor@ is the maximum number of+ -- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or+ -- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ used by any single+ -- registered @VkDescriptorSet@ in this table. vkMaxStorageBuffersPerDescriptor :: Word32- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkMaxStorageImagesPerDescriptor"+ , -- | @maxStorageImagesPerDescriptor@ is the maximum number of+ -- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ or+ -- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ used by any single registered+ -- @VkDescriptorSet@ in this table. vkMaxStorageImagesPerDescriptor :: Word32- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkMaxSampledImagesPerDescriptor"+ , -- | @maxSampledImagesPerDescriptor@ is the maximum number of+ -- @VK_DESCRIPTOR_TYPE_SAMPLER@,+ -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,+ -- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ or+ -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ used by any single registered+ -- @VkDescriptorSet@ in this table. vkMaxSampledImagesPerDescriptor :: Word32- , -- No documentation found for Nested "VkObjectTableCreateInfoNVX" "vkMaxPipelineLayouts"+ , -- | @maxPipelineLayouts@ is the maximum number of unique @VkPipelineLayout@+ -- used by any registered @VkDescriptorSet@ or @VkPipeline@ in this table. vkMaxPipelineLayouts :: Word32 } deriving (Eq, Show)@@ -1582,9 +1555,6 @@ -- | VkObjectTableEntryNVX - Common parameters of an object table resource -- entry ----- = Description--- #_description#--- -- == Valid Usage -- -- - If the@@ -1602,14 +1572,14 @@ -- - @flags@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX', -- 'vkRegisterObjectsNVX' data VkObjectTableEntryNVX = VkObjectTableEntryNVX- { -- No documentation found for Nested "VkObjectTableEntryNVX" "vkType"+ { -- | @type@ defines the entry type vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableEntryNVX" "vkFlags"+ , -- | @flags@ defines which @VkPipelineBindPoint@ the resource can be used+ -- with. Some entry types allow only a single flag to be set. vkFlags :: VkObjectEntryUsageFlagsNVX } deriving (Eq, Show)@@ -1624,9 +1594,6 @@ -- | VkObjectTablePipelineEntryNVX - Parameters of an object table pipeline -- entry ----- = Description--- #_description#--- -- == Valid Usage -- -- - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX@@@ -1643,16 +1610,16 @@ -- - @pipeline@ /must/ be a valid @VkPipeline@ handle -- -- = See Also--- #_see_also# -- -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX', -- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline' data VkObjectTablePipelineEntryNVX = VkObjectTablePipelineEntryNVX- { -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "vkType"+ { -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "type" vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "vkFlags"+ , -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "flags" vkFlags :: VkObjectEntryUsageFlagsNVX- , -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "vkPipeline"+ , -- | @pipeline@ specifies the @VkPipeline@ that this resource entry+ -- references. vkPipeline :: VkPipeline } deriving (Eq, Show)@@ -1669,9 +1636,6 @@ -- | VkObjectTableDescriptorSetEntryNVX - Parameters of an object table -- descriptor set entry ----- = Description--- #_description#--- -- == Valid Usage -- -- - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX@@@ -1693,19 +1657,20 @@ -- created, allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet', -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX', -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout' data VkObjectTableDescriptorSetEntryNVX = VkObjectTableDescriptorSetEntryNVX- { -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "vkType"+ { -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "type" vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "vkFlags"+ , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "flags" vkFlags :: VkObjectEntryUsageFlagsNVX- , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "vkPipelineLayout"+ , -- | @pipelineLayout@ specifies the @VkPipelineLayout@ that the+ -- @descriptorSet@ is used with. vkPipelineLayout :: VkPipelineLayout- , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "vkDescriptorSet"+ , -- | @descriptorSet@ specifies the @VkDescriptorSet@ that can be bound with+ -- this entry. vkDescriptorSet :: VkDescriptorSet } deriving (Eq, Show)@@ -1724,9 +1689,6 @@ -- | VkObjectTableVertexBufferEntryNVX - Parameters of an object table vertex -- buffer entry ----- = Description--- #_description#--- -- == Valid Usage -- -- - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX@@@ -1743,16 +1705,15 @@ -- - @buffer@ /must/ be a valid @VkBuffer@ handle -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX' data VkObjectTableVertexBufferEntryNVX = VkObjectTableVertexBufferEntryNVX- { -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "vkType"+ { -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "type" vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "vkFlags"+ , -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "flags" vkFlags :: VkObjectEntryUsageFlagsNVX- , -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "vkBuffer"+ , -- | @buffer@ specifies the @VkBuffer@ that can be bound as vertex bufer vkBuffer :: VkBuffer } deriving (Eq, Show)@@ -1769,9 +1730,6 @@ -- | VkObjectTableIndexBufferEntryNVX - Parameters of an object table index -- buffer entry ----- = Description--- #_description#--- -- == Valid Usage -- -- - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX@@@ -1791,19 +1749,18 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType', -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX' data VkObjectTableIndexBufferEntryNVX = VkObjectTableIndexBufferEntryNVX- { -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "vkType"+ { -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "type" vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "vkFlags"+ , -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "flags" vkFlags :: VkObjectEntryUsageFlagsNVX- , -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "vkBuffer"+ , -- | @buffer@ specifies the @VkBuffer@ that can be bound as index buffer vkBuffer :: VkBuffer- , -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "vkIndexType"+ , -- | @indexType@ specifies the @VkIndexType@ used with this index buffer vkIndexType :: VkIndexType } deriving (Eq, Show)@@ -1822,9 +1779,6 @@ -- | VkObjectTablePushConstantEntryNVX - Parameters of an object table push -- constant entry ----- = Description--- #_description#--- -- == Valid Usage -- -- - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX@@@ -1846,19 +1800,20 @@ -- - @stageFlags@ /must/ not be @0@ -- -- = See Also--- #_see_also# -- -- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX', -- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout', -- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags' data VkObjectTablePushConstantEntryNVX = VkObjectTablePushConstantEntryNVX- { -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "vkType"+ { -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "type" vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "vkFlags"+ , -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "flags" vkFlags :: VkObjectEntryUsageFlagsNVX- , -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "vkPipelineLayout"+ , -- | @pipelineLayout@ specifies the @VkPipelineLayout@ that the pushconstants+ -- are used with vkPipelineLayout :: VkPipelineLayout- , -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "vkStageFlags"+ , -- | @stageFlags@ specifies the @VkShaderStageFlags@ that the pushconstants+ -- are used with vkStageFlags :: VkShaderStageFlags } deriving (Eq, Show)@@ -1878,13 +1833,11 @@ -- VkIndirectCommandsLayoutUsageFlagBitsNVX -- -- = Description--- #_description# -- -- @VkIndirectCommandsLayoutUsageFlagsNVX@ is a bitmask type for setting a -- mask of zero or more 'VkIndirectCommandsLayoutUsageFlagBitsNVX'. -- -- = See Also--- #_see_also# -- -- 'VkIndirectCommandsLayoutCreateInfoNVX', -- 'VkIndirectCommandsLayoutUsageFlagBitsNVX'@@ -1892,13 +1845,11 @@ -- | VkObjectEntryUsageFlagsNVX - Bitmask of VkObjectEntryUsageFlagBitsNVX -- -- = Description--- #_description# -- -- @VkObjectEntryUsageFlagsNVX@ is a bitmask type for setting a mask of -- zero or more 'VkObjectEntryUsageFlagBitsNVX'. -- -- = See Also--- #_see_also# -- -- 'VkObjectEntryUsageFlagBitsNVX', 'VkObjectTableCreateInfoNVX', -- 'VkObjectTableDescriptorSetEntryNVX', 'VkObjectTableEntryNVX',
src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs view
@@ -38,10 +38,18 @@ -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX" pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = VkStructureType 1000097000--- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"+-- | @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@ specifies that+-- shaders compiled for this subpass write the attributes for all views in+-- a single invocation of each vertex processing stage. All pipelines+-- compiled against a subpass that includes this bit /must/ write per-view+-- attributes to the code:*PerViewNV[] shader outputs, in addition to the+-- non-per-view (e.g. @Position@) outputs. pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX :: VkSubpassDescriptionFlagBits pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = VkSubpassDescriptionFlagBits 0x00000001--- No documentation found for Nested "VkSubpassDescriptionFlagBits" "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"+-- | @VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX@ specifies that+-- shaders compiled for this subpass use per-view positions which only+-- differ in value in the x component. Per-view viewport mask /can/ also be+-- used. pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX :: VkSubpassDescriptionFlagBits pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = VkSubpassDescriptionFlagBits 0x00000002 -- No documentation found for TopLevel "VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"@@ -54,14 +62,12 @@ -- describing multiview limits that can be supported by an implementation -- -- = Members--- #_members# -- -- The members of the -- @VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX@ structure -- describe the following implementation-dependent limits: -- -- = Description--- #_description# -- -- - @perViewPositionAllComponents@ is @VK_TRUE@ if the implementation -- supports per-view position values that differ in components other@@ -78,15 +84,14 @@ -- it is filled with the implementation-dependent limits. -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX- { -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "vkSType"+ { -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "vkPNext"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "vkPerViewPositionAllComponents"+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "perViewPositionAllComponents" vkPerViewPositionAllComponents :: VkBool32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs view
@@ -50,7 +50,13 @@ ) --- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"+-- | @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@ specifies that the+-- @pViewportScalings@ state in+-- @VkPipelineViewportWScalingStateCreateInfoNV@ will be ignored and /must/+-- be set dynamically with 'vkCmdSetViewportWScalingNV' before any draws+-- are performed with a pipeline state with+-- @VkPipelineViewportWScalingStateCreateInfo@ member+-- @viewportScalingEnable@ set to @VK_TRUE@ pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: VkDynamicState pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = VkDynamicState 1000087000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"@@ -66,7 +72,6 @@ -- buffer -- -- = Parameters--- #_parameters# -- -- - @commandBuffer@ is the command buffer into which the command will be -- recorded.@@ -81,7 +86,6 @@ -- 'VkViewportWScalingNV' structures specifying viewport parameters. -- -- = Description--- #_description# -- -- The viewport parameters taken from element i of @pViewportWScalings@ -- replace the current state for the viewport index @firstViewport@ + i,@@ -107,8 +111,8 @@ -- - @pViewportWScalings@ /must/ be a valid pointer to an array of -- @viewportCount@ @VkViewportWScalingNV@ structures ----- - @commandBuffer@ /must/ be in the--- <#commandbuffers-lifecycle recording state>+-- - @commandBuffer@ /must/ be in the [recording+-- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle) -- -- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/ -- support graphics operations@@ -124,35 +128,31 @@ -- -- == Command Properties ----- > +-----------------+-----------------+-----------------+-----------------+--- > | <#VkCommandBuff | <#vkCmdBeginRen | <#VkQueueFlagBi | <#synchronizati |--- > | erLevel Command | derPass Render | ts Supported Qu | on-pipeline-sta |--- > | Buffer Levels> | Pass Scope> | eue Types> | ges-types Pipel |--- > | | | | ine Type> |--- > +=================+=================+=================+=================+--- > | Primary | Both | Graphics | |--- > | Secondary | | | |--- > +-----------------+-----------------+-----------------+-----------------++-- \' --+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |+-- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |+-- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkViewportWScalingNV' foreign import ccall "vkCmdSetViewportWScalingNV" vkCmdSetViewportWScalingNV :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO () -- | VkViewportWScalingNV - Structure specifying a viewport ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkPipelineViewportWScalingStateCreateInfoNV', -- 'vkCmdSetViewportWScalingNV' data VkViewportWScalingNV = VkViewportWScalingNV- { -- No documentation found for Nested "VkViewportWScalingNV" "vkXcoeff"+ { -- | @xcoeff@ and @ycoeff@ are the viewport’s W scaling factor for x and y+ -- respectively. vkXcoeff :: CFloat- , -- No documentation found for Nested "VkViewportWScalingNV" "vkYcoeff"+ , -- No documentation found for Nested "VkViewportWScalingNV" "ycoeff" vkYcoeff :: CFloat } deriving (Eq, Show)@@ -167,9 +167,6 @@ -- | VkPipelineViewportWScalingStateCreateInfoNV - Structure specifying -- parameters of a newly created pipeline viewport W scaling state ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -178,20 +175,25 @@ -- - @viewportCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType', -- 'VkViewportWScalingNV' data VkPipelineViewportWScalingStateCreateInfoNV = VkPipelineViewportWScalingStateCreateInfoNV- { -- No documentation found for Nested "VkPipelineViewportWScalingStateCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineViewportWScalingStateCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineViewportWScalingStateCreateInfoNV" "vkViewportWScalingEnable"+ , -- | @viewportWScalingEnable@ controls whether viewport __W__ scaling is+ -- enabled. vkViewportWScalingEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineViewportWScalingStateCreateInfoNV" "vkViewportCount"+ , -- | @viewportCount@ is the number of viewports used by __W__ scaling, and+ -- /must/ match the number of viewports in the pipeline if viewport __W__+ -- scaling is enabled. vkViewportCount :: Word32- , -- No documentation found for Nested "VkPipelineViewportWScalingStateCreateInfoNV" "vkPViewportWScalings"+ , -- | @pViewportWScalings@ is a pointer to an array of @VkViewportWScalingNV@+ -- structures, which define the __W__ scaling parameters for the+ -- corresponding viewport. If the viewport __W__ scaling state is dynamic,+ -- this member is ignored. vkPViewportWScalings :: Ptr VkViewportWScalingNV } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs view
@@ -57,7 +57,6 @@ -- to a dedicated memory resource -- -- = Description--- #_description# -- -- __Note__ --@@ -77,15 +76,15 @@ -- @VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDedicatedAllocationImageCreateInfoNV = VkDedicatedAllocationImageCreateInfoNV- { -- No documentation found for Nested "VkDedicatedAllocationImageCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDedicatedAllocationImageCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDedicatedAllocationImageCreateInfoNV" "vkDedicatedAllocation"+ , -- | @dedicatedAllocation@ specifies whether the image will have a dedicated+ -- allocation bound to it. vkDedicatedAllocation :: VkBool32 } deriving (Eq, Show)@@ -102,24 +101,21 @@ -- | VkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound -- to a dedicated memory resource ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be -- @VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDedicatedAllocationBufferCreateInfoNV = VkDedicatedAllocationBufferCreateInfoNV- { -- No documentation found for Nested "VkDedicatedAllocationBufferCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDedicatedAllocationBufferCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDedicatedAllocationBufferCreateInfoNV" "vkDedicatedAllocation"+ , -- | @dedicatedAllocation@ specifies whether the buffer will have a dedicated+ -- allocation bound to it. vkDedicatedAllocation :: VkBool32 } deriving (Eq, Show)@@ -136,9 +132,6 @@ -- | VkDedicatedAllocationMemoryAllocateInfoNV - Specify a dedicated memory -- allocation resource ----- = Description--- #_description#--- -- == Valid Usage -- -- - At least one of @image@ and @buffer@ /must/ be@@ -164,6 +157,18 @@ -- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the -- @VkMemoryRequirements@::@size@ of the buffer --+-- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+-- and 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a+-- memory import operation, the memory being imported /must/ also be a+-- dedicated image allocation and @image@ /must/ be identical to the+-- image associated with the imported memory.+--+-- - If @buffer@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+-- and 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a+-- memory import operation, the memory being imported /must/ also be a+-- dedicated buffer allocation and @buffer@ /must/ be identical to the+-- buffer associated with the imported memory.+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -180,19 +185,20 @@ -- been created, allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', -- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkDedicatedAllocationMemoryAllocateInfoNV = VkDedicatedAllocationMemoryAllocateInfoNV- { -- No documentation found for Nested "VkDedicatedAllocationMemoryAllocateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkDedicatedAllocationMemoryAllocateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDedicatedAllocationMemoryAllocateInfoNV" "vkImage"+ , -- | @image@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a handle+ -- of an image which this memory will be bound to. vkImage :: VkImage- , -- No documentation found for Nested "VkDedicatedAllocationMemoryAllocateInfoNV" "vkBuffer"+ , -- | @buffer@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a+ -- handle of a buffer which this memory will be bound to. vkBuffer :: VkBuffer } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs view
@@ -49,9 +49,6 @@ -- | VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed -- by external memory ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -62,16 +59,17 @@ -- values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExternalMemoryImageCreateInfoNV = VkExternalMemoryImageCreateInfoNV- { -- No documentation found for Nested "VkExternalMemoryImageCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalMemoryImageCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExternalMemoryImageCreateInfoNV" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'+ -- specifying one or more external memory handle types. vkHandleTypes :: VkExternalMemoryHandleTypeFlagsNV } deriving (Eq, Show)@@ -88,9 +86,6 @@ -- | VkExportMemoryAllocateInfoNV - Specify memory handle types that may be -- exported ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV@@@ -100,16 +95,20 @@ -- values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportMemoryAllocateInfoNV = VkExportMemoryAllocateInfoNV- { -- No documentation found for Nested "VkExportMemoryAllocateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportMemoryAllocateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportMemoryAllocateInfoNV" "vkHandleTypes"+ , -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'+ -- specifying one or more memory handle types that /may/ be exported.+ -- Multiple handle types /may/ be requested for the same allocation as long+ -- as they are compatible, as reported by+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV'. vkHandleTypes :: VkExternalMemoryHandleTypeFlagsNV } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs view
@@ -84,7 +84,6 @@ -- memory handle types -- -- = See Also--- #_see_also# -- -- 'VkExternalMemoryHandleTypeFlagsNV' newtype VkExternalMemoryHandleTypeFlagBitsNV = VkExternalMemoryHandleTypeFlagBitsNV VkFlags@@ -139,7 +138,6 @@ -- features -- -- = See Also--- #_see_also# -- -- 'VkExternalImageFormatPropertiesNV', 'VkExternalMemoryFeatureFlagsNV', -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'@@ -189,7 +187,6 @@ -- capabilities compatible with external memory handle types -- -- = Parameters--- #_parameters# -- -- - @physicalDevice@ is the physical device from which to query the -- image capabilities@@ -218,7 +215,6 @@ -- are returned. -- -- = Description--- #_description# -- -- If @externalHandleType@ is 0, -- @pExternalImageFormatProperties@::imageFormatProperties will return the@@ -259,10 +255,10 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@@@ -270,7 +266,6 @@ -- - @VK_ERROR_FORMAT_NOT_SUPPORTED@ -- -- = See Also--- #_see_also# -- -- 'VkExternalImageFormatPropertiesNV', -- 'VkExternalMemoryHandleTypeFlagsNV',@@ -284,23 +279,39 @@ -- | VkExternalImageFormatPropertiesNV - Structure specifying external image -- format properties ----- = Description--- #_description#--- -- = See Also--- #_see_also# -- -- 'VkExternalMemoryFeatureFlagsNV', 'VkExternalMemoryHandleTypeFlagsNV', -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageFormatProperties', -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV' data VkExternalImageFormatPropertiesNV = VkExternalImageFormatPropertiesNV- { -- No documentation found for Nested "VkExternalImageFormatPropertiesNV" "vkImageFormatProperties"+ { -- | @imageFormatProperties@ will be filled in as when calling+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',+ -- but the values returned /may/ vary depending on the external handle type+ -- requested. vkImageFormatProperties :: VkImageFormatProperties- , -- No documentation found for Nested "VkExternalImageFormatPropertiesNV" "vkExternalMemoryFeatures"+ , -- | @externalMemoryFeatures@ is a bitmask of+ -- 'VkExternalMemoryFeatureFlagBitsNV', indicating properties of the+ -- external memory handle type+ -- ('vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@)+ -- being queried, or 0 if the external memory handle type is 0. vkExternalMemoryFeatures :: VkExternalMemoryFeatureFlagsNV- , -- No documentation found for Nested "VkExternalImageFormatPropertiesNV" "vkExportFromImportedHandleTypes"+ , -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'VkExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every+ -- external handle type that /may/ be used to create memory from which the+ -- handles of the type specified in+ -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@+ -- /can/ be exported, or 0 if the external memory handle type is 0. vkExportFromImportedHandleTypes :: VkExternalMemoryHandleTypeFlagsNV- , -- No documentation found for Nested "VkExternalImageFormatPropertiesNV" "vkCompatibleHandleTypes"+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'VkExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every+ -- external handle type that /may/ be specified simultaneously with the+ -- handle type specified by+ -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@+ -- when calling 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory', or 0 if+ -- the external memory handle type is 0. @compatibleHandleTypes@ will+ -- always contain+ -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@ vkCompatibleHandleTypes :: VkExternalMemoryHandleTypeFlagsNV } deriving (Eq, Show)@@ -320,13 +331,11 @@ -- VkExternalMemoryHandleTypeFlagBitsNV -- -- = Description--- #_description# -- -- @VkExternalMemoryHandleTypeFlagsNV@ is a bitmask type for setting a mask -- of zero or more 'VkExternalMemoryHandleTypeFlagBitsNV'. -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV', -- 'VkExternalImageFormatPropertiesNV',@@ -340,13 +349,11 @@ -- VkExternalMemoryFeatureFlagBitsNV -- -- = Description--- #_description# -- -- @VkExternalMemoryFeatureFlagsNV@ is a bitmask type for setting a mask of -- zero or more 'VkExternalMemoryFeatureFlagBitsNV'. -- -- = See Also--- #_see_also# -- -- 'VkExternalImageFormatPropertiesNV', 'VkExternalMemoryFeatureFlagBitsNV' type VkExternalMemoryFeatureFlagsNV = VkExternalMemoryFeatureFlagBitsNV
src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs view
@@ -76,7 +76,6 @@ -- object -- -- = Parameters--- #_parameters# -- -- - @device@ is the logical device that owns the memory. --@@ -89,9 +88,6 @@ -- - @handle@ points to a Windows @HANDLE@ in which the handle is -- returned. ----- = Description--- #_description#--- -- == Valid Usage -- -- - @handleType@ /must/ be a flag specified in@@ -117,16 +113,15 @@ -- -- == Return Codes ----- [<#fundamentals-successcodes Success>]+-- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)] -- - @VK_SUCCESS@ ----- [<#fundamentals-errorcodes Failure>]+-- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)] -- - @VK_ERROR_TOO_MANY_OBJECTS@ -- -- - @VK_ERROR_OUT_OF_HOST_MEMORY@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',@@ -136,7 +131,6 @@ -- same physical device -- -- = Description--- #_description# -- -- If @handleType@ is @0@, this structure is ignored by consumers of the -- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' structure it is@@ -159,18 +153,19 @@ -- values -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkImportMemoryWin32HandleInfoNV = VkImportMemoryWin32HandleInfoNV- { -- No documentation found for Nested "VkImportMemoryWin32HandleInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoNV" "vkHandleType"+ , -- | @handleType@ is @0@ or a+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'+ -- value specifying the type of memory handle in @handle@. vkHandleType :: VkExternalMemoryHandleTypeFlagsNV- , -- No documentation found for Nested "VkImportMemoryWin32HandleInfoNV" "vkHandle"+ , -- | @handle@ is a Windows @HANDLE@ referring to the memory. vkHandle :: HANDLE } deriving (Eq, Show)@@ -190,7 +185,6 @@ -- rights for Win32 memory handles -- -- = Description--- #_description# -- -- If this structure is not present, or if @pAttributes@ is set to @NULL@, -- default security descriptor values will be used, and child processes@@ -213,17 +207,17 @@ -- pointer to a valid @SECURITY_ATTRIBUTES@ value -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkExportMemoryWin32HandleInfoNV = VkExportMemoryWin32HandleInfoNV- { -- No documentation found for Nested "VkExportMemoryWin32HandleInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoNV" "vkPAttributes"+ , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure+ -- specifying security attributes of the handle. vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- No documentation found for Nested "VkExportMemoryWin32HandleInfoNV" "vkDwAccess"+ , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle. vkDwAccess :: DWORD } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs view
@@ -61,13 +61,11 @@ -- | VkPipelineCoverageToColorStateCreateFlagsNV - Reserved for future use -- -- = Description--- #_description# -- -- @VkPipelineCoverageToColorStateCreateFlagsNV@ is a bitmask type for -- setting a mask, but is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineCoverageToColorStateCreateInfoNV' newtype VkPipelineCoverageToColorStateCreateFlagsNV = VkPipelineCoverageToColorStateCreateFlagsNV VkFlags@@ -101,22 +99,24 @@ -- whether fragment coverage replaces a color -- -- = Description--- #_description# -- -- If @coverageToColorEnable@ is @VK_TRUE@, the fragment coverage -- information is treated as a bitmask with one bit for each sample (as in--- the <{html_spec_relative}#fragops-samplemask Sample Mask> section), and--- this bitmask replaces the first component of the color value--- corresponding to the fragment shader output location with @Location@--- equal to @coverageToColorLocation@ and @Index@ equal to zero. If the--- color attachment format has fewer bits than the sample coverage, the low--- bits of the sample coverage bitmask are taken without any clamping. If--- the color attachment format has more bits than the sample coverage, the--- high bits of the sample coverage bitmask are filled with zeros.+-- the [Sample+-- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-samplemask)+-- section), and this bitmask replaces the first component of the color+-- value corresponding to the fragment shader output location with+-- @Location@ equal to @coverageToColorLocation@ and @Index@ equal to zero.+-- If the color attachment format has fewer bits than the sample coverage,+-- the low bits of the sample coverage bitmask are taken without any+-- clamping. If the color attachment format has more bits than the sample+-- coverage, the high bits of the sample coverage bitmask are filled with+-- zeros. ----- If <{html_spec_relative}#primsrast-sampleshading Sample Shading> is in--- use, the coverage bitmask only has bits set for samples that correspond--- to the fragment shader invocation that shades those samples.+-- If [Sample+-- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading)+-- is in use, the coverage bitmask only has bits set for samples that+-- correspond to the fragment shader invocation that shades those samples. -- -- This pipeline stage occurs after sample counting and before blending, -- and is always performed after fragment shading regardless of the setting@@ -147,20 +147,21 @@ -- - @flags@ /must/ be @0@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'VkPipelineCoverageToColorStateCreateFlagsNV', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineCoverageToColorStateCreateInfoNV = VkPipelineCoverageToColorStateCreateInfoNV- { -- No documentation found for Nested "VkPipelineCoverageToColorStateCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineCoverageToColorStateCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineCoverageToColorStateCreateInfoNV" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkPipelineCoverageToColorStateCreateFlagsNV- , -- No documentation found for Nested "VkPipelineCoverageToColorStateCreateInfoNV" "vkCoverageToColorEnable"+ , -- | @coverageToColorEnable@ controls whether the fragment coverage value+ -- replaces a fragment color output. vkCoverageToColorEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineCoverageToColorStateCreateInfoNV" "vkCoverageToColorLocation"+ , -- | @coverageToColorLocation@ controls which fragment shader color output+ -- value is replaced. vkCoverageToColorLocation :: Word32 } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs view
@@ -72,7 +72,6 @@ -- | VkCoverageModulationModeNV - Specify the discard rectangle mode -- -- = See Also--- #_see_also# -- -- 'VkPipelineCoverageModulationStateCreateInfoNV' newtype VkCoverageModulationModeNV = VkCoverageModulationModeNV Int32@@ -122,13 +121,11 @@ -- | VkPipelineCoverageModulationStateCreateFlagsNV - Reserved for future use -- -- = Description--- #_description# -- -- @VkPipelineCoverageModulationStateCreateFlagsNV@ is a bitmask type for -- setting a mask, but is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineCoverageModulationStateCreateInfoNV' newtype VkPipelineCoverageModulationStateCreateFlagsNV = VkPipelineCoverageModulationStateCreateFlagsNV VkFlags@@ -162,7 +159,6 @@ -- parameters controlling coverage modulation -- -- = Description--- #_description# -- -- If @coverageModulationTableEnable@ is @VK_FALSE@, then for each color -- sample the associated bits of the fragment’s coverage are counted and@@ -220,25 +216,28 @@ -- - @coverageModulationTableCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- @VkBool32@, 'VkCoverageModulationModeNV', -- 'VkPipelineCoverageModulationStateCreateFlagsNV', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkPipelineCoverageModulationStateCreateInfoNV = VkPipelineCoverageModulationStateCreateInfoNV- { -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkPipelineCoverageModulationStateCreateFlagsNV- , -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkCoverageModulationMode"+ , -- | @coverageModulationMode@ controls which color components are modulated+ -- and is of type 'VkCoverageModulationModeNV'. vkCoverageModulationMode :: VkCoverageModulationModeNV- , -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkCoverageModulationTableEnable"+ , -- | @coverageModulationTableEnable@ controls whether the modulation factor+ -- is looked up from a table in @pCoverageModulationTable@. vkCoverageModulationTableEnable :: VkBool32- , -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkCoverageModulationTableCount"+ , -- | @coverageModulationTableCount@ is the number of elements in+ -- @pCoverageModulationTable@. vkCoverageModulationTableCount :: Word32- , -- No documentation found for Nested "VkPipelineCoverageModulationStateCreateInfoNV" "vkPCoverageModulationTable"+ , -- | @pCoverageModulationTable@ is a table of modulation factors containing a+ -- value for each number of covered samples. vkPCoverageModulationTable :: Ptr CFloat } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs view
@@ -19,7 +19,9 @@ ) --- No documentation found for Nested "VkSubgroupFeatureFlagBits" "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"+-- | @VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV@ specifies the device will+-- accept SPIR-V shader modules that contain the+-- @GroupNonUniformPartitionedNV@ capability. pattern VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV :: VkSubgroupFeatureFlagBits pattern VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = VkSubgroupFeatureFlagBits 0x00000100 -- No documentation found for TopLevel "VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"
src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs view
@@ -74,13 +74,11 @@ -- swizzled -- -- = Description--- #_description# ----- These values are described in detail in--- <{html_spec_relative}#vertexpostproc-viewport-swizzle Viewport Swizzle>.+-- These values are described in detail in [Viewport+-- Swizzle](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-viewport-swizzle). -- -- = See Also--- #_see_also# -- -- 'VkViewportSwizzleNV' newtype VkViewportCoordinateSwizzleNV = VkViewportCoordinateSwizzleNV Int32@@ -150,13 +148,11 @@ -- | VkPipelineViewportSwizzleStateCreateFlagsNV - Reserved for future use -- -- = Description--- #_description# -- -- @VkPipelineViewportSwizzleStateCreateFlagsNV@ is a bitmask type for -- setting a mask, but is currently reserved for future use. -- -- = See Also--- #_see_also# -- -- 'VkPipelineViewportSwizzleStateCreateInfoNV' newtype VkPipelineViewportSwizzleStateCreateFlagsNV = VkPipelineViewportSwizzleStateCreateFlagsNV VkFlags@@ -188,9 +184,6 @@ pattern VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" -- | VkViewportSwizzleNV - Structure specifying a viewport swizzle ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @x@ /must/ be a valid 'VkViewportCoordinateSwizzleNV' value@@ -202,18 +195,21 @@ -- - @w@ /must/ be a valid 'VkViewportCoordinateSwizzleNV' value -- -- = See Also--- #_see_also# -- -- 'VkPipelineViewportSwizzleStateCreateInfoNV', -- 'VkViewportCoordinateSwizzleNV' data VkViewportSwizzleNV = VkViewportSwizzleNV- { -- No documentation found for Nested "VkViewportSwizzleNV" "vkX"+ { -- | @x@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle+ -- operation to apply to the x component of the primitive vkX :: VkViewportCoordinateSwizzleNV- , -- No documentation found for Nested "VkViewportSwizzleNV" "vkY"+ , -- | @y@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle+ -- operation to apply to the y component of the primitive vkY :: VkViewportCoordinateSwizzleNV- , -- No documentation found for Nested "VkViewportSwizzleNV" "vkZ"+ , -- | @z@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle+ -- operation to apply to the z component of the primitive vkZ :: VkViewportCoordinateSwizzleNV- , -- No documentation found for Nested "VkViewportSwizzleNV" "vkW"+ , -- | @w@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle+ -- operation to apply to the w component of the primitive vkW :: VkViewportCoordinateSwizzleNV } deriving (Eq, Show)@@ -232,9 +228,6 @@ -- | VkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying -- swizzle applied to primitive clip coordinates ----- = Description--- #_description#--- -- == Valid Usage -- -- - @viewportCount@ /must/ match the @viewportCount@ set in@@ -250,20 +243,20 @@ -- - @viewportCount@ /must/ be greater than @0@ -- -- = See Also--- #_see_also# -- -- 'VkPipelineViewportSwizzleStateCreateFlagsNV', -- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkViewportSwizzleNV' data VkPipelineViewportSwizzleStateCreateInfoNV = VkPipelineViewportSwizzleStateCreateInfoNV- { -- No documentation found for Nested "VkPipelineViewportSwizzleStateCreateInfoNV" "vkSType"+ { -- | @sType@ is the type of this structure. vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineViewportSwizzleStateCreateInfoNV" "vkPNext"+ , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineViewportSwizzleStateCreateInfoNV" "vkFlags"+ , -- | @flags@ is reserved for future use. vkFlags :: VkPipelineViewportSwizzleStateCreateFlagsNV- , -- No documentation found for Nested "VkPipelineViewportSwizzleStateCreateInfoNV" "vkViewportCount"+ , -- | @viewportCount@ is the number of viewport swizzles used by the pipeline. vkViewportCount :: Word32- , -- No documentation found for Nested "VkPipelineViewportSwizzleStateCreateInfoNV" "vkPViewportSwizzles"+ , -- | @pViewportSwizzles@ is a pointer to an array of 'VkViewportSwizzleNV'+ -- structures, defining the viewport swizzles. vkPViewportSwizzles :: Ptr VkViewportSwizzleNV } deriving (Eq, Show)
src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs view
@@ -48,9 +48,6 @@ -- | VkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex -- mechanism to synchronize work ----- = Description--- #_description#--- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be@@ -76,28 +73,38 @@ -- allocated, or retrieved from the same @VkDevice@ -- -- = See Also--- #_see_also# -- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', -- 'Graphics.Vulkan.Core10.Core.VkStructureType' data VkWin32KeyedMutexAcquireReleaseInfoNV = VkWin32KeyedMutexAcquireReleaseInfoNV- { -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkSType"+ { -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "sType" vkSType :: VkStructureType- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkPNext"+ , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "pNext" vkPNext :: Ptr ()- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkAcquireCount"+ , -- | @acquireCount@ is the number of entries in the @pAcquireSyncs@,+ -- @pAcquireKeys@, and @pAcquireTimeoutMilliseconds@ arrays. vkAcquireCount :: Word32- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkPAcquireSyncs"+ , -- | @pAcquireSyncs@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were+ -- imported from Direct3D 11 resources. vkPAcquireSyncs :: Ptr VkDeviceMemory- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkPAcquireKeys"+ , -- | @pAcquireKeys@ is a pointer to an array of mutex key values to wait for+ -- prior to beginning the submitted work. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pAcquireSyncs@. vkPAcquireKeys :: Ptr Word64- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkPAcquireTimeoutMilliseconds"+ , -- | @pAcquireTimeoutMilliseconds@ is an array of timeout values, in+ -- millisecond units, for each acquire specified in @pAcquireKeys@. vkPAcquireTimeoutMilliseconds :: Ptr Word32- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkReleaseCount"+ , -- | @releaseCount@ is the number of entries in the @pReleaseSyncs@ and+ -- @pReleaseKeys@ arrays. vkReleaseCount :: Word32- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkPReleaseSyncs"+ , -- | @pReleaseSyncs@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were+ -- imported from Direct3D 11 resources. vkPReleaseSyncs :: Ptr VkDeviceMemory- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "vkPReleaseKeys"+ , -- | @pReleaseKeys@ is a pointer to an array of mutex key values to set when+ -- the submitted work has completed. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pReleaseSyncs@. vkPReleaseKeys :: Ptr Word64 } deriving (Eq, Show)
vulkan.cabal view
@@ -1,5 +1,8 @@+-- This file is generated by the 'generate' program in Write.Cabal+-- Any changes made here will be overwritten when 'generate' is run+-- again. name: vulkan-version: 2.0.0.0+version: 2.0.0.1 synopsis: Bindings to the Vulkan graphics API. description: Please see readme.md homepage: http://github.com/expipiplus1/vulkan#readme@@ -57,7 +60,10 @@ library hs-source-dirs: src- ghc-options: -Wall+ -- We need to use cpphs, as regular cpp ruins latex math with lines+ -- ending in backslashes+ ghc-options: -Wall -pgmPcpphs -optP--cpp+ build-depends: cpphs exposed-modules: Graphics.Vulkan.NamedType , Graphics.Vulkan.Core10.Core , Graphics.Vulkan.Core10.Version@@ -219,27 +225,27 @@ cpp-options: -DVK_USE_PLATFORM_ANDROID_KHR exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_android_surface , Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer-+ if flag(ios) cpp-options: -DVK_USE_PLATFORM_IOS_MVK exposed-modules: Graphics.Vulkan.Extensions.VK_MVK_ios_surface-+ if flag(macos) cpp-options: -DVK_USE_PLATFORM_MACOS_MVK exposed-modules: Graphics.Vulkan.Extensions.VK_MVK_macos_surface-+ if flag(mir) cpp-options: -DVK_USE_PLATFORM_MIR_KHR exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_mir_surface-+ if flag(vi) cpp-options: -DVK_USE_PLATFORM_VI_NN exposed-modules: Graphics.Vulkan.Extensions.VK_NN_vi_surface-+ if flag(wayland) cpp-options: -DVK_USE_PLATFORM_WAYLAND_KHR exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_wayland_surface-+ if flag(win32) cpp-options: -DVK_USE_PLATFORM_WIN32_KHR exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_win32_surface@@ -249,19 +255,19 @@ , Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex , Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 , Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32-+ if flag(xcb) cpp-options: -DVK_USE_PLATFORM_XCB_KHR exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_xcb_surface-+ if flag(xlib) cpp-options: -DVK_USE_PLATFORM_XLIB_KHR exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_xlib_surface-+ if flag(xlib_xrandr) cpp-options: -DVK_USE_PLATFORM_XLIB_XRANDR_EXT exposed-modules: Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display-+ build-depends: base >= 4.9 && < 5 , vector-sized >= 0.1 && < 1.1