packages feed

vulkan 3.11.1 → 3.11.2

raw patch · 25 files changed

+994/−186 lines, 25 files

Files

changelog.md view
@@ -2,6 +2,9 @@  ## WIP +## [3.11.2] - 2021-07-07+- Bump API version to v1.2.184+ ## [3.11.1] - 2021-06-28 - Bump API version to v1.2.183 
package.yaml view
@@ -1,5 +1,5 @@ name: vulkan-version: "3.11.1"+version: "3.11.2" synopsis: Bindings to the Vulkan graphics API. description: Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category: Graphics
src/Vulkan/CStruct/Extends.hs view
@@ -314,6 +314,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (MemoryGetRemoteAddressInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA) import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (MemoryHeap)@@ -382,6 +383,7 @@ import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo) import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)@@ -503,6 +505,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR) import {-# SOURCE #-} Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)+import {-# SOURCE #-} Vulkan.Core10.OtherTypes (PipelineCacheHeaderVersionOne) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT) import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineColorBlendAttachmentState) import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineColorBlendStateCreateInfo)@@ -901,6 +904,7 @@   Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = ()   Extends DeviceCreateInfo PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()+  Extends DeviceCreateInfo PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceColorWriteEnableFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceSynchronization2FeaturesKHR = ()   Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()@@ -1045,6 +1049,7 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceColorWriteEnableFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2FeaturesKHR = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()@@ -1558,6 +1563,7 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE -> go @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE   STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE -> go @MutableDescriptorTypeCreateInfoVALVE   STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT -> go @PhysicalDeviceVertexInputDynamicStateFeaturesEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV -> go @PhysicalDeviceExternalMemoryRDMAFeaturesNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT -> go @PhysicalDeviceColorWriteEnableFeaturesEXT   STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT -> go @PipelineColorWriteCreateInfoEXT   STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR -> go @MemoryBarrier2KHR@@ -1900,6 +1906,7 @@ {-# complete (::&) :: PhysicalDeviceMutableDescriptorTypeFeaturesVALVE #-} {-# complete (::&) :: MutableDescriptorTypeCreateInfoVALVE #-} {-# complete (::&) :: PhysicalDeviceVertexInputDynamicStateFeaturesEXT #-}+{-# complete (::&) :: PhysicalDeviceExternalMemoryRDMAFeaturesNV #-} {-# complete (::&) :: PhysicalDeviceColorWriteEnableFeaturesEXT #-} {-# complete (::&) :: PipelineColorWriteCreateInfoEXT #-} {-# complete (::&) :: MemoryBarrier2KHR #-}
src/Vulkan/Core10/Device.hs view
@@ -112,6 +112,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV) import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2FeaturesEXT)@@ -739,6 +740,7 @@ --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',+--     'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV', --     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', --     'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT', --     'Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',@@ -892,6 +894,7 @@     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2FeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f+    | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryRDMAFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = Just f
src/Vulkan/Core10/DeviceInitialization.hs view
@@ -1853,6 +1853,10 @@ --     | --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD' --+-- -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+--     |+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV'+-- -- There /must/ be at least one memory type with both the -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT' -- and
src/Vulkan/Core10/Enums/ImageViewType.hs view
@@ -21,16 +21,6 @@  -- | VkImageViewType - Image view types ----- = 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--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibility image view compatibility table>--- for 'Vulkan.Core10.ImageView.createImageView'. This table also shows--- which SPIR-V @OpTypeImage@ @Dim@ and @Arrayed@ parameters correspond to--- each image view type.--- -- = See Also -- -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs view
@@ -6,6 +6,7 @@                                                                            , MEMORY_PROPERTY_HOST_COHERENT_BIT                                                                            , MEMORY_PROPERTY_HOST_CACHED_BIT                                                                            , MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT+                                                                           , MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV                                                                            , MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD                                                                            , MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD                                                                            , MEMORY_PROPERTY_PROTECTED_BIT@@ -86,6 +87,9 @@ -- specified in -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-lazy_allocation Lazily Allocated Memory>. pattern MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT    = MemoryPropertyFlagBits 0x00000010+-- | 'MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV' bit specifies that external+-- devices can access this memory directly.+pattern MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV     = MemoryPropertyFlagBits 0x00000100 -- | 'MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD' bit specifies that memory -- allocated with this type is not cached on the device. Uncached device -- memory is always device coherent.@@ -116,6 +120,7 @@   , (MEMORY_PROPERTY_HOST_COHERENT_BIT      , "HOST_COHERENT_BIT")   , (MEMORY_PROPERTY_HOST_CACHED_BIT        , "HOST_CACHED_BIT")   , (MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT   , "LAZILY_ALLOCATED_BIT")+  , (MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV    , "RDMA_CAPABLE_BIT_NV")   , (MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD, "DEVICE_UNCACHED_BIT_AMD")   , (MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD, "DEVICE_COHERENT_BIT_AMD")   , (MEMORY_PROPERTY_PROTECTED_BIT          , "PROTECTED_BIT")
src/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs view
@@ -17,6 +17,7 @@ -- -- = See Also --+-- 'Vulkan.Core10.OtherTypes.PipelineCacheHeaderVersionOne', -- 'Vulkan.Core10.PipelineCache.createPipelineCache', -- 'Vulkan.Core10.PipelineCache.getPipelineCacheData' newtype PipelineCacheHeaderVersion = PipelineCacheHeaderVersion Int32
src/Vulkan/Core10/Enums/StructureType.hs view
@@ -57,6 +57,8 @@                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT                                                         , STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV+                                                        , STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV                                                         , STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA                                                         , STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA                                                         , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA@@ -744,6 +746,7 @@ -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryFdPropertiesKHR', -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID', -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV', -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR', -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA', -- 'Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',@@ -802,6 +805,7 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo', -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV', -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo', -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',@@ -1209,6 +1213,10 @@ pattern STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX            = StructureType 1000378000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = StructureType 1000377000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = StructureType 1000371001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV"+pattern STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV         = StructureType 1000371000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA" pattern STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000365001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA"@@ -2182,6 +2190,8 @@              STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,              STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX,              STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV,+             STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV,              STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA,              STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA,              STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,@@ -2710,6 +2720,10 @@   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT     , "PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT"     )+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV+    , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV"+    )+  , (STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV          , "MEMORY_GET_REMOTE_ADDRESS_INFO_NV")   , (STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA   , "SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA")   , (STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA, "IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA")   , (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA      , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
src/Vulkan/Core10/FundamentalTypes.hs view
@@ -201,8 +201,8 @@ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>, -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoSessionCreateInfoKHR VkVideoSessionCreateInfoKHR>, -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR',--- 'Vulkan.Core10.Pass.getRenderAreaGranularity',--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSubpassShadingMaxWorkgroupSizeHUAWEI vkGetSubpassShadingMaxWorkgroupSizeHUAWEI>+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI>,+-- 'Vulkan.Core10.Pass.getRenderAreaGranularity' data Extent2D = Extent2D   { -- | @width@ is the width of the extent.     width :: Word32@@ -436,6 +436,7 @@ -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT', -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.PhysicalDeviceExternalMemoryRDMAFeaturesNV', -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures', -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties', -- 'Vulkan.Extensions.VK_EXT_fragment_density_map2.PhysicalDeviceFragmentDensityMap2FeaturesEXT',
src/Vulkan/Core10/Handles.hs view
@@ -348,6 +348,7 @@ -- 'Vulkan.Core10.DeviceInitialization.getDeviceProcAddr', -- 'Vulkan.Core10.Queue.getDeviceQueue', -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.getDeviceQueue2',+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI>, -- 'Vulkan.Core10.Event.getEventStatus', -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.getFenceFdKHR', -- 'Vulkan.Core10.Fence.getFenceStatus',@@ -367,6 +368,7 @@ -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR', -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR', -- 'Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.getMemoryRemoteAddressNV', -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandleKHR', -- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV', -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR',@@ -666,6 +668,7 @@ -- 'Vulkan.Core10.Memory.MappedMemoryRange', -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID', -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV', -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR', -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA', -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',@@ -1144,8 +1147,8 @@ -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2', -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR', -- 'Vulkan.Core10.Pass.destroyRenderPass',--- 'Vulkan.Core10.Pass.getRenderAreaGranularity',--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetSubpassShadingMaxWorkgroupSizeHUAWEI vkGetSubpassShadingMaxWorkgroupSizeHUAWEI>+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI>,+-- 'Vulkan.Core10.Pass.getRenderAreaGranularity' newtype RenderPass = RenderPass Word64   deriving newtype (Eq, Ord, Storable, Zero)   deriving anyclass (IsHandle)
src/Vulkan/Core10/ImageView.hs view
@@ -638,119 +638,34 @@ -- 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@, and @levelCount@ are members   |--- |          | @width@ = ci.@extent.width@                                                    | of the @subresourceRange@ member.                              |--- |          | @height@ = ci.@extent.height@                                                  |                                                                |--- |          | @depth@ = ci.@extent.depth@                                                    |                                                                |--- |          | @arrayLayers@ = ci.@arrayLayers@                                               |                                                                |--- |          | @samples@ = ci.@samples@                                                       |                                                                |--- |          | @flags@ = ci.@flags@                                                           |                                                                |--- |          | where ci is the 'Vulkan.Core10.Image.ImageCreateInfo' used to create @image@.  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __1D, 0, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D'         |--- |          | @height@ = 1                                                                   | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ = 1                                               |--- |          | @arrayLayers@ ≥ 1                                                              |                                                                |--- |          | @samples@ = 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __1D, 1, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY'   |--- |          | @height@ = 1                                                                   | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ ≥ 1                                               |--- |          | @arrayLayers@ ≥ 1                                                              |                                                                |--- |          | @samples@ = 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __2D, 0, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'         |--- |          | @height@ ≥ 1                                                                   | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ = 1                                               |--- |          | @arrayLayers@ ≥ 1                                                              |                                                                |--- |          | @samples@ = 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __2D, 1, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'   |--- |          | @height@ ≥ 1                                                                   | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ ≥ 1                                               |--- |          | @arrayLayers@ ≥ 1                                                              |                                                                |--- |          | @samples@ = 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __2D, 0, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                    | @viewType@ =                                                   |--- | 1__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'         |--- |          | @height@ ≥ 1                                                                   | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ = 1                                               |--- |          | @arrayLayers@ ≥ 1                                                              |                                                                |--- |          | @samples@ > 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __2D, 1, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                    | @viewType@ =                                                   |--- | 1__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'   |--- |          | @height@ ≥ 1                                                                   | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ ≥ 1                                               |--- |          | @arrayLayers@ ≥ 1                                                              |                                                                |--- |          | @samples@ > 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __CUBE,  | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                    | @viewType@ =                                                   |--- | 0, 0__   | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE'       |--- |          | @height@ = @width@                                                             | @baseArrayLayer@ ≥ 0                                           |--- |          | @depth@ = 1                                                                    | @layerCount@ = 6                                               |--- |          | @arrayLayers@ ≥ 6                                                              |                                                                |--- |          | @samples@ = 1                                                                  |                                                                |--- |          | @flags@ includes                                                               |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'     |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __CUBE,  | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'                    | @viewType@ =                                                   |--- | 1, 0__   | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.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                                                               |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'     |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __3D, 0, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D'         |--- |          | @height@ ≥ 1                                                                   | @baseArrayLayer@ = 0                                           |--- |          | @depth@ ≥ 1                                                                    | @layerCount@ = 1                                               |--- |          | @arrayLayers@ = 1                                                              |                                                                |--- |          | @samples@ = 1                                                                  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __3D, 0, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'         |--- |          | @height@ ≥ 1                                                                   | @levelCount@ = 1                                               |--- |          | @depth@ ≥ 1                                                                    | @baseArrayLayer@ ≥ 0                                           |--- |          | @arrayLayers@ = 1                                                              | @layerCount@ = 1                                               |--- |          | @samples@ = 1                                                                  |                                                                |--- |          | @flags@ includes                                                               |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' |                                                                |--- |          | @flags@ does not include                                                       |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',     |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',   |                                                                |--- |          | and 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------+--- | __3D, 0, | @imageType@ = 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'                    | @viewType@ =                                                   |--- | 0__      | @width@ ≥ 1                                                                    | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'   |--- |          | @height@ ≥ 1                                                                   | @levelCount@ = 1                                               |--- |          | @depth@ ≥ 1                                                                    | @baseArrayLayer@ ≥ 0                                           |--- |          | @arrayLayers@ = 1                                                              | @layerCount@ ≥ 1                                               |--- |          | @samples@ = 1                                                                  |                                                                |--- |          | @flags@ includes                                                               |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' |                                                                |--- |          | @flags@ does not include                                                       |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',     |                                                                |--- |          | 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',   |                                                                |--- |          | and 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'  |                                                                |--- +----------+--------------------------------------------------------------------------------+----------------------------------------------------------------++-- +----------------------------------------------------------------+-----------------------------------------------++-- | Image View Type                                                | Compatible Image Types                        |+-- +================================================================+===============================================++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D'         | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' |+-- +----------------------------------------------------------------+-----------------------------------------------++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY'   | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' |+-- +----------------------------------------------------------------+-----------------------------------------------++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'         | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' |+-- |                                                                | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' |+-- +----------------------------------------------------------------+-----------------------------------------------++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'   | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' |+-- |                                                                | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' |+-- +----------------------------------------------------------------+-----------------------------------------------++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE'       | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' |+-- +----------------------------------------------------------------+-----------------------------------------------++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' |+-- +----------------------------------------------------------------+-----------------------------------------------++-- | 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D'         | 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' |+-- +----------------------------------------------------------------+-----------------------------------------------+ ----- Image and image view parameter compatibility requirements+-- Image type and image view type compatibility requirements -- -- == Valid Usage --+-- -   #VUID-VkImageViewCreateInfo-imageViewType-04969# @imageViewType@+--     /must/ be compatible with the type of @image@ as shown in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibility view type compatibility table>+-- -- -   #VUID-VkImageViewCreateInfo-image-01003# If @image@ was not created --     with --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'@@ -770,6 +685,29 @@ --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' --+-- -   #VUID-VkImageViewCreateInfo-image-04970# If @image@ was created with+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and @imageViewType@ is+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' then+--     @subresourceRange.levelCount@ /must/ be 1+--+-- -   #VUID-VkImageViewCreateInfo-image-04971# If @image@ was created with+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and @imageViewType@ is+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' then+--     @flags@ /must/ not contain any of+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',+--     and+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'+--+-- -   #VUID-VkImageViewCreateInfo-image-04972# If @image@ was created with+--     a @samples@ value not equal to+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' then+--     @imageViewType@ /must/ be either+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- -- -   #VUID-VkImageViewCreateInfo-image-04441# @image@ /must/ have been --     created with a @usage@ value containing at least one of the usages --     defined in the@@ -1102,6 +1040,22 @@ --     structure /must/ not include any bits that were not set in the --     @usage@ member of the 'Vulkan.Core10.Image.ImageCreateInfo' --     structure used to create @image@+--+-- -   #VUID-VkImageViewCreateInfo-imageViewType-04973# If @imageViewType@+--     is 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D', or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D'; and+--     @subresourceRange.layerCount@ is not+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then+--     @subresourceRange.layerCount@ /must/ be 1+--+-- -   #VUID-VkImageViewCreateInfo-imageViewType-04974# If @imageViewType@+--     is 'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D',+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D', or+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D'; and+--     @subresourceRange.layerCount@ is+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then the+--     remaining number of layers /must/ be 1 -- -- -   #VUID-VkImageViewCreateInfo-viewType-02960# If @viewType@ is --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' and
src/Vulkan/Core10/OtherTypes.hs view
@@ -3,6 +3,7 @@ module Vulkan.Core10.OtherTypes  ( MemoryBarrier(..)                                  , BufferMemoryBarrier(..)                                  , ImageMemoryBarrier(..)+                                 , PipelineCacheHeaderVersionOne(..)                                  , DrawIndirectCommand(..)                                  , DrawIndexedIndirectCommand(..)                                  , DispatchIndirectCommand(..)@@ -12,6 +13,7 @@                                  , VendorId(..)                                  ) where +import Vulkan.CStruct.Utils (FixedArray) import Data.Typeable (eqT) import Foreign.Marshal.Alloc (allocaBytes) import GHC.Ptr (castPtr)@@ -34,8 +36,12 @@ import Data.Int (Int32) import Foreign.Ptr (Ptr) import Data.Word (Word32)+import Data.Word (Word8)+import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))+import Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)+import Vulkan.CStruct.Utils (pokeFixedLengthByteString) import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags) import Vulkan.Core10.Handles (Buffer) import Vulkan.CStruct.Extends (Chain)@@ -48,10 +54,12 @@ import Vulkan.Core10.ImageView (ImageSubresourceRange) import Vulkan.CStruct.Extends (PeekChain) import Vulkan.CStruct.Extends (PeekChain(..))+import Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion) import Vulkan.CStruct.Extends (PokeChain) import Vulkan.CStruct.Extends (PokeChain(..)) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT) import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Core10.APIConstants (UUID_SIZE) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)) import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER))@@ -813,6 +821,111 @@            zero            zero            zero+++-- | VkPipelineCacheHeaderVersionOne - Structure describing the layout of the+-- pipeline cache header+--+-- = Description+--+-- Unlike most structures declared by the Vulkan API, all fields of this+-- structure are written with the least significant byte first, regardless+-- of host byte-order.+--+-- The C language specification does not define the packing of structure+-- members. This layout assumes tight structure member packing, with+-- members laid out in the order listed in the structure, and the intended+-- size of the structure is 32 bytes. If a compiler produces code that+-- diverges from that pattern, applications /must/ employ another method to+-- set values at the correct offsets.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'+data PipelineCacheHeaderVersionOne = PipelineCacheHeaderVersionOne+  { -- | @headerSize@ is the length in bytes of the pipeline cache header.+    --+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967# @headerSize@+    -- /must/ be 32+    headerSize :: Word32+  , -- | @headerVersion@ is a+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'+    -- enum value specifying the version of the header. A consumer of the+    -- pipeline cache /should/ use the cache version to interpret the remainder+    -- of the cache header.+    --+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968#+    -- @headerVersion@ /must/ be+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_ONE'+    --+    -- #VUID-VkPipelineCacheHeaderVersionOne-headerVersion-parameter#+    -- @headerVersion@ /must/ be a valid+    -- 'Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'+    -- value+    headerVersion :: PipelineCacheHeaderVersion+  , -- | @vendorID@ is the+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@vendorID@+    -- of the implementation.+    vendorID :: Word32+  , -- | @deviceID@ is the+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@deviceID@+    -- of the implementation.+    deviceID :: Word32+  , -- | @pipelineCacheUUID@ is the+    -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@+    -- of the implementation.+    pipelineCacheUUID :: ByteString+  }+  deriving (Typeable)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PipelineCacheHeaderVersionOne)+#endif+deriving instance Show PipelineCacheHeaderVersionOne++instance ToCStruct PipelineCacheHeaderVersionOne where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineCacheHeaderVersionOne{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (headerSize)+    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (headerVersion)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)+    f+  cStructSize = 32+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)+    f++instance FromCStruct PipelineCacheHeaderVersionOne where+  peekCStruct p = do+    headerSize <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    headerVersion <- peek @PipelineCacheHeaderVersion ((p `plusPtr` 4 :: Ptr PipelineCacheHeaderVersion))+    vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8)))+    pure $ PipelineCacheHeaderVersionOne+             headerSize headerVersion vendorID deviceID pipelineCacheUUID++instance Storable PipelineCacheHeaderVersionOne where+  sizeOf ~_ = 32+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCacheHeaderVersionOne where+  zero = PipelineCacheHeaderVersionOne+           zero+           zero+           zero+           zero+           mempty   -- | VkDrawIndirectCommand - Structure specifying a indirect drawing command
src/Vulkan/Core10/OtherTypes.hs-boot view
@@ -6,6 +6,7 @@                                  , DrawIndirectCommand                                  , ImageMemoryBarrier                                  , MemoryBarrier+                                 , PipelineCacheHeaderVersionOne                                  ) where  import Vulkan.CStruct (FromCStruct)@@ -62,4 +63,12 @@ instance Show MemoryBarrier  instance FromCStruct MemoryBarrier+++data PipelineCacheHeaderVersionOne++instance ToCStruct PipelineCacheHeaderVersionOne+instance Show PipelineCacheHeaderVersionOne++instance FromCStruct PipelineCacheHeaderVersionOne 
src/Vulkan/Core10/SparseResourceMemoryManagement.hs view
@@ -570,7 +570,8 @@ -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2', -- 'getImageSparseMemoryRequirements' data SparseImageMemoryRequirements = SparseImageMemoryRequirements-  { -- No documentation found for Nested "VkSparseImageMemoryRequirements" "formatProperties"+  { -- | @formatProperties@ is a 'SparseImageFormatProperties' structure+    -- specifying properties of the image format.     formatProperties :: SparseImageFormatProperties   , -- | @imageMipTailFirstLod@ is the first mip level at which image     -- subresources are included in the mip tail region.
src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs view
@@ -8,6 +8,7 @@                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT+                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT                                                                                                , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@@ -66,6 +67,8 @@ -- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA'              | No restriction                                                                                             | No restriction                                                                                             | -- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV'                 | No restriction                                                                                             | No restriction                                                                                             |+-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- -- External memory handle types compatibility --@@ -98,6 +101,7 @@ -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR', -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.ImportMemoryZirconHandleInfoFUCHSIA', -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Vulkan.Extensions.VK_NV_external_memory_rdma.MemoryGetRemoteAddressInfoNV', -- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR', -- 'Vulkan.Extensions.VK_FUCHSIA_external_memory.MemoryGetZirconHandleInfoFUCHSIA', -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',@@ -153,6 +157,10 @@ -- 12 committed resource. It owns a reference to the memory used by the -- Direct3D resource. pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                  = ExternalMemoryHandleTypeFlagBits 0x00000040+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV' is a handle to an+-- allocation accessible by remote devices. It owns a reference to the+-- underlying memory resource represented by its Vulkan memory object.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV                 = ExternalMemoryHandleTypeFlagBits 0x00001000 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA' is a Zircon handle -- to a virtual memory object. pattern EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA              = ExternalMemoryHandleTypeFlagBits 0x00000800@@ -194,6 +202,7 @@   , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT              , "D3D11_TEXTURE_KMT_BIT")   , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                     , "D3D12_HEAP_BIT")   , (EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                 , "D3D12_RESOURCE_BIT")+  , (EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV                , "RDMA_ADDRESS_BIT_NV")   , (EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA             , "ZIRCON_VMO_BIT_FUCHSIA")   , (EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT , "HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT")   , (EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT            , "HOST_ALLOCATION_BIT_EXT")
src/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -127,6 +127,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT) import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (PhysicalDeviceExternalMemoryRDMAFeaturesNV) import Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures) import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_density_map2 (PhysicalDeviceFragmentDensityMap2FeaturesEXT)@@ -692,6 +693,7 @@     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceSynchronization2FeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f+    | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryRDMAFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = Just f
src/Vulkan/Dynamic.hs view
@@ -224,6 +224,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (MemoryGetRemoteAddressInfoNV) import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR) import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_memory (MemoryGetZirconHandleInfoFUCHSIA) import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)@@ -299,6 +300,7 @@ import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV) import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (Rect2D) import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_external_memory_rdma (RemoteAddressNV) import {-# SOURCE #-} Vulkan.Core10.Handles (RenderPass) import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo) import {-# SOURCE #-} Vulkan.Core10.Pass (RenderPassCreateInfo)@@ -823,6 +825,7 @@   , pVkGetMemoryFdPropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result)   , pVkGetMemoryZirconHandleFUCHSIA :: FunPtr (Ptr Device_T -> ("pGetZirconHandleInfo" ::: Ptr MemoryGetZirconHandleInfoFUCHSIA) -> ("pZirconHandle" ::: Ptr Zx_handle_t) -> IO Result)   , pVkGetMemoryZirconHandlePropertiesFUCHSIA :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("zirconHandle" ::: Zx_handle_t) -> ("pMemoryZirconHandleProperties" ::: Ptr MemoryZirconHandlePropertiesFUCHSIA) -> IO Result)+  , pVkGetMemoryRemoteAddressNV :: FunPtr (Ptr Device_T -> ("getMemoryRemoteAddressInfo" ::: Ptr MemoryGetRemoteAddressInfoNV) -> ("pAddress" ::: Ptr RemoteAddressNV) -> IO Result)   , pVkGetSemaphoreWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr SemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)   , pVkImportSemaphoreWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr ImportSemaphoreWin32HandleInfoKHR) -> IO Result)   , pVkGetSemaphoreFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr SemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)@@ -1061,7 +1064,7 @@     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr-    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr  foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)@@ -1234,6 +1237,7 @@   vkGetMemoryFdPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdPropertiesKHR"#)   vkGetMemoryZirconHandleFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetMemoryZirconHandleFUCHSIA"#)   vkGetMemoryZirconHandlePropertiesFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetMemoryZirconHandlePropertiesFUCHSIA"#)+  vkGetMemoryRemoteAddressNV <- getDeviceProcAddr' handle (Ptr "vkGetMemoryRemoteAddressNV"#)   vkGetSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreWin32HandleKHR"#)   vkImportSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreWin32HandleKHR"#)   vkGetSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreFdKHR"#)@@ -1577,6 +1581,7 @@     (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result) vkGetMemoryFdPropertiesKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pGetZirconHandleInfo" ::: Ptr MemoryGetZirconHandleInfoFUCHSIA) -> ("pZirconHandle" ::: Ptr Zx_handle_t) -> IO Result) vkGetMemoryZirconHandleFUCHSIA)     (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("zirconHandle" ::: Zx_handle_t) -> ("pMemoryZirconHandleProperties" ::: Ptr MemoryZirconHandlePropertiesFUCHSIA) -> IO Result) vkGetMemoryZirconHandlePropertiesFUCHSIA)+    (castFunPtr @_ @(Ptr Device_T -> ("getMemoryRemoteAddressInfo" ::: Ptr MemoryGetRemoteAddressInfoNV) -> ("pAddress" ::: Ptr RemoteAddressNV) -> IO Result) vkGetMemoryRemoteAddressNV)     (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr SemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetSemaphoreWin32HandleKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr ImportSemaphoreWin32HandleInfoKHR) -> IO Result) vkImportSemaphoreWin32HandleKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr SemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetSemaphoreFdKHR)
src/Vulkan/Extensions.hs view
@@ -216,6 +216,7 @@                           , module Vulkan.Extensions.VK_NV_device_generated_commands                           , module Vulkan.Extensions.VK_NV_external_memory                           , module Vulkan.Extensions.VK_NV_external_memory_capabilities+                          , module Vulkan.Extensions.VK_NV_external_memory_rdma                           , module Vulkan.Extensions.VK_NV_external_memory_win32                           , module Vulkan.Extensions.VK_NV_fill_rectangle                           , module Vulkan.Extensions.VK_NV_fragment_coverage_to_color@@ -461,6 +462,7 @@ import Vulkan.Extensions.VK_NV_device_generated_commands import Vulkan.Extensions.VK_NV_external_memory import Vulkan.Extensions.VK_NV_external_memory_capabilities+import Vulkan.Extensions.VK_NV_external_memory_rdma import Vulkan.Extensions.VK_NV_external_memory_win32 import Vulkan.Extensions.VK_NV_fill_rectangle import Vulkan.Extensions.VK_NV_fragment_coverage_to_color
src/Vulkan/Extensions/Dependencies.hs view
@@ -164,6 +164,7 @@ import Vulkan.Extensions.VK_NV_device_generated_commands (pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_external_memory_capabilities (pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_external_memory (pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME)+import Vulkan.Extensions.VK_NV_external_memory_rdma (pattern NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_external_memory_win32 (pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_fragment_shader_barycentric (pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME) import Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (pattern NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME)@@ -521,6 +522,11 @@   FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME ->     [ KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME     , KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME+    , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+    ]+  NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME ->+    [ KHR_EXTERNAL_MEMORY_EXTENSION_NAME+    , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME     , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME     ]   EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME -> [KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME]
+ src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs view
@@ -0,0 +1,449 @@+{-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory_rdma - device extension+--+-- == VK_NV_external_memory_rdma+--+-- [__Name String__]+--     @VK_NV_external_memory_rdma@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     372+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   Carsten Rohde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory_rdma:%20&body=@crohde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-04-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- This extension adds support for allocating memory which can be used for+-- remote direct memory access (RDMA) from other devices.+--+-- == New Base Types+--+-- -   'RemoteAddressNV'+--+-- == New Commands+--+-- -   'getMemoryRemoteAddressNV'+--+-- == New Structures+--+-- -   'MemoryGetRemoteAddressInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceExternalMemoryRDMAFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits':+--+--     -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV'+--+-- == Examples+--+-- > VkPhysicalDeviceMemoryBudgetPropertiesEXT memoryBudgetProperties = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT };+-- > VkPhysicalDeviceMemoryProperties2 memoryProperties2 = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, &memoryBudgetProperties };+-- > vkGetPhysicalDeviceMemoryProperties2(physicalDevice, &memoryProperties2);+-- > uint32_t heapIndex = (uint32_t)-1;+-- > for (uint32_t memoryType = 0; memoryType < memoryProperties2.memoryProperties.memoryTypeCount; memoryType++) {+-- >     if (memoryProperties2.memoryProperties.memoryTypes[memoryType].propertyFlags & VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV) {+-- >         heapIndex = memoryProperties2.memoryProperties.memoryTypes[memoryType].heapIndex;+-- >         break;+-- >     }+-- > }+-- > if ((heapIndex == (uint32_t)-1) ||+-- >     (memoryBudgetProperties.heapBudget[heapIndex] < size)) {+-- >     return;+-- > }+-- >+-- > VkPhysicalDeviceExternalBufferInfo externalBufferInfo = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO };+-- > externalBufferInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;+-- > externalBufferInfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > VkExternalBufferProperties externalBufferProperties = { VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES };+-- > vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, &externalBufferInfo, &externalBufferProperties);+-- >+-- > if (!(externalBufferProperties.externalMemoryProperties.externalMemoryFeatures & VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT)) {+-- >     return;+-- > }+-- >+-- > VkExternalMemoryBufferCreateInfo externalMemoryBufferCreateInfo = { VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO };+-- > externalMemoryBufferCreateInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > VkBufferCreateInfo bufferCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, &externalMemoryBufferCreateInfo };+-- > bufferCreateInfo.size = size;+-- > bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;+-- >+-- > VkMemoryRequirements mem_reqs;+-- > vkCreateBuffer(device, &bufferCreateInfo, NULL, &buffer);+-- > vkGetBufferMemoryRequirements(device, buffer, &mem_reqs);+-- >+-- > VkExportMemoryAllocateInfo exportMemoryAllocateInfo = { VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO };+-- > exportMemoryAllocateInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > // Find memory type index+-- > uint32_t i = 0;+-- > for (; i < VK_MAX_MEMORY_TYPES; i++) {+-- >     if ((mem_reqs.memoryTypeBits & (1 << i)) &&+-- >         (memoryProperties.memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV)) {+-- >         break;+-- >     }+-- > }+-- >+-- > VkMemoryAllocateInfo memAllocInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, &exportMemoryAllocateInfo };+-- > memAllocInfo.allocationSize = mem_reqs.size;+-- > memAllocInfo.memoryTypeIndex = i;+-- >+-- > vkAllocateMemory(device, &memAllocInfo, NULL, &mem);+-- > vkBindBufferMemory(device, buffer, mem, 0);+-- >+-- > VkMemoryGetRemoteAddressInfoNV getMemoryRemoteAddressInfo = { VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV };+-- > getMemoryRemoteAddressInfo.memory = mem;+-- > getMemoryRemoteAddressInfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > VkRemoteAddressNV rdmaAddress;+-- > vkGetMemoryRemoteAddressNV(device, &getMemoryRemoteAddressInfo, &rdmaAddress);+-- > // address returned in 'rdmaAddress' can be used by external devices to initiate RDMA transfers+--+-- == Version History+--+-- -   Revision 1, 2020-12-15 (Carsten Rohde)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'MemoryGetRemoteAddressInfoNV',+-- 'PhysicalDeviceExternalMemoryRDMAFeaturesNV', 'RemoteAddressNV',+-- 'getMemoryRemoteAddressNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_NV_external_memory_rdma  ( getMemoryRemoteAddressNV+                                                     , PhysicalDeviceExternalMemoryRDMAFeaturesNV(..)+                                                     , MemoryGetRemoteAddressInfoNV(..)+                                                     , NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION+                                                     , pattern NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION+                                                     , NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME+                                                     , pattern NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME+                                                     , RemoteAddressNV+                                                     ) where++import Vulkan.Internal.Utils (traceAroundEvent)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Foreign.Marshal.Alloc (allocaBytes)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (FromCStruct(..))+import Vulkan.CStruct (ToCStruct)+import Vulkan.CStruct (ToCStruct(..))+import Vulkan.Zero (Zero(..))+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.Generics (Generic)+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Vulkan.Core10.FundamentalTypes (bool32ToBool)+import Vulkan.Core10.FundamentalTypes (boolToBool32)+import Vulkan.NamedType ((:::))+import Vulkan.Core10.FundamentalTypes (Bool32)+import Vulkan.Core10.Handles (Device)+import Vulkan.Core10.Handles (Device(..))+import Vulkan.Dynamic (DeviceCmds(pVkGetMemoryRemoteAddressNV))+import Vulkan.Core10.Handles (DeviceMemory)+import Vulkan.Core10.Handles (Device_T)+import Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import Vulkan.Core10.Enums.Result (Result)+import Vulkan.Core10.Enums.Result (Result(..))+import Vulkan.Core10.Enums.StructureType (StructureType)+import Vulkan.Exception (VulkanException(..))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV))+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV))+import Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetMemoryRemoteAddressNV+  :: FunPtr (Ptr Device_T -> Ptr MemoryGetRemoteAddressInfoNV -> Ptr RemoteAddressNV -> IO Result) -> Ptr Device_T -> Ptr MemoryGetRemoteAddressInfoNV -> Ptr RemoteAddressNV -> IO Result++-- | vkGetMemoryRemoteAddressNV - Get an address for a memory object+-- accessible by remote devices+--+-- = Description+--+-- More communication may be required between the kernel-mode drivers of+-- the devices involved. This information is out of scope of this+-- documentation and should be requested from the vendors of the devices.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.Device', 'MemoryGetRemoteAddressInfoNV',+-- 'RemoteAddressNV'+getMemoryRemoteAddressNV :: forall io+                          . (MonadIO io)+                         => -- | @device@ is the logical device that created the device memory being+                            -- exported.+                            --+                            -- #VUID-vkGetMemoryRemoteAddressNV-device-parameter# @device@ /must/ be a+                            -- valid 'Vulkan.Core10.Handles.Device' handle+                            Device+                         -> -- | #VUID-vkGetMemoryRemoteAddressNV-getMemoryRemoteAddressInfo-parameter#+                            -- @getMemoryRemoteAddressInfo@ /must/ be a valid pointer to a valid+                            -- 'MemoryGetRemoteAddressInfoNV' structure+                            ("getMemoryRemoteAddressInfo" ::: MemoryGetRemoteAddressInfoNV)+                         -> io (RemoteAddressNV)+getMemoryRemoteAddressNV device getMemoryRemoteAddressInfo = liftIO . evalContT $ do+  let vkGetMemoryRemoteAddressNVPtr = pVkGetMemoryRemoteAddressNV (deviceCmds (device :: Device))+  lift $ unless (vkGetMemoryRemoteAddressNVPtr /= nullFunPtr) $+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetMemoryRemoteAddressNV is null" Nothing Nothing+  let vkGetMemoryRemoteAddressNV' = mkVkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNVPtr+  getMemoryRemoteAddressInfo' <- ContT $ withCStruct (getMemoryRemoteAddressInfo)+  pPAddress <- ContT $ bracket (callocBytes @RemoteAddressNV 8) free+  r <- lift $ traceAroundEvent "vkGetMemoryRemoteAddressNV" (vkGetMemoryRemoteAddressNV' (deviceHandle (device)) getMemoryRemoteAddressInfo' (pPAddress))+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pAddress <- lift $ peek @RemoteAddressNV pPAddress+  pure $ (pAddress)+++-- | VkPhysicalDeviceExternalMemoryRDMAFeaturesNV - Structure describing the+-- external memory RDMA features supported by the implementation+--+-- = Members+--+-- This structure describes the following feature:+--+-- = Description+--+-- If the 'PhysicalDeviceExternalMemoryRDMAFeaturesNV' structure is+-- included in the @pNext@ chain of the+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'+-- structure passed to+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',+-- it is filled in to indicate whether each corresponding feature is+-- supported. 'PhysicalDeviceExternalMemoryRDMAFeaturesNV' /can/ also be+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to+-- selectively enable these features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.FundamentalTypes.Bool32',+-- 'Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceExternalMemoryRDMAFeaturesNV = PhysicalDeviceExternalMemoryRDMAFeaturesNV+  { -- | #features-externalMemoryRDMA# @externalMemoryRDMA@ indicates whether the+    -- implementation has support for the+    -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV'+    -- memory property and the+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV'+    -- external memory handle type.+    externalMemoryRDMA :: Bool }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (PhysicalDeviceExternalMemoryRDMAFeaturesNV)+#endif+deriving instance Show PhysicalDeviceExternalMemoryRDMAFeaturesNV++instance ToCStruct PhysicalDeviceExternalMemoryRDMAFeaturesNV where+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceExternalMemoryRDMAFeaturesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (externalMemoryRDMA))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceExternalMemoryRDMAFeaturesNV where+  peekCStruct p = do+    externalMemoryRDMA <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceExternalMemoryRDMAFeaturesNV+             (bool32ToBool externalMemoryRDMA)++instance Storable PhysicalDeviceExternalMemoryRDMAFeaturesNV where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceExternalMemoryRDMAFeaturesNV where+  zero = PhysicalDeviceExternalMemoryRDMAFeaturesNV+           zero+++-- | VkMemoryGetRemoteAddressInfoNV - Structure describing a remote+-- accessible address export operation+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Vulkan.Core10.Handles.DeviceMemory',+-- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryRemoteAddressNV'+data MemoryGetRemoteAddressInfoNV = MemoryGetRemoteAddressInfoNV+  { -- | @memory@ is the memory object from which the remote accessible address+    -- will be exported.+    --+    -- #VUID-VkMemoryGetRemoteAddressInfoNV-memory-parameter# @memory@ /must/+    -- be a valid 'Vulkan.Core10.Handles.DeviceMemory' handle+    memory :: DeviceMemory+  , -- | @handleType@ is the type of handle requested.+    --+    -- #VUID-VkMemoryGetRemoteAddressInfoNV-handleType-04966# @handleType@+    -- /must/ have been included in+    -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+    -- when @memory@ was created+    --+    -- #VUID-VkMemoryGetRemoteAddressInfoNV-handleType-parameter# @handleType@+    -- /must/ be a valid+    -- 'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+    -- value+    handleType :: ExternalMemoryHandleTypeFlagBits+  }+  deriving (Typeable, Eq)+#if defined(GENERIC_INSTANCES)+deriving instance Generic (MemoryGetRemoteAddressInfoNV)+#endif+deriving instance Show MemoryGetRemoteAddressInfoNV++instance ToCStruct MemoryGetRemoteAddressInfoNV where+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p MemoryGetRemoteAddressInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)+    poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)+    poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)+    f++instance FromCStruct MemoryGetRemoteAddressInfoNV where+  peekCStruct p = do+    memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+    handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))+    pure $ MemoryGetRemoteAddressInfoNV+             memory handleType++instance Storable MemoryGetRemoteAddressInfoNV where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryGetRemoteAddressInfoNV where+  zero = MemoryGetRemoteAddressInfoNV+           zero+           zero+++type NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION"+pattern NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION :: forall a . Integral a => a+pattern NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION = 1+++type NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME = "VK_NV_external_memory_rdma"++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME"+pattern NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME = "VK_NV_external_memory_rdma"+++-- No documentation found for TopLevel "VkRemoteAddressNV"+type RemoteAddressNV = Ptr ()+
+ src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs-boot view
@@ -0,0 +1,201 @@+{-# language CPP #-}+-- | = Name+--+-- VK_NV_external_memory_rdma - device extension+--+-- == VK_NV_external_memory_rdma+--+-- [__Name String__]+--     @VK_NV_external_memory_rdma@+--+-- [__Extension Type__]+--     Device extension+--+-- [__Registered Extension Number__]+--     372+--+-- [__Revision__]+--     1+--+-- [__Extension and Version Dependencies__]+--+--     -   Requires Vulkan 1.0+--+--     -   Requires @VK_KHR_external_memory@+--+-- [__Contact__]+--+--     -   Carsten Rohde+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?title=VK_NV_external_memory_rdma:%20&body=@crohde%20 >+--+-- == Other Extension Metadata+--+-- [__Last Modified Date__]+--     2021-04-19+--+-- [__IP Status__]+--     No known IP claims.+--+-- [__Contributors__]+--+--     -   Carsten Rohde, NVIDIA+--+-- == Description+--+-- This extension adds support for allocating memory which can be used for+-- remote direct memory access (RDMA) from other devices.+--+-- == New Base Types+--+-- -   'RemoteAddressNV'+--+-- == New Commands+--+-- -   'getMemoryRemoteAddressNV'+--+-- == New Structures+--+-- -   'MemoryGetRemoteAddressInfoNV'+--+-- -   Extending+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+--     'Vulkan.Core10.Device.DeviceCreateInfo':+--+--     -   'PhysicalDeviceExternalMemoryRDMAFeaturesNV'+--+-- == New Enum Constants+--+-- -   'NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME'+--+-- -   'NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION'+--+-- -   Extending+--     'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits':+--+--     -   'Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV'+--+-- -   Extending+--     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits':+--+--     -   'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV'+--+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV'+--+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV'+--+-- == Examples+--+-- > VkPhysicalDeviceMemoryBudgetPropertiesEXT memoryBudgetProperties = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT };+-- > VkPhysicalDeviceMemoryProperties2 memoryProperties2 = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, &memoryBudgetProperties };+-- > vkGetPhysicalDeviceMemoryProperties2(physicalDevice, &memoryProperties2);+-- > uint32_t heapIndex = (uint32_t)-1;+-- > for (uint32_t memoryType = 0; memoryType < memoryProperties2.memoryProperties.memoryTypeCount; memoryType++) {+-- >     if (memoryProperties2.memoryProperties.memoryTypes[memoryType].propertyFlags & VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV) {+-- >         heapIndex = memoryProperties2.memoryProperties.memoryTypes[memoryType].heapIndex;+-- >         break;+-- >     }+-- > }+-- > if ((heapIndex == (uint32_t)-1) ||+-- >     (memoryBudgetProperties.heapBudget[heapIndex] < size)) {+-- >     return;+-- > }+-- >+-- > VkPhysicalDeviceExternalBufferInfo externalBufferInfo = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO };+-- > externalBufferInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;+-- > externalBufferInfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > VkExternalBufferProperties externalBufferProperties = { VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES };+-- > vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, &externalBufferInfo, &externalBufferProperties);+-- >+-- > if (!(externalBufferProperties.externalMemoryProperties.externalMemoryFeatures & VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT)) {+-- >     return;+-- > }+-- >+-- > VkExternalMemoryBufferCreateInfo externalMemoryBufferCreateInfo = { VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO };+-- > externalMemoryBufferCreateInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > VkBufferCreateInfo bufferCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, &externalMemoryBufferCreateInfo };+-- > bufferCreateInfo.size = size;+-- > bufferCreateInfo.usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;+-- >+-- > VkMemoryRequirements mem_reqs;+-- > vkCreateBuffer(device, &bufferCreateInfo, NULL, &buffer);+-- > vkGetBufferMemoryRequirements(device, buffer, &mem_reqs);+-- >+-- > VkExportMemoryAllocateInfo exportMemoryAllocateInfo = { VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO };+-- > exportMemoryAllocateInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > // Find memory type index+-- > uint32_t i = 0;+-- > for (; i < VK_MAX_MEMORY_TYPES; i++) {+-- >     if ((mem_reqs.memoryTypeBits & (1 << i)) &&+-- >         (memoryProperties.memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV)) {+-- >         break;+-- >     }+-- > }+-- >+-- > VkMemoryAllocateInfo memAllocInfo = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, &exportMemoryAllocateInfo };+-- > memAllocInfo.allocationSize = mem_reqs.size;+-- > memAllocInfo.memoryTypeIndex = i;+-- >+-- > vkAllocateMemory(device, &memAllocInfo, NULL, &mem);+-- > vkBindBufferMemory(device, buffer, mem, 0);+-- >+-- > VkMemoryGetRemoteAddressInfoNV getMemoryRemoteAddressInfo = { VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV };+-- > getMemoryRemoteAddressInfo.memory = mem;+-- > getMemoryRemoteAddressInfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV;+-- >+-- > VkRemoteAddressNV rdmaAddress;+-- > vkGetMemoryRemoteAddressNV(device, &getMemoryRemoteAddressInfo, &rdmaAddress);+-- > // address returned in 'rdmaAddress' can be used by external devices to initiate RDMA transfers+--+-- == Version History+--+-- -   Revision 1, 2020-12-15 (Carsten Rohde)+--+--     -   Internal revisions+--+-- = See Also+--+-- 'MemoryGetRemoteAddressInfoNV',+-- 'PhysicalDeviceExternalMemoryRDMAFeaturesNV', 'RemoteAddressNV',+-- 'getMemoryRemoteAddressNV'+--+-- = Document Notes+--+-- For more information, see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>+--+-- This page is a generated document. Fixes and changes should be made to+-- the generator scripts, not directly.+module Vulkan.Extensions.VK_NV_external_memory_rdma  ( MemoryGetRemoteAddressInfoNV+                                                     , PhysicalDeviceExternalMemoryRDMAFeaturesNV+                                                     , RemoteAddressNV+                                                     ) where++import Vulkan.CStruct (FromCStruct)+import Vulkan.CStruct (ToCStruct)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)++data MemoryGetRemoteAddressInfoNV++instance ToCStruct MemoryGetRemoteAddressInfoNV+instance Show MemoryGetRemoteAddressInfoNV++instance FromCStruct MemoryGetRemoteAddressInfoNV+++data PhysicalDeviceExternalMemoryRDMAFeaturesNV++instance ToCStruct PhysicalDeviceExternalMemoryRDMAFeaturesNV+instance Show PhysicalDeviceExternalMemoryRDMAFeaturesNV++instance FromCStruct PhysicalDeviceExternalMemoryRDMAFeaturesNV+++-- No documentation found for TopLevel "VkRemoteAddressNV"+type RemoteAddressNV = Ptr ()+
src/Vulkan/SPIRVRequirements.hs view
@@ -665,32 +665,36 @@   "DerivativeControl" ->     (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]   "Geometry" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "geometryShader"                            , checkFeature  = geometryShader :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { geometryShader = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "Tessellation" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "tessellationShader"                            , checkFeature  = tessellationShader :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { tessellationShader = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "Float64" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderFloat64"                            , checkFeature  = shaderFloat64 :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderFloat64 = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "Int64" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderInt64"                            , checkFeature  = shaderInt64 :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderInt64 = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "Int64Atomics" -> (,)     [ RequireInstanceVersion $ MAKE_API_VERSION 1 2 0@@ -759,161 +763,182 @@                              }     ]   "Int16" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderInt16"                            , checkFeature  = shaderInt16 :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderInt16 = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "TessellationPointSize" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderTessellationAndGeometryPointSize"-        , checkFeature  = shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderTessellationAndGeometryPointSize = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderTessellationAndGeometryPointSize"+      , checkFeature  = shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderTessellationAndGeometryPointSize = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "GeometryPointSize" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderTessellationAndGeometryPointSize"-        , checkFeature  = shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderTessellationAndGeometryPointSize = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderTessellationAndGeometryPointSize"+      , checkFeature  = shaderTessellationAndGeometryPointSize :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderTessellationAndGeometryPointSize = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "ImageGatherExtended" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderImageGatherExtended"                            , checkFeature  = shaderImageGatherExtended :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderImageGatherExtended = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "StorageImageMultisample" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderStorageImageMultisample"                            , checkFeature  = shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderStorageImageMultisample = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "UniformBufferArrayDynamicIndexing" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderUniformBufferArrayDynamicIndexing"-        , checkFeature  = shaderUniformBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderUniformBufferArrayDynamicIndexing = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderUniformBufferArrayDynamicIndexing"+      , checkFeature  = shaderUniformBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderUniformBufferArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "SampledImageArrayDynamicIndexing" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderSampledImageArrayDynamicIndexing"-        , checkFeature  = shaderSampledImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderSampledImageArrayDynamicIndexing = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderSampledImageArrayDynamicIndexing"+      , checkFeature  = shaderSampledImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderSampledImageArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "StorageBufferArrayDynamicIndexing" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderStorageBufferArrayDynamicIndexing"-        , checkFeature  = shaderStorageBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderStorageBufferArrayDynamicIndexing = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderStorageBufferArrayDynamicIndexing"+      , checkFeature  = shaderStorageBufferArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderStorageBufferArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "StorageImageArrayDynamicIndexing" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderStorageImageArrayDynamicIndexing"-        , checkFeature  = shaderStorageImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderStorageImageArrayDynamicIndexing = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderStorageImageArrayDynamicIndexing"+      , checkFeature  = shaderStorageImageArrayDynamicIndexing :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderStorageImageArrayDynamicIndexing = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "ClipDistance" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderClipDistance"                            , checkFeature  = shaderClipDistance :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderClipDistance = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "CullDistance" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderCullDistance"                            , checkFeature  = shaderCullDistance :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderCullDistance = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "ImageCubeArray" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "imageCubeArray"                            , checkFeature  = imageCubeArray :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { imageCubeArray = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "SampleRateShading" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "sampleRateShading"                            , checkFeature  = sampleRateShading :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { sampleRateShading = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "SparseResidency" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderResourceResidency"                            , checkFeature  = shaderResourceResidency :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderResourceResidency = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "MinLod" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderResourceMinLod"                            , checkFeature  = shaderResourceMinLod :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderResourceMinLod = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "SampledCubeArray" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "imageCubeArray"                            , checkFeature  = imageCubeArray :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { imageCubeArray = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "ImageMSArray" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "shaderStorageImageMultisample"                            , checkFeature  = shaderStorageImageMultisample :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { shaderStorageImageMultisample = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "StorageImageExtendedFormats" ->     (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 0 0]   "InterpolationFunction" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "sampleRateShading"                            , checkFeature  = sampleRateShading :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { sampleRateShading = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "StorageImageReadWithoutFormat" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderStorageImageReadWithoutFormat"-        , checkFeature  = shaderStorageImageReadWithoutFormat :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderStorageImageReadWithoutFormat = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderStorageImageReadWithoutFormat"+      , checkFeature  = shaderStorageImageReadWithoutFormat :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderStorageImageReadWithoutFormat = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "StorageImageWriteWithoutFormat" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature-        { featureName   = "shaderStorageImageWriteWithoutFormat"-        , checkFeature  = shaderStorageImageWriteWithoutFormat :: PhysicalDeviceFeatures -> Bool-        , enableFeature = \f -> f { shaderStorageImageWriteWithoutFormat = True } :: PhysicalDeviceFeatures-        }+      { featureName   = "shaderStorageImageWriteWithoutFormat"+      , checkFeature  = shaderStorageImageWriteWithoutFormat :: PhysicalDeviceFeatures -> Bool+      , enableFeature = \f -> f { shaderStorageImageWriteWithoutFormat = True } :: PhysicalDeviceFeatures+      }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "MultiViewport" -> (,)-    []+    [RequireInstanceVersion $ MAKE_API_VERSION 1 0 0]     [ RequireDeviceFeature { featureName   = "multiViewport"                            , checkFeature  = multiViewport :: PhysicalDeviceFeatures -> Bool                            , enableFeature = \f -> f { multiViewport = True } :: PhysicalDeviceFeatures                            }+    , RequireDeviceVersion $ MAKE_API_VERSION 1 0 0     ]   "DrawParameters" -> (,)     [RequireInstanceVersion $ MAKE_API_VERSION 1 2 0]
src/Vulkan/Version.hs view
@@ -19,11 +19,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 183+pattern HEADER_VERSION = 184   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 183+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 184   pattern MAKE_API_VERSION :: Word32 -> Word32 -> Word32 -> Word32
vulkan.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           vulkan-version:        3.11.1+version:        3.11.2 synopsis:       Bindings to the Vulkan graphics API. description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme) category:       Graphics@@ -465,6 +465,7 @@       Vulkan.Extensions.VK_NV_device_generated_commands       Vulkan.Extensions.VK_NV_external_memory       Vulkan.Extensions.VK_NV_external_memory_capabilities+      Vulkan.Extensions.VK_NV_external_memory_rdma       Vulkan.Extensions.VK_NV_external_memory_win32       Vulkan.Extensions.VK_NV_fill_rectangle       Vulkan.Extensions.VK_NV_fragment_coverage_to_color